known client
Go net/http
Go 1.14–1.20 — pure-Go TLS 1.3; cipher list 9dc949149365 is stable across the whole 1.13–1.23 range, only ja4_c moves
Matches Go net/http in the ground-truth catalogue.
- JA4
- JA4_r
- JA3
- several builds share this JA4 under different JA3s — no single value is canonical.
- JA3_raw
- —
Read
Spread measures reach, not intent: it can’t tell one scraper visiting 500 domains from 500 people visiting one each. Stability is a claim about software — whether the stack is deterministic — nothing about who runs it.
Footprint
ClientHello anatomy
The underscore groups of JA4_r are the raw cipher suites · extensions · signature algorithms behind the hash.
The post-quantum key share is a structural fact about the hello, not a verdict — GREASE values are flagged the same neutral way.
- 00xc02bTLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- 10xc02fTLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- 20xc02cTLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- 30xc030TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- 40xcca9TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
- 50xcca8TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
- 60xc009TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
- 70xc013TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- 80xc00aTLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
- 90xc014TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
- 100x009cTLS_RSA_WITH_AES_128_GCM_SHA256
- 110x009dTLS_RSA_WITH_AES_256_GCM_SHA384
- 120x002fTLS_RSA_WITH_AES_128_CBC_SHA
- 130x0035TLS_RSA_WITH_AES_256_CBC_SHA
- 140xc012unknown (0xc012)
- 150x000aunknown (0x000a)
- 160x1301TLS_AES_128_GCM_SHA256
- 170x1302TLS_AES_256_GCM_SHA384
- 180x1303TLS_CHACHA20_POLY1305_SHA256
- 00x0000server_name (SNI)
- 10x0005status_request (OCSP)
- 20x000asupported_groups
- 30x000bec_point_formats
- 40x000dsignature_algorithms
- 50x0010application_layer_protocol_negotiation (ALPN)
- 60x0012signed_certificate_timestamp
- 70x002bsupported_versions
- 80x0033key_share
- 90xff01renegotiation_info
Stored sorted — under one JA4 the wire order varies by construction, so no single order is “the” order.
- 00x001dx25519
- 10x0017secp256r1 (P-256)
- 20x0018secp384r1 (P-384)
- 30x0019secp521r1 (P-521)
- 00x0804rsa_pss_rsae_sha256
- 10x0403ecdsa_secp256r1_sha256
- 20x0807ed25519
- 30x0805rsa_pss_rsae_sha384
- 40x0806rsa_pss_rsae_sha512
- 50x0401rsa_pkcs1_sha256
- 60x0501rsa_pkcs1_sha384
- 70x0601rsa_pkcs1_sha512
- 80x0503ecdsa_secp384r1_sha384
- 90x0603ecdsa_secp521r1_sha512
- 100x0201rsa_pkcs1_sha1
- 110x0203ecdsa_sha1
JA3 variants
2 distinct JA3 hashes collapse into this one JA4.
| # | JA3 | JA3_raw | obs | share |
|---|---|---|---|---|
| 0 | 771,49195-49199-49196-…23-24-25,0 | 491 | 100% | |
| 1 | 771,52393-52392-49195-…23-24-25,0 | 1 | 0.2% |
JA3 hashes preserve wire order, so a permuting client mints a new one per connection; JA4 sorts the same set, which is why they share one JA4. Every hash here belongs to this fingerprint — there is no per-JA3 page.
Reach — domains contacted
- 58%
- 41%
- 0.4%
- 0.2%
- 0.2%
Top 5 of 5. Share is the fraction of this fingerprint’s observations reaching each name.