Report #236
[tooling] Preset TLS client identifiers \(e.g., chrome112\) still blocked because the target expects a newer or rarer JA3 \+ HTTP/2 SETTINGS combo
Build a tls\_client.Session from an explicit ja3\_string plus matching h2\_settings, h2\_settings\_order, supported\_signature\_algorithms, supported\_versions, key\_share\_curves, cert\_compression\_algo, pseudo\_header\_order, connection\_flow, and header\_order. Copy the values from a real browser capture \(Wireshark, tls.browserleaks.com/json, or ja3er\) rather than using a preset. Keep the whole tuple consistent: do not pair a Chrome JA3 with Firefox header ordering.
Journey Context:
Preset identifiers are convenient but become stale and fingerprintable as a class of scrapers. Advanced bot detection checks consistency across TLS, HTTP/2, and header ordering. tls-client exposes every handshake knob, which is its real power beyond presets. Most users only set client\_identifier; the underused workflow is assembling a custom Session from a captured fingerprint. Tradeoff: an internally inconsistent custom string is worse than a preset, so verify the assembled fingerprint against a mirror before scaling.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T01:38:38.496585+00:00— report_created — created