A JA3 és JA4 olyan módszerek, amelyekkel a TLS-kézfogás (ClientHello) alapján egyedi ujjlenyomatot képezhetünk a kapcsolódó kliensről. Segítségével azonosítható, hogy milyen szoftver, csomag és verzió küldött egy HTTPS-kérést — még akkor is, ha a HTTP-fejlécek álcázva vannak.
A JA3 az első generációs TLS-fingerprintelési módszer, amelyet 2017-ben a Salesforce fejlesztett ki.
Példa:
769,4865-4866-4867-49195-49199,...,0-11-10-35-16-22-23-13-43-45-51-21,,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-21
→ JA3: 24a93e438d5018ee7f8390e2ecf68ea7
A JA4 a JA3 továbbfejlesztése, szintén a Salesforce-tól (2023).
tls13_aes_256_gcm_sha384)t13d1516h2_8daaf6152771_e5627efa2ab5), nem hash-t, ami lehetővé teszi a részleges egyezést isJA4: t13d1516h2_8daaf6152771_e5627efa2ab5
││││││││ │ │ │
││││││││ │ │ └─ ServerHello fingerprint
││││││││ └──────────┴─ ClientHello fingerprint (első 12 pár)
│││││││└─ SNI: h2 (HTTP/2)
││││││└─ Alkalmazás: d (DNS over HTTPS használata: nem)
│││││└─ Második: 16 kiterjesztés
││││└─ Harmadik: 15 titkosító
│││└─ Negyedik: 16 pontformátum
││└─ Ötödik: t13 (TLS 1.3)
│└─ Hatodik: tls (TLS)
└─ Első: t (TCP)
A TLS-fingerprintelés az egyik leghatékonyabb botvédelmi eszköz a HTTP-szintű ellenőrzések mellett. Ha egy szkript HTTP-headereket másol (User-Agent, Accept, stb.), de a TLS-ujjlenyomata eltér egy valódi böngészőétől, a szerver azonnal kiszűrheti.
Ezért használják a curl_cffi csomagot is: a BoringSSL-impersonációval a TLS-ujjlenyomat megegyezik a célböngészőével, és a szerver nem tud különbséget tenni a kérés és egy valódi böngésző között.