You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The newest Chrome TLS profile is chrome142, on both 0.13.0 and the current 0.14.3, and chrome.rs on master tops out at chrome_142. Chrome stable is currently 151.
The interesting part is that the wire-level gap is much smaller than that version distance suggests — I measured it rather than assuming, and it comes down to three signature algorithms.
Measurement
Real Chrome 150 (Playwright channel: "chrome", so a genuine Chrome binary, not bundled Chromium) and impit chrome142, both against https://tls.peet.ws/api/all:
real Chrome has 0904,0905,0906 at the head; impit has neither
0x0904 / 0x0905 / 0x0906 are mldsa44 / mldsa65 / mldsa87 from draft-ietf-tls-mldsa. Chrome now advertises ML-DSA in signature_algorithms; no impit profile does.
Because JA4_c hashes the sorted extension list plus the signature-algorithm list, those three codepoints are the entire reason chrome142 produces a different JA4 from current Chrome. Ciphers and extensions already match exactly.
Given the delta is this narrow, would a PR be welcome for either of:
adding mldsa44/65/87 to the existing chrome142 signature-algorithm list, or
a new chrome15x profile captured from a current Chrome?
Happy to do the capture work and open the PR if you'd point me at how you'd prefer profiles to be sourced and verified — I did not want to guess at your methodology and submit a profile that matches no real browser.
Environment
impit 0.13.0 (also verified 0.14.3)
Node 22, Windows x64
Reference browser: Google Chrome 150 (stable channel; Chrome stable is 151 at time of writing)
The newest Chrome TLS profile is
chrome142, on both0.13.0and the current0.14.3, andchrome.rsonmastertops out atchrome_142. Chrome stable is currently 151.The interesting part is that the wire-level gap is much smaller than that version distance suggests — I measured it rather than assuming, and it comes down to three signature algorithms.
Measurement
Real Chrome 150 (Playwright
channel: "chrome", so a genuine Chrome binary, not bundled Chromium) and impitchrome142, both againsthttps://tls.peet.ws/api/all:Real Chrome 150
impit
chrome142(0.13.0;0.14.3produces the same ja4)Component by component:
chrome142vs real Chrome 15044cdALPS,fe0dECH)0904,0905,0906at the head; impit has neither0x0904/0x0905/0x0906aremldsa44/mldsa65/mldsa87from draft-ietf-tls-mldsa. Chrome now advertises ML-DSA insignature_algorithms; no impit profile does.Because JA4_c hashes the sorted extension list plus the signature-algorithm list, those three codepoints are the entire reason
chrome142produces a different JA4 from current Chrome. Ciphers and extensions already match exactly.Reproduction
Compare against a real Chrome by navigating the same browser build to
https://tls.peet.ws/api/all.Questions
chrome.rs?mldsa44/65/87to the existingchrome142signature-algorithm list, orchrome15xprofile captured from a current Chrome?Happy to do the capture work and open the PR if you'd point me at how you'd prefer profiles to be sourced and verified — I did not want to guess at your methodology and submit a profile that matches no real browser.
Environment
0.13.0(also verified0.14.3)tls.peet.ws/api/all