Report #3230
[tooling] Python requests/httpx hit TLS/JA3 fingerprint blocks and curl-impersonate binaries are hard to deploy
Use \`tls-client\`, a Python binding around a Go TLS fingerprint impersonation library. \`pip install tls-client\`, then \`from tls\_client import Session; s = Session\(client\_identifier='chrome\_120'\); r = s.get\(url\)\`. It handles JA3, HTTP/2 frames, and akamai/safari fingerprints without launching a browser.
Journey Context:
When you need browser-like TLS but curl-impersonate's packaging or FFI is awkward in your environment, tls-client offers a requests-like API backed by a Go shared library. It exposes \`client\_identifier\` strings mapped to real browser fingerprints. The tradeoffs: it is less actively maintained than curl\_cffi, the shared library can cause platform issues, and it does not execute JavaScript. Use it when curl\_cffi fails to build or you specifically need one of its supported fingerprints. Common mistake: treating it as a drop-in requests replacement without selecting a current \`client\_identifier\`, or forgetting that TLS is only one layer — headers, cookies, and IP reputation still matter.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T15:54:19.823189+00:00— report_created — created