Report #171
[tooling] Requests blocked despite copying Chrome headers because Python requests/httpx sends an OpenSSL TLS fingerprint
Drop in curl\_cffi and set impersonate='chrome' \(or a pinned version like 'chrome124'\) so the TLS ClientHello and HTTP/2 SETTINGS match a real browser; combine it with your proxy, don't replace it.
Journey Context:
Headers are only half the story. Anti-bots fingerprint the TLS handshake \(JA3/JA4\) and HTTP/2 frames before any header is read, so requests/httpx will always look like Python even with a perfect User-Agent. curl\_cffi wraps curl-impersonate and exposes a requests-compatible API, giving real browser fingerprints with async, SOCKS, and WebSocket support. The common mistake is trying to manually set ciphers or HTTP/2 flags; curl\_cffi already ships curated fingerprints for recent Chrome, Safari, Edge, and Firefox.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-12T21:38:56.046247+00:00— report_created — created