Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Spoof HTTP/2 SETTINGS frames, pseudo-header ordering, and browser-specific HTTP headers to match real browsers at the protocol level. Targets the detection gap between TLS fingerprinting (ClientHello) and JavaScript fingerprinting — the HTTP/2 connection setup and header structure that anti-bot systems analyze. Matches Chrome, Firefox, Safari iOS, and OkHttp (Android) profiles with exact window sizes, header list limits, and header ordering.
When to Use
TLS fingerprint is correct but target still detects non-browser HTTP behavior.
Detection: Some reverse proxies inspect pseudo-header order to distinguish browsers. Firefox places :path before :authority — a unique fingerprint. Safari places :scheme second — another differentiator.
Phase 5 — Header Prioritization
Custom headers take priority over fingerprint defaults to avoid conflicts:
impit = Impit.builder().with_fingerprint("chrome142").build()
# Custom headers WIN over fingerprint defaults for same header name
response = impit.get("https://target.com", headers={
"Authorization": "Bearer custom-token",
"X-Custom-Header": "value",
})
# Authorization is added; all fingerprint headers still applied for unset names
Detection: Some CDNs return different content based on Accept-Encoding (brotli vs zstd capability profiling). Match encoding capabilities to your target browser.
Pitfalls
curl cannot spoof HTTP/2 SETTINGS frames. Only use curl-based headers for HTTP/1.1 targets or when TLS fingerprinting is the primary concern, not HTTP/2.
Header order matters in HTTP/2. Some detectors check the order of header fields, not just their presence.
sec-ch-ua must match User-Agent. Using Chrome headers with Firefox UA creates an inconsistency that detectors flag.
sec-ch-ua format is version-specific. Chrome 100+ uses different brand strings than Chrome 124+.
Mobile headers without TLS matching is detectable. Using Safari iOS headers over a desktop TLS fingerprint is flagged.
Custom headers are deduplicated case-insensitively. Adding User-Agent as custom overrides the fingerprint's User-Agent.
Verification
Test against https://httpbin.org/headers — verify all sent headers match the intended browser profile.
For HTTP/2 SETTINGS verification, use https://nghttp2.org/httpbin/headers or a local nghttp2 server.
Compare response size/content between browser-impostor and real browser — identical responses indicate the headers are accepted.
Check Cloudflare cf-ja4 header — it encodes HTTP/2 fingerprint along with TLS.
Related Skills
tls-fingerprint-impersonation — TLS ClientHello and JA3/JA4 fingerprint spoofing.
stealth-browser-launch — Full browser automation with C++ fingerprint patches.