t12d1510h2_8daaf6152771_4a065df55c19
Firefox — inferred from the User-Agent on its requests.
What this fingerprint encodes
t12d1510h2
handshake shape, human-readable
8daaf6152771
truncated hash of the cipher list
4a065df55c19
truncated hash of extensions + signature algorithms
- Transport
- TCP
- TLS version
- TLS 1.2
- Server name
- server name sent
- Cipher suites offered
- 15
- Extensions offered
- 10
- ALPN
- h2
Same tool, different options
These 4 other fingerprints share this one's JA4_c — the extension and signature-algorithm hash. A client that keeps its extension set constant while varying its cipher list produces exactly this pattern, which is what a scanner iterating cipher suites looks like. A JA3 cannot show you this: its single MD5 collapses ciphers and extensions together, so every variation looks like an unrelated client.
- t12d1610h2_46e7e9700bed_4a065df55c19
- t12d1610h2_86a278354501_4a065df55c19
- t12d1710h2_5b57614c22b0_4a065df55c19
- t12d1810h2_e8a523a41297_4a065df55c19
The hello it was computed from
Recovered because the proxy now stores the pre-hash JA3 string alongside the digest. Every number below came out of this client's ClientHello; anything we cannot name in the IANA registry is shown as its raw value rather than guessed at.
- Version
- TLS 1.2
Cipher suites 15
-
TLS_AES_128_GCM_SHA256 -
TLS_CHACHA20_POLY1305_SHA256 -
TLS_AES_256_GCM_SHA384 -
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 -
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 -
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 -
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 -
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 -
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 -
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA -
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA -
TLS_RSA_WITH_AES_128_GCM_SHA256 -
TLS_RSA_WITH_AES_256_GCM_SHA384 -
TLS_RSA_WITH_AES_128_CBC_SHA -
TLS_RSA_WITH_AES_256_CBC_SHA
Extensions 10
-
server_name -
extended_master_secret -
renegotiation_info -
supported_groups -
ec_point_formats -
application_layer_protocol_negotiation -
status_request -
34 (0x0022) -
signed_certificate_timestamp -
key_share
Named groups 7
-
SecP256r1MLKEM768 -
x25519 -
secp256r1 -
secp384r1 -
secp521r1 -
ffdhe2048 -
ffdhe3072
Point formats 1
-
uncompressed
Raw JA3 string
771,4865-4867-4866-49195-49199-52393-52392-49196-49200-49171-49172-156-157-47-53,0-23-65281-10-11-16-5-34-18-51,4588-29-23-24-25-256-257,0
Seen in live traffic
- Connections
- 620
- First seen
- 2026-08-23 20:22 UTC
- Last seen
- 2026-10-06 18:17 UTC
- Transport
- TCP
- JA3 hashes absorbed
- 4
The same client, 4 different JA3s
This one JA4 covers 4 distinct JA3 hashes. A JA3 hashes the cipher and extension lists in the order they arrived, so a client that shuffles them — which Chrome and its derivatives do on purpose — produces a new JA3 almost every connection and fragments into what looks like 4 unrelated clients. JA4 sorts those lists before hashing, which is why all of it lands here instead.
0b0b8d5f87b0a48ba36914bcef2ea47e3f18d0aaf5dfc64f9be3aa1d568a91894f1e1af5ffb803ceceae1d62ae8fa94efbd433fde8893fc8c32fe9c7bf9b1204
User-Agents seen on this fingerprint
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:154.0) Gecko/20100101 Firefox/154.0892×Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:154.0) Gecko/20100101 Firefox/154.0180×Mozilla/5.0 (X11; Linux x86_64; rv:154.0) Gecko/20100101 Firefox/154.0127×Mozilla/5.0 (X11; Linux x86_64; rv:156.0) Gecko/20100101 Firefox/156.094×Mozilla/5.0 (Android 16; Mobile; rv:157.0) Gecko/157.0 Firefox/157.043×Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.015×Mozilla/5.0 (Android 16; Mobile; rv:156.0) Gecko/156.0 Firefox/156.09×Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:156.0) Gecko/20100101 Firefox/156.03×
A User-Agent is self-declared and trivially forged, so this names an observation rather than proving an identity. It is still the strongest signal available: the fingerprint comes off the TLS handshake and the User-Agent off the request that followed, and one client build keeping a stable JA4 while changing what it calls itself is a finding in its own right.
This entry is an observation, not a policy decision. It is here because the edge saw it, not because anyone reviewed it, and it blocks nothing on its own. Only the curated tier drives classification and banning.