Qu'est-ce qu'une empreinte digitale JA3 / JA4 ?

A Empreinte digitale JA3 / JA4 Il s'agit d'un hachage court dérivé d'une poignée de main client TLS qui permet d'identifier la bibliothèque TLS, le navigateur ou le bot à l'origine d'une connexion, sans s'appuyer sur l'adresse IP. Le JA3 a été introduit par Salesforce en 2017 à l’aide de l’algorithme MD5 ; le JA4 est son successeur moderne, développé par FoxIO, qui utilise l’algorithme SHA-256 et trie les champs de saisie afin de résister aux tentatives de contournement. Les systèmes de protection contre les bots, les plateformes de lutte contre la fraude et les systèmes de contrôle d’accès utilisent ces hachages pour signaler les clients suspects au niveau du protocole.

Fonctionnement des empreintes digitales JA3 et JA4

JA3 concatène cinq champs du message TLS ClientHello : la version TLS, les suites de chiffrement, les extensions, les courbes elliptiques et les formats de points EC, puis calcule leur hachage MD5 pour obtenir une chaîne de 32 caractères (Fingerprint.com - Identification par empreinte digitale TLS, 2024). Chaque client qui envoie la même combinaison, quelle que soit son adresse IP, génère le même hachage. Cette cohérence permet aux systèmes de sécurité de regrouper le trafic par type de client plutôt que par origine.

JA4 remédie à une faiblesse majeure de JA3 : l'ordre des extensions. Les clients pouvaient modifier l'ordre des extensions TLS afin de générer un hachage JA3 différent tout en présentant des capacités identiques. JA4 trie les suites de chiffrement et les extensions avant le hachage, éliminant ainsi cette faille. Le résultat est une chaîne composée de trois parties (par exemple, t13d1516h2_8daaf6152771_b186095e22b6), composé d'un préfixe lisible par l'utilisateur suivi de deux hachages SHA-256 tronqués de 12 caractères (Spécifications du FoxIO-LLC JA4, 2025). JA4 supprime également les valeurs GREASE, que les navigateurs insèrent à des fins de test de compatibilité et qui, sans cela, ajouteraient du bruit.

La suite FoxIO JA4+ étend ce concept au-delà du protocole TLS. JA4H couvre les en-têtes des requêtes HTTP, JA4S couvre la réponse TLS côté serveur, et JA4L mesure les schémas de latence réseau. La combinaison de ces sous-empreintes améliore considérablement la précision de la détection.

Cas d'usage

Les systèmes de lutte contre les bots utilisent les hachages JA3/JA4 pour identifier les bibliothèques de scraping (telles que celles de Python, requests, httpx, ou des versions « headless » de Chromium), même lorsque ces clients changent d'adresse IP ou falsifient les chaînes « user-agent ». Une adresse IP résidentielle associée à une pile TLS Python produit toujours une empreinte identifiable comme n'étant pas celle d'un navigateur.

Les plateformes de contrôle d'accès combinent les couches JA3/JA4 avec d'autres signaux (agent utilisateur, ordre des trames HTTP/2, hachage du canvas) afin d'établir un profil composite de l'appareil. Une divergence entre le navigateur déclaré et l'empreinte TLS constitue un signal d'anomalie fort qui mérite d'être examiné.

Les chercheurs en sécurité et les équipes « red team » utilisent ces empreintes à l'envers : ils déterminent quelle bibliothèque TLS un serveur cible attend, puis configurent leur client pour qu'il s'y adapte. Des outils tels que curl-impersonate et le utls La bibliothèque modifie la pile TLS afin de générer une poignée de main compatible avec Chrome.

Lorsque vous accédez à des sites à grande échelle via des proxys résidentiels, l'empreinte JA4 d'un client doit tout de même correspondre à celle d'un véritable navigateur, sans quoi l'avantage lié à la réputation de l'adresse IP disparaît. La pratique courante consiste à associer de véritables adresses IP résidentielles (telles que celles du réseau Massive) à un protocole TLS conforme à celui d'un navigateur.

Foire aux questions

Une empreinte JA3 est un hachage MD5 de 32 caractères issu de cinq champs « ClientHello » du protocole TLS (version TLS, suites de chiffrement, extensions, courbes elliptiques, formats de points EC), introduite par Salesforce en 2017 (Fingerprint.com - Identification par empreinte digitale TLS, 2024). Cela permet aux outils de sécurité réseau d'identifier la bibliothèque TLS d'un client sans avoir recours à l'adresse IP.

JA4 trie les champs avant le hachage, ce qui va à l'encontre de la randomisation par ordre d'extension, et utilise SHA-256 à la place de MD5. Le résultat est un format lisible par l'homme a_b_c une chaîne de caractères plutôt qu'un hachage hexadécimal opaque (Spécifications du FoxIO-LLC JA4, 2025). JA4 ignore également les valeurs GREASE, ce qui rend les empreintes plus stables malgré les mises à jour des navigateurs.

Oui. Des bibliothèques telles que curl-impersonate et utls modifier la pile TLS afin de reproduire à l'identique le message « ClientHello » d'un navigateur cible. Les systèmes de défense contre les bots contrent cette technique en combinant JA4 avec des signaux supplémentaires, tels que l'ordre des trames HTTP/2, les schémas temporels et les empreintes « canvas », afin de créer un profil composite plus difficile à falsifier.

La rotation des adresses IP ne modifie pas l'empreinte TLS du client HTTP sous-jacent. Un scraper fonctionnant sur une adresse IP résidentielle mais utilisant la pile TLS par défaut de Python correspondra toujours à une empreinte de bot connue. Une émulation TLS fidèle à celle d'un navigateur est nécessaire, en plus de la rotation des adresses IP, pour éviter toute détection.