t13i311000_e8f1e7e78f70_d41ae481755e
Python aiohttp — inferred from the User-Agent on its requests.
What this fingerprint encodes
t13i311000
handshake shape, human-readable
e8f1e7e78f70
truncated hash of the cipher list
d41ae481755e
truncated hash of extensions + signature algorithms
- Transport
- TCP
- TLS version
- TLS 1.3
- Server name
- no server name (IP literal)
- Cipher suites offered
- 31
- Extensions offered
- 10
- ALPN
- none offered
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.
- t13i181000_85036bcba153_d41ae481755e
- t13i461000_0cb0c5806038_d41ae481755e
- t13i751000_479067518aa3_d41ae481755e
- t13i781000_ab95583b6d39_d41ae481755e
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 31
-
TLS_AES_256_GCM_SHA384 -
TLS_CHACHA20_POLY1305_SHA256 -
TLS_AES_128_GCM_SHA256 -
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 -
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 -
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 -
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 -
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 -
TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 -
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 -
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 -
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 -
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 -
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 -
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 -
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 -
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 -
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 -
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA -
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA -
TLS_DHE_RSA_WITH_AES_256_CBC_SHA -
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA -
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA -
TLS_DHE_RSA_WITH_AES_128_CBC_SHA -
TLS_RSA_WITH_AES_256_GCM_SHA384 -
TLS_RSA_WITH_AES_128_GCM_SHA256 -
TLS_RSA_WITH_AES_256_CBC_SHA256 -
TLS_RSA_WITH_AES_128_CBC_SHA256 -
TLS_RSA_WITH_AES_256_CBC_SHA -
TLS_RSA_WITH_AES_128_CBC_SHA -
TLS_EMPTY_RENEGOTIATION_INFO_SCSV
Extensions 10
-
ec_point_formats -
supported_groups -
session_ticket -
encrypt_then_mac -
extended_master_secret -
signature_algorithms -
supported_versions -
psk_key_exchange_modes -
key_share -
padding
Named groups 10
-
x25519 -
secp256r1 -
x448 -
secp521r1 -
secp384r1 -
ffdhe2048 -
ffdhe3072 -
ffdhe4096 -
259 (0x0103) -
260 (0x0104)
Point formats 3
-
uncompressed -
ansiX962_compressed_prime -
ansiX962_compressed_char2
Raw JA3 string
771,4866-4867-4865-49196-49200-159-52393-52392-52394-49195-49199-158-49188-49192-107-49187-49191-103-49162-49172-57-49161-49171-51-157-156-61-60-53-47-255,11-10-35-22-23-13-43-45-51-21,29-23-30-25-24-256-257-258-259-260,0-1-2
Seen in live traffic
- Connections
- 323
- First seen
- 2026-08-23 08:00 UTC
- Last seen
- 2026-10-10 10:25 UTC
- Transport
- TCP
- JA3 hashes absorbed
- 2
The same client, 2 different JA3s
This one JA4 covers 2 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 2 unrelated clients. JA4 sorts those lists before hashing, which is why all of it lands here instead.
c12b4ccd5320bbb380ca1a9df90f771d004556e859f3c26c5d19746b3a957c74
User-Agents seen on this fingerprint
Mozilla/5.0157×ExposureScanner/1.0 (internal-security-audit)15×Mozilla/5.0 (compatible; FlowIQLabsBot/1.0; +https://flowiq-labs.com/scanning-info)7×Python/3.8 aiohttp/3.10.111×Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.361×
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.