Gratis tool
Plak een JA4 of JA4_r en lees wat de client in zijn TLS-handshake aanbood.
t13d1516h2_8daaf6152771_e5627efa2ab1
Draait in je browser. Niets wat je plakt wordt verstuurd.
Formaat
Leesbaar: protocol, versie, SNI, aantal cipher suites, aantal extensions, eerste ALPN-waarde.
Cipher suites, gesorteerd, daarna SHA-256 ingekort tot 12 tekens.
Extensions, gesorteerd, zonder SNI en ALPN, daarna de handtekeningalgoritmen in volgorde, op dezelfde manier gehasht.
JA3 vs JA4
| Kenmerk | JA3 | JA4 |
|---|---|---|
| Hash | Eén MD5 over alle velden | Leesbaar voorvoegsel plus twee korte SHA-256-hashes |
| Volgorde van extensions | Gehasht zoals verstuurd, dus de geschudde volgorde van Chrome geeft per verbinding een nieuwe JA3 | Eerst gesorteerd, dus de volgorde maakt niet uit |
| Leesbaar zonder opzoeken | Nee | Protocol, versie, SNI, tellingen, ALPN |
| QUIC | Geen kenmerk | Begint met q |
| Licentie | BSD 3-Clause | BSD 3-Clause (alleen JA4) |
Waar het vandaan komt
Alleen wie TLS afhandelt ziet de ClientHello. Script in de pagina nooit.
Bot Management zet hem in cf.bot_management.ja4 voor regels en in request.cf.botManagement.ja4 in Workers.
Regels kunnen matchen op de JA4-fingerprint, en de WAF-logs leggen hem vast.
Alles wat TLS afhandelt kan hem berekenen en doorgeven in een header zoals X-JA4.
De plugin van FoxIO voegt JA4-kolommen toe aan packet captures.
Agentscan
Stuur de JA4 mee met elke Agentscan-check. Hij wordt opgeslagen bij het oordeel, het adres en het netwerk, zodat de log laat zien welke TLS-client achter elk request zat.
curl -X POST https://ipscanner.io/v1/agentscan/check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ip": "203.0.113.7",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
"ja4": "t13d1516h2_8daaf6152771_e5627efa2ab1"
}'FAQ
Een korte string die een TLS-ClientHello beschrijft: het protocol en de versie die de client aanbood, of hij een servernaam stuurde, hoeveel cipher suites en extensions hij noemde en zijn eerste ALPN-waarde, gevolgd door twee hashes van die lijsten. FoxIO publiceerde hem in 2023 als opvolger van JA3.
TLS over TCP, versie 1.3, een domeinnaam in SNI, 15 cipher suites, 16 extensions en HTTP/2 als eerste ALPN-waarde. Elke JA4 begint met zo'n deel, en het is het enige deel dat je zonder opzoeken kunt lezen.
JA3 is één MD5 over de handshakevelden in de volgorde waarin ze verstuurd zijn. Chrome schudt sinds 2023 de volgorde van zijn extensions, waardoor dezelfde browser bij elke verbinding een nieuwe JA3 krijgt. JA4 sorteert de lijsten eerst, blijft daardoor gelijk en houdt een leesbaar voorvoegsel.
Ja. Tools als curl-impersonate en uTLS kopiëren de ClientHello van een browser, dus een browser-JA4 bewijst op zichzelf geen browser. Hij is het nuttigst als hij iets anders tegenspreekt, zoals een Chrome-user-agent met een Python-handshake.
Nee. Deel b en c zijn SHA-256-hashes, ingekort tot 12 tekens. Wil je de cipher suites en extensions erachter zien, log dan de JA4_r, die de lijsten leesbaar bewaart.
Bij wat TLS afhandelt: je CDN, load balancer of reverse proxy. JavaScript in de pagina kan hem niet lezen, want de handshake is voorbij voordat een script draait.
JA4, de TLS-clientfingerprint, valt onder BSD 3-Clause. De andere JA4+-methoden (JA4S, JA4H, JA4X, JA4T en de rest) vallen onder de FoxIO License 1.1, die voorwaarden stelt aan commercieel gebruik. Lees die dus voordat je ze in een product inbouwt.