Skip to content

429 from oneshot-free: pinned iosAppVersion 26.42 is stale (DeepL iOS is 26.52) #236

Closed

Description

@holtwood

Every POST /translate on v1.2.4 returns 429:

{"code":429,"message":"too many requests, your IP has been blocked by DeepL temporarily, please don't request it frequently in a short time"}

It is not an IP block. The pinned client profile in translate.go is stale:

iosAppVersion = "26.42"

DeepL's iOS app is now 26.52 (bundle com.linguee.DeepLMobileTranslator, App Store update 2026-09-24). An iOS TLS fingerprint together with a version that is no longer current is an inconsistent profile, which is the condition your own comment above iosOSVersion describes as being answered with 429.

Same host, same IP, back to back:

  • v1.2.4 as published: 429 on every request
  • same binary with only 26.42 replaced by 26.52: 200, correct output

The only change was that string:

sed -i 's/26\.42/26.52/g' /app/deeplx

Reproduced both with missuo/deeplx:v1.2.4 (sha256:1e34ae3e...) and with the released deeplx_linux_amd64 binary. Sending it through an HTTP proxy, or running it from a different network, makes no difference, so it is not the egress IP either.

Two things made this harder to spot than it needed to be:

  • "your IP has been blocked" is DLX's own wording (the 429 branch in translate.go), not DeepL's. It sends you looking in the wrong place.
  • A plain curl to oneshot-free without the iOS headers and body fields returns 200, but it echoes the input back untranslated. That reads as "the free endpoint is fine" when it is not.

Could the app version be updated in a release, or made overridable? Pinned the way it is, this will break again the next time DeepL ships a version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions