Back to blog. Article language: BN EN ES FR HI ID PT RU UR VI ZH

Empreinte TLS et JA3 : l'impact sur le web scraping

L'empreinte TLS identifie un client HTTP à partir de la structure de sa poignée de main TLS, avant même que des données applicatives ne circulent. JA3 et JA4 transforment les champs du message ClientHello en un court hachage, et les systèmes anti-bot comparent ce hachage aux signatures connues de navigateurs et de robots. Une incohérence entre le navigateur déclaré et le hachage peut faire rejeter une requête avant même que les en-têtes ne soient lus.

Légende utilisée dans chaque tableau ci-dessous : ✅ documenté par le fournisseur · ❌ non proposé ou non documenté · ⚠️ documenté avec des limites · 💡 conseil pratique. Aucune autre marque n'est utilisée sur cette page.

Qu'est-ce qu'une empreinte TLS

Une empreinte TLS est une courte signature construite à partir des champs qu'un client HTTP envoie dans son message client hello pendant la poignée de main TLS, avant même que le chiffrement ne commence. Comprendre ce qu'est JA3 commence ici : JA3 lit cinq de ces champs et les transforme en un hachage unique. Chaque client, qu'il s'agisse de Chrome, curl ou d'un script Python, liste les suites de chiffrement, les extensions et les courbes elliptiques dans son propre ordre particulier. Les serveurs lisent ces données en texte clair, puisque aucune des deux parties n'a encore convenu de clés de chiffrement.

Le client hello transporte également une extension alpn, qui indique au serveur si la connexion préfère HTTP/1.1 ou HTTP/2. Différentes bibliothèques assemblent ces champs différemment selon la pile TLS sous-jacente, OpenSSL contre BoringSSL contre NSS, par exemple. C'est la matière première dont JA3 et JA4 partent tous deux.

💡 Astuce : si deux requêtes portent la même empreinte mais des navigateurs déclarés différents, cette seule incohérence peut susciter des soupçons sans aucune manipulation d'en-têtes.

Comment JA3 et JA4 sont calculés

Une empreinte JA3 est calculée en concaténant cinq champs du ClientHello en une seule chaîne et en la hachant avec MD5, produisant une signature de 32 caractères (Scrapfly, Guide de l'empreinte TLS JA3/JA4, 2026). John Althouse, Jeff Atkinson et Josh Atkins ont publié la méthode originale chez Salesforce en 2017, et elle constitue encore aujourd'hui la colonne vertébrale de la plupart des vérifications de robots basées sur TLS. Les cinq champs alimentant ce hachage sont la version TLS, les suites de chiffrement, les extensions, les courbes elliptiques et les formats de point, joints dans un ordre fixe.

  1. Extraire la version TLS, exprimée sous forme de nombre décimal comme 771 pour TLS 1.2.
  2. Lister les suites de chiffrement exactement dans l'ordre où le client les a envoyées, séparées par des tirets.
  3. Lister les extensions TLS dans l'ordre d'envoi, séparées par des tirets, en ignorant les valeurs GREASE.
  4. Ajouter les courbes elliptiques prises en charge et les formats de point.
  5. Joindre les cinq champs avec des virgules et hacher la chaîne résultante avec MD5 pour obtenir le hachage ja3.
Diagramme montrant comment un hachage JA3 est construit à partir des champs du ClientHello

Comment un hachage JA3 est construit à partir du ClientHello

La méthode plus récente évite le problème d'ordre de l'étape 3. Au lieu d'enregistrer les extensions telles qu'elles sont envoyées, elle les trie par valeur hexadécimale, ce qui garde l'empreinte JA4 stable même après que les navigateurs ont commencé à randomiser l'ordre des extensions en 2023 (Scrapfly, 2026). Ce hachage successeur abandonne aussi MD5 au profit d'un SHA-256 tronqué et ajoute la prise en charge d'ALPN et de QUIC, des détails que JA3 n'a jamais capturés.

Critère JA3 Méthode successeur
Algorithme de hachage MD5 SHA-256 tronqué
Ordre des extensions Tel qu'envoyé Trié par valeur hexadécimale
Prise en charge QUIC/HTTP3 ❌ non proposé ✅ documenté
ALPN inclus ❌ non proposé ✅ documenté
Créé en 2017, Salesforce 2023, FoxIO

Ces différences structurelles comptent pour quiconque teste son propre client. Une empreinte calculée d'une manière ne correspondra pas à une base de données construite pour l'autre méthode.

Pourquoi les proxys seuls ne résolvent pas l'empreinte TLS

Les proxys changent l'adresse IP d'où provient une requête ; ils ne touchent pas du tout à la poignée de main TLS, de sorte que l'empreinte TLS voit toujours la bibliothèque qui a initié la connexion. La poignée de main se déroule directement entre le client et le serveur de destination, et un proxy HTTPS standard utilisant la méthode CONNECT se contente de tunneler les octets chiffrés sans y toucher (Shifter, glossaire de l'empreinte TLS, 2026). Cela signifie qu'une IP résidentielle propre associée à un client Python par défaut livre toujours une empreinte qui se lit comme un script, pas comme un navigateur.

Dans notre test, en août 2026, une session requests par défaut routée à travers trois types de proxys différents a renvoyé le même hachage à chaque fois, indépendamment de la réputation ou de la géographie de l'IP. Seul le changement de la bibliothèque TLS sous-jacente a modifié le résultat. C'est la partie honnête de la conversation : la qualité de l'IP et la correspondance de l'empreinte résolvent deux problèmes distincts, et traiter l'un comme une solution à l'autre mène rapidement à la déception.

"L'empreinte TLS se produit avant que le premier octet HTTP n'arrive. Changer d'adresse IP ne fait rien à la poignée de main en dessous." - Notes techniques d'Insocks, août 2026

  • ❌ Une IP résidentielle ne réécrit pas l'ordre des suites de chiffrement.
  • ❌ La rotation de proxys ne touche pas aux champs de la poignée de main TLS.
Diagramme comparant ce qu'un proxy change et ce qu'il laisse inchangé

Ce qu'un proxy change et ce qu'il laisse inchangé

  • ✅ Faire correspondre la pile TLS d'un vrai navigateur est ce qui change réellement l'empreinte.

Comment les systèmes anti-bot utilisent les empreintes TLS

Les systèmes anti-bot calculent un hachage à partir de chaque ClientHello entrant et le comparent à des bases de données d'empreintes connues de navigateurs et de robots, puis combinent ce signal avec d'autres couches avant de décider d'un blocage, d'un défi ou d'un passage. L'empreinte TLS se situe entièrement en dessous des en-têtes HTTP, c'est pourquoi des en-têtes parfaits accompagnés d'une pile TLS scriptée sont quand même signalés. Cloudflare documente les champs JA3 et JA4 dans son produit de gestion de robots, et d'autres fournisseurs exécutent des vérifications comparables (Scrapfly, 2026). Le score mélange les signaux TLS avec le minutage des requêtes, la réputation de l'IP et des données comportementales plutôt que de dépendre d'un seul champ.

Certains fournisseurs ajoutent l'empreinte http2 au-dessus de la vérification de la poignée de main, lisant comment un client négocie les priorités de flux et les tailles de fenêtre une fois que la couche TLS est terminée. Cette seconde couche alimente un score de détection anti-bot plus large aux côtés du hachage JA3 et JA4. Les fournisseurs maintiennent ces bases de données à jour à mesure que les versions de navigateurs sortent, et une empreinte qui passait le trimestre dernier peut commencer à échouer après qu'une mise à jour de navigateur change ses valeurs par défaut.

Signal Ce qu'il révèle Action typique
Hachage JA3 non conforme au User-Agent Le navigateur déclaré ne correspond pas à la pile TLS ⚠️ documenté avec des limites, souvent un défi
Hachage statique entre les sessions Même script réutilisé à plusieurs reprises ⚠️ documenté avec des limites, limitation de débit
Correspondance avec une base de robots connus Empreinte liée à une valeur par défaut de bibliothèque courante ❌ non proposé, fréquemment bloqué d'office
Profil cohérent type navigateur Correspond au comportement attendu d'un navigateur ✅ documenté, passe généralement

La cohérence entre les couches : TLS, HTTP/2, en-têtes et IP

La cohérence entre les couches signifie que la poignée de main TLS, la trame de paramètres http2, le User-Agent déclaré et le type de réseau de l'IP doivent tous pointer vers la même histoire, un vrai navigateur ou un vrai client, pas un patchwork de signaux incohérents. L'empreinte Http2 examine comment un client négocie les priorités de flux et les tailles de fenêtre une fois la poignée de main terminée, et c'est une seconde couche que certains fournisseurs anti-bot vérifient aux côtés des données JA3 et JA4 (Scrapfly, 2026). Un scraper qui corrige sa pile TLS mais ignore les paramètres HTTP/2 laisse encore une faille évidente.

Diagramme des quatre couches d'une requête et ce que chacune révèle

Quatre couches qu'une requête expose, et ce que chacune révèle

La cohérence du user agent compte aussi, car une chaîne User-Agent revendiquant Chrome 124 associée à un profil d'empreinte JA4 obsolète se lit comme une contradiction en soi. Les fournisseurs anti-bot signalent exactement ce type d'incohérence même lorsque chaque en-tête pris individuellement semble correct. Aucune de ces vérifications ne nécessite de contourner quoi que ce soit sur le site cible ; elles confirment simplement que les signaux d'un client s'accordent entre eux avant qu'une requête ne parte.

Couche Ce qui doit correspondre Comment vérifier
Poignée de main TLS Ordre des suites de chiffrement et des extensions pour le navigateur déclaré Comparer le hachage JA3/JA4 à un échantillon de navigateur connu
Trame de paramètres HTTP/2 Taille de fenêtre, taille de table d'en-têtes, priorité des flux Inspecter les valeurs de trame par rapport aux valeurs par défaut du navigateur
En-têtes User-Agent, Accept-Language, Sec-CH-UA si présent Revue manuelle ou un outil d'inspection d'en-têtes
IP/réseau Le type d'ASN correspond au client déclaré, résidentiel contre datacenter Vérifier la réputation de l'IP et la recherche ASN

Comment tester votre propre empreinte TLS

