Improve Chrome and HTTP/2 parity handling#418
Improve Chrome and HTTP/2 parity handling#418minanagehsalalma wants to merge 1 commit intoDanny-Dasilva:mainfrom
Conversation
What this patch fixes in practiceThe public fingerprint endpoints below return Before this patch, several browser-parity requests succeeded as HTTP requests but failed as spoofed browser requests: the server observed the wrong TLS generation, the wrong HTTP/2 SETTINGS, or Chrome and Firefox collapsing into the same TLS fingerprint. Failure modes fixed
Repro dataTested against:
Compared builds:
Focused test run on this PR branch: Exact observed values
In short: this patch makes CycleTLS better at doing what its API already promises: if a caller requests Chrome/Firefox-like TLS + HTTP/2 behavior, the observed wire fingerprint now matches that request much more closely instead of silently falling back to generic/default behavior. |
Summary
This PR improves browser parity for Chrome-like requests by tightening the TLS, HTTP/2, and header-order paths.
Changes included:
ClientHelloSpecfor Chrome user agentsHTTP2Settings, including connection flow and initial header priorityuser-agentplacement for fhttp header-order handlingContext
This came out of parity testing where matching only JA3 and surface headers was not enough. The missing pieces were lower-level Chrome ClientHello behavior, HTTP/2 connection behavior, and strict header order preservation.
Notes
This PR intentionally does not include fork branding, screenshots, or the case-study docs from
CycleTLS-Parity; it only contains the upstreamable transport changes.Testing
git diff --cached --checkpassed locally before commitgois not available on PATH here