Report #444
[tooling] Requests blocked by TLS / JA3 fingerprinting even with correct headers and proxy
Use curl-impersonate and its wrapper scripts \(e.g., curl\_chrome116, curl\_edge101\) or the tls-client Python package. They reproduce the real browser TLS handshake, ALPN, HTTP/2 settings, and headers. Avoid passing extra curl flags that alter the TLS signature, and impersonate a browser version that matches your user-agent.
Journey Context:
Bot mitigation often fingerprints the TLS Client Hello \(JA3/JA4\), ALPN list, and HTTP/2 frames, not just headers. A standard requests/httpx client uses OpenSSL or Python's TLS stack with a different signature, so it gets blocked despite rotating IPs. curl-impersonate was built to compile curl with the same signatures as Chrome/Firefox/Safari; changing random headers can break the carefully matched signature.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T07:56:43.574539+00:00— report_created — created