Tester une empreinte commence par une requête propre vers un point de terminaison de vérification, puis une comparaison côte à côte avec un vrai navigateur accédant au même point de terminaison. Une empreinte JA4 regroupe la version TLS, le nombre de suites de chiffrement, le nombre d'extensions et la première valeur ALPN dans une chaîne lisible, ce qui rend la comparaison visuelle plus facile que la lecture d'un hachage brut (Scrapfly, outil d'empreinte JA3/JA4, 2026). Exécuter le même test à deux reprises à des jours différents aide aussi à confirmer que le résultat reste stable à travers les mises à jour de bibliothèque.

Les outils conçus pour cela, y compris le propre vérificateur de Scrapfly et des bibliothèques tierces comme curl impersonate, un nom d'outil utilisé ici uniquement à titre d'identification, existent précisément pour rendre cette comparaison possible sans deviner. Un navigateur headless exécuté avec Playwright ou Puppeteer offre également une véritable poignée de main pour la comparaison, puisqu'il lance un vrai moteur de navigateur plutôt qu'une pile TLS scriptée.

  • Étape 1. Envoyer une requête depuis le client à évaluer vers un point de terminaison de test d'empreinte et enregistrer le hachage qu'il renvoie.
  • Étape 2. Ouvrir le même point de terminaison dans un vrai navigateur à jour et noter son propre hachage pour comparaison.
  • Étape 3. Comparer côte à côte les suites de chiffrement, le nombre d'extensions et la valeur ALPN plutôt que de juger uniquement par la correspondance des hachages.
  • Étape 4. Vérifier si l'en-tête User-Agent déclaré s'aligne avec le profil TLS effectivement observé.
  • Étape 5. Enregistrer le résultat avec une date, car le hachage peut changer après une mise à jour de bibliothèque ou de navigateur.

👉 Vous voulez voir comment un client correctement configuré se comporte de bout en bout ?  Essayez une démo avec Insocks avant de lancer un lot de tests complet.

Pratiques white-hat pour une collecte de données stable

La collecte de données white-hat commence par les règles du site cible lui-même : les API officielles d'abord, robots.txt respecté et des taux de requêtes maintenus bien en dessous de tout ce qui pourrait solliciter un serveur. Revenir sur ce qu'est JA3 aide à expliquer pourquoi les moteurs de navigateur complets, plutôt que des manipulations d'en-têtes, tendent à produire les résultats les plus stables, puisque la pile TLS d'un vrai navigateur correspond déjà par défaut à sa propre identité déclarée. Playwright, Puppeteer et Selenium lancent tous de véritables moteurs de navigateur, de sorte que leur poignée de main ressemble à Chrome ou Firefox sans configuration supplémentaire (Scrapfly, 2026).

Certaines équipes se tournent vers curl impersonate ou des bibliothèques similaires lorsqu'un navigateur complet est trop lourd pour la tâche, et c'est un compromis raisonnable tant que l'empreinte résultante est testée d'abord contre un vrai navigateur. Associer l'une ou l'autre approche à un minutage raisonnable et un User-Agent clair garde un processus de collecte prévisible et facile à auditer ultérieurement.

  • ✅ Utiliser les API officielles et les points de terminaison documentés partout où ils existent.
  • ✅ Respecter robots.txt et les conditions publiées du site cible.
  • ✅ Espacer les requêtes au lieu d'envoyer des rafales contre un seul point de terminaison.
  • ✅ Privilégier l'automatisation par navigateur complet au spoofing fragmentaire d'en-têtes ou de TLS.
  • 💡 Un calendrier de collecte plus lent et régulier génère généralement moins de tickets d'assistance qu'un calendrier rapide et en rafales.

En utilisant cette approche depuis les États-Unis, une équipe confirme que son processus de collecte reste conforme à la législation américaine en vigueur et aux propres conditions d'utilisation du site cible.

Erreurs courantes

Quelques erreurs de processus reviennent sans cesse lorsque les équipes vérifient leur propre configuration. Tester une seule fois et ne jamais répéter la vérification après une mise à jour de bibliothèque est la plus courante, car les résultats de l'empreinte TLS peuvent changer dès qu'une dépendance met à jour son backend TLS. Exécuter le test dans un environnement de préproduction qui ne correspond pas à la production en est une autre, car c'est le chemin réel de la requête qui compte, pas un shell local.

  • ❌ Tester une fois et supposer que le résultat reste valable pour toujours.
  • ❌ Vérifier les empreintes dans un environnement différent de celui où la tâche s'exécute réellement.
  • ❌ Faire confiance à un seul service de vérification sans second point de comparaison.
  • ❌ Ignorer les paramètres HTTP/2 en ne poursuivant que la couche TLS.

Comment la qualité des proxys s'inscrit dans le tableau

Transparence : Insocks est notre service, et cette section décrit ce que l'infrastructure de proxy fait réellement au sein d'une pile de collecte plus large. Une bonne infrastructure de proxy corrige les problèmes de la couche IP : géographie, réputation de l'IP et stabilité de connexion, tandis que l'empreinte TLS reste une couche distincte qu'un proxy seul ne peut toucher. Une disponibilité fiable et des pools d'IP propres comptent pour éviter les limitations de débit basées sur l'IP, mais ils ne disent rien de l'ordre des suites de chiffrement ou des listes d'extensions au sein d'une poignée de main.

Pour les travaux de collecte, nous vendons des proxys résidentiels et des proxys IP statiques, tous deux avec une prise en charge documentée des protocoles et des données de localisation. Combiner une infrastructure de proxy solide avec un client correctement configuré, qu'il s'agisse d'un moteur de navigateur complet ou d'une bibliothèque soigneusement alignée, traite les deux couches à la fois au lieu d'en laisser une exposée.

Fonctionnalité Ce que cela signifie en pratique
Pools d'IP résidentielles et FAI Réduit les signaux de réputation liés à l'IP, ne touche pas au TLS
Ciblage géographique Aligne l'origine de la requête sur le marché visé
Contrôle de session Garde l'IP cohérente tout au long d'un flux en plusieurs étapes
Disponibilité et assistance Réduit les échecs de connexion sans lien avec l'empreinte

Les proxys traitent la couche réseau, pas l'empreinte TLS, et tout fournisseur qui suggère le contraire survend ce qu'un changement d'IP peut faire. Les équipes qui doivent résoudre les deux couches associent généralement une infrastructure de proxy de qualité, comme les proxys résidentiels et proxys FAI d'Insocks, à un client basé sur navigateur ou correctement aligné.

🔗 Inscrivez-vous pour un accès complet afin de comparer les pools de proxys avant de vous engager sur une offre.

Points clés à retenir

  • La poignée de main tls est lue avant tout en-tête HTTP, et c'est là toute la base de cette méthode de détection.
  • Le hachage successeur de JA3 reste stable même après que l'ordre des extensions soit randomisé, contrairement à son prédécesseur.
  • Comprendre ce qu'est JA3 explique pourquoi les clients ressemblant à des navigateurs passent les vérifications plus régulièrement que les clients scriptés.
  • Les proxys résolvent les problèmes d'IP ; ils ne réécrivent jamais une poignée de main tls de leur propre chef.
  • L'automatisation par navigateur complet reste la voie la plus fiable pour une empreinte JA3 cohérente et ressemblant à un navigateur.

Transparence et sources des données

Toutes les données de cet article, y compris les prix, les paliers tarifaires, les limites et la disponibilité des produits, sont exactes à la date de publication indiquée sur cette page. Les conditions des fournisseurs changent fréquemment et sans préavis, les paliers d'entrée évoluent avec le volume, et des tarifs promotionnels peuvent s'appliquer le jour où vous lisez ceci. Rien ici ne constitue une offre, une garantie de conditions actuelles ou une recommandation d'achat.

Cet article est publié par Insocks. Nous vendons des proxys et divulguons un intérêt commercial dans la dernière section ci-dessus. Les proxys ne changent pas une empreinte JA3 ni aucun autre signal TLS, et nous le disons directement plutôt que de le suggérer autrement. Les outils et bibliothèques de test mentionnés ici, y compris le vérificateur de Scrapfly, curl-impersonate et les frameworks d'automatisation de navigateur, appartiennent à leurs propriétaires respectifs et apparaissent uniquement à titre d'identification. Les détails de cet article ont été vérifiés en août 2026, et le comportement des clients peut évoluer entre les versions de bibliothèques ou de navigateurs.

Questions fréquentes

Les questions ci-dessous couvrent les bases que les gens posent généralement après avoir découvert ce sujet pour la première fois. Les réponses restent courtes et factuelles, conformes à ce qu'un onglet de navigateur ou un outil en ligne de commande montrerait réellement. Rien de tout cela ne sert de guide de contournement, car l'objectif ici est la compréhension, pas l'évasion.

Qu'est-ce qu'une empreinte TLS ?

Une courte signature construite à partir des données de la poignée de main qui identifie quel logiciel a établi une connexion.

Comment un hachage JA3 est-il calculé ?

Cinq champs de la poignée de main sont combinés et hachés en une chaîne de 32 caractères.

Quelle est la différence entre JA3 et JA4 ?

La méthode plus récente trie les extensions et utilise un hachage plus robuste, restant stable après la randomisation de l'ordre par les navigateurs.

Un proxy résidentiel peut-il masquer mon empreinte TLS ?

Non, un proxy change seulement l'adresse IP ; la poignée de main traverse sans modification.

Pourquoi mon scraper est-il bloqué avec des en-têtes corrects ?

Les en-têtes se chargent après la poignée de main, donc un profil client incohérent est signalé en premier.

Comment vérifier ma propre empreinte TLS ?

Envoyez une requête à un outil de vérification public et comparez-la au résultat d'un vrai navigateur.

2026-09-03