Report #2064
[tooling] Cloudflare blocks Python requests/httpx while a real browser works on the same IP
Use curl-impersonate \(or its Python binding curl\_cffi\) to send requests that replicate Chrome/Safari/Edge's exact TLS handshake \(JA3\), HTTP/2 SETTINGS, and header order, without running a headless browser.
Journey Context:
Most anti-bot blocks are not IP/JS checks but TLS fingerprint mismatches: Python's openssl has a different JA3 hash than real Chrome. Headless browsers fix TLS but are heavy, slow, and detectable via navigator.webdriver. curl-impersonate hardcodes real browser fingerprints at the wire level, so you get browser-grade trust with script-grade speed. Plain User-Agent rotation does nothing for TLS.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T09:53:34.181104+00:00— report_created — created