Skip to content

fix(protonvpn): use legacy API for updater authentication#3274

Open
zrclshn wants to merge 1 commit intoqdm12:masterfrom
zrclshn:fix/protonvpn-legacy-api
Open

fix(protonvpn): use legacy API for updater authentication#3274
zrclshn wants to merge 1 commit intoqdm12:masterfrom
zrclshn:fix/protonvpn-legacy-api

Conversation

@zrclshn
Copy link
Copy Markdown

@zrclshn zrclshn commented Apr 6, 2026

Summary

  • Proton's account.proton.me API now requires a session/CAPTCHA flow that blocks automated access from
    server environments (POST /auth/v4/sessions returns code 8004 "Operation not allowed")
  • Switch the ProtonVPN updater to use the legacy api.protonvpn.ch endpoint which supports direct SRP
    authentication without the session dance
  • Update version.go to fetch app version tags from ProtonVPN/proton-vpn-gtk-app instead of
    ProtonMail/WebClients, as proton-account tags are no longer published there

Context

When running gluetun update -maintainer -all with ProtonVPN credentials, the updater fails at the
unauthenticated session creation step:

ERROR getting protonvpn servers: authentifying with Proton: getting unauthenticated session data:
HTTP status code not OK: Unprocessable Entity: Operation not allowed (code 8004 with details: )

This happens because Proton now enforces human verification (CAPTCHA) on the
account.proton.me/api/auth/v4/sessions endpoint for programmatic requests. The legacy api.protonvpn.ch
endpoint still accepts direct SRP auth (/auth/info + /auth) without requiring a session, so the fix
switches to that flow.

The version.go change is related: ProtonMail/WebClients no longer publishes proton-account@ tags (the
latest tags are proton-vpn-settings@), causing the app version lookup to fail. Switching to
ProtonVPN/proton-vpn-gtk-app tags and using linux-vpn@ as the app version prefix resolves this. (Note:
the protonvpn-more-servers branch already has a similar version.go fix.)

Test plan

  • Tested with valid ProtonVPN credentials — successfully authenticates and fetches 834 servers
  • Verified the legacy API returns the same LogicalServers data structure
  • Confirmed disabled servers (status 0) are still correctly skipped

Proton's account.proton.me API now requires a session/CAPTCHA flow
(POST /auth/v4/sessions returns 8004 "Operation not allowed") that
blocks automated access from server environments.

Switch the ProtonVPN updater to use the legacy api.protonvpn.ch
endpoint which supports direct SRP authentication without the
session dance.

Also update version.go to fetch app version tags from
ProtonVPN/proton-vpn-gtk-app instead of ProtonMail/WebClients,
as proton-account tags are no longer published there.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant