8000 feat: add Chrome 152 TLS fingerprint by xiaoweigege · Pull Request #2 · jawah/utls · GitHub
[go: up one dir, main page]

Skip to content

feat: add Chrome 152 TLS fingerprint - #2

Merged
Ousret merged 16 commits into
jawah:mainfrom
xiaoweigege:pr/chrome-152
Sep 10, 2026
Merged

Ousret merged 16 commits into
jawah:mainfrom
xiaoweigege:pr/chrome-152

Conversation

@xiaoweigege
Copy link
Copy Markdown
Contributor

Add a chrome:152 profile and point chrome:stable at it.

Chrome 152 is the first stable major that sends the trust_anchors extension (0xCA34, draft-ietf-tls-trust-anchor-ids) with the Chrome Root Store ID list, and prepends a per-connection GREASE value to signature_algorithms. Cipher suites, groups, and ML-DSA schemes are unchanged from chrome:150. The extra extension changes JA4 from t13d1516h2_… to t13d1517h2_8daaf6152771_cb7bf5808d99.

trust_anchors is a first-class Fingerprint field, applied with BoringSSL's SSL_set1_requested_trust_anchors. GREASE in signature_algorithms is applied with SSL_CTX_set_grease_sigalgs_enabled. That API is not in the BoringSSL snapshot vendored by cloudflare/boring (e2a57cfb4), so builds compile C from vendor/boringssl via BORING_BSSL_SOURCE_PATH (git submodule, currently c66572ad4).

CI checkouts now use submodules: recursive so the overlay is present on lint/test/wheel jobs. PyPI publish is gated to jawah/utls so forks cannot collide on the utls package name; upstream publish behavior is unchanged.

The ClientHello was captured from a live Chrome 152 tab against tls.peet.ws.

Chrome 152 sends trust_anchors (0xCA
8000
34) and GREASE in
signature_algorithms. Compile BoringSSL from vendor/boringssl so
SSL_CTX_set_grease_sigalgs_enabled is available. CI fetches the
submodule and, on tags, uploads wheels to GitHub Releases. Forks skip
PyPI because the utls name is taken by upstream.
Un-overindent the trust_anchors doc list so clippy -D all passes.
Ruff-format chrome_152.py. Bump version so tag CI can build wheels.
Keep jawah/utls as the project homepage and PyPI install path so this
branch can be reviewed against origin/main without fork branding.
main and pull requests keep lint and tests. Packaging, GitHub Release,
and PyPI already ran only on tags; stop rebuilding every platform
twice when a release push also tags the same commit.
@Ousret
Ousret self-requested a review September 8, 2026 06:35
@Ousret
Ousret merged commit c71c428 into jawah:main Sep 10, 2026
53 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0