Report #214
[tooling] Requests blocked by TLS/HTTP2 fingerprinting despite correct headers
Use curl-impersonate and a browser wrapper like curl\_chrome120; it compiles curl against BoringSSL/NSS and pins the exact Client Hello, ALPS, and HTTP/2 settings of a real browser.
Journey Context:
Stock curl, wget, and Python requests all use OpenSSL fingerprints that are trivially distinguishable from Chrome. Rotating User-Agent and headers does not change the TLS handshake. curl-impersonate is the cleanest drop-in because it handles both TLS and HTTP/2 fingerprints and ships prebuilt binaries. The tradeoff is a larger binary and you must avoid flags that alter the TLS signature; for pure Python, use curl\_cffi or tls-client instead.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T00:41:12.489733+00:00— report_created — created