Skip to content

install.python-poetry.org returns 403 (Cloudflare error 1010) to Python's urllib since the move to Cloudflare Pages #192

Closed as not planned

Description

@GreatTyrion

Since the hosting move to Cloudflare Pages on 2026-11-08 (#189), https://install.python-poetry.org answers 403 Forbidden with body error code: 1010 when the request uses Python's default urllib User-Agent (Python-urllib/3.x). Other clients still get 200.

This breaks the python -c 'from urllib.request import urlopen; print(urlopen("https://install.python-poetry.org").read().decode())' | python - pattern that many Dockerfiles use. The download fails and python - receives an empty script, so the build only fails later with poetry: not found (exit 127), which makes the cause hard to spot.

Reproduce (2026-11-10 15:07 UTC, Python 3.12.14):

$ python3 -c 'from urllib.request import urlopen; urlopen("https://install.python-poetry.org")'
urllib.error.HTTPError: HTTP Error 403: Forbidden

$ curl -s -o /dev/null -w '%{http_code}\n' -A 'Python-urllib/3.12' https://install.python-poetry.org
403
$ curl -s -A 'Python-urllib/3.12' https://install.python-poetry.org
error code: 1010

$ curl -s -o /dev/null -w '%{http_code}\n' https://install.python-poetry.org          # curl's default UA
200
$ curl -s -o /dev/null -w '%{http_code}\n' -A 'python-requests/2.32' https://install.python-poetry.org
200

One blocked request's cf-ray, in case it helps: a585f78a0c2e8923-YHZ.

Error 1010 is Cloudflare blocking the client's browser signature. A zone-level setting (Browser Integrity Check, or a bot/WAF rule) seems to be catching Python-urllib, probably as a side effect of the move rather than on purpose. Could it be turned off or relaxed for this host? Until then, sending any other User-Agent works around it, e.g. urlopen(Request(url, headers={"User-Agent": "curl/8"})).

Thanks for maintaining the installer!

Activity

  1. Secrus commented on Nov 10, 2026

    @Secrus
    Member

    Please use the workaround with setting your user-agent, we don't want to disable the safeguards.

  2. GreatTyrion commented on Nov 11, 2026

    @GreatTyrion
    Author

    Please use the workaround with setting your user-agent, we don't want to disable the safeguards.

    Thanks for your reply!

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