- Les bots web ont évolué, des simples requêtes de clients HTTP à l’automatisation de navigateurs réels, et en réponse, les techniques de détection de bots se sont continuellement sophistiquées
- Diverses technologies sont utilisées pour la détection des bots, notamment la réputation IP, les empreintes TCP/TLS/de l’environnement navigateur, et l’analyse comportementale basée sur JavaScript
- Les techniques d’évasion des bots, comme les navigateurs headless, les proxys et l’usurpation du User-Agent, progressent, mais les algorithmes de détection évoluent eux aussi, prolongeant ce jeu du chat et de la souris
- Récemment, des modèles d’IA fondés sur des données comportementales ont été ajoutés à des analyses comportementales avancées, rendant la détection des bots encore plus complexe
- Des systèmes de défense multicouches comme les CAPTCHA, la détection de proxys, le Proof-of-Work et l’authentification comportementale se généralisent
Introduction : l’évolution des bots web et des techniques de détection
- Il existe de nombreux types de bots web, des simples crawlers et scripts d’automatisation jusqu’aux programmes avancés capables de se comporter comme de vrais utilisateurs
- Certains bots sont utiles, comme ceux des moteurs de recherche ou d’archivage, mais beaucoup servent aussi à des usages problématiques comme le spam ou le scraping illégal
- Les exploitants de sites luttent contre les bots depuis les débuts du web, et les techniques de détection comme de contournement se sont perfectionnées en parallèle
Les bots les plus simples : les clients HTTP
- La forme la plus basique de bot consiste à envoyer des requêtes à un site avec un simple client HTTP comme
curl ou wget
- Tous les clients HTTP s’exposent via l’en-tête
User-Agent, ce qui permet aux sites de les détecter et de les bloquer facilement
- Même si l’on falsifie le User-Agent pour imiter un navigateur, celui-ci envoie aussi des en-têtes supplémentaires (langue, encodage, etc.) ; sans imitation parfaite, le bot reste détectable
Réputation IP et proxys
- Les serveurs détectent les bots à l’aide de l’adresse IP. En particulier, les plages d’IP de cloud et de datacenters sont souvent considérées comme du trafic bot/automatisé et donc peu fiables
- Sans proxy, un bot est rapidement bloqué ; il faut donc contourner l’IP avec des proxys résidentiels ou mobiles, ce qui a un coût
- Les sites vérifient activement la réputation IP, l’ouverture de ports proxy (1080, etc.), les plages d’IP et les schémas de connexion
- Pour contourner les blocages IP, on utilise notamment des rotating proxies et des proxys mobiles
Empreinte TCP (TCP Fingerprinting)
- Lors de l’établissement d’une connexion TCP avant la requête HTTP, la structure des paquets TCP varie selon le système d’exploitation, ce qui permet d’identifier l’OS par analyse
- Si le User-Agent et le véritable OS (empreinte TCP) ne correspondent pas, le trafic peut être considéré comme bot ou usurpé
- Les serveurs proxy peuvent eux aussi influencer l’empreinte TCP ; il faut donc tenir compte de la cohérence avec l’OS lors du choix d’un proxy
Empreinte TLS (TLS Fingerprinting)
- Lors du handshake TLS, les suites de chiffrement prises en charge, les versions et les extensions diffèrent selon le navigateur et l’OS
- L’empreinte TLS permet d’estimer le navigateur, le système d’exploitation et le type de bibliothèque, puis de les recouper avec le User-Agent
Détection JavaScript
- Avant d’envoyer une réponse, ou après le chargement de la page, le serveur collecte via JavaScript des informations supplémentaires sur l’environnement et le comportement du client
- Si un bot n’exécute pas JavaScript, il est détecté immédiatement ; les bots répliquent donc avec des outils d’automatisation de navigateur comme Selenium, Puppeteer, Playwright
- On est ainsi passé de simples requêtes HTTP à l’automatisation de navigateur
Navigateurs headless et détection
- Le mode headless (comme Chrome sans fenêtre) est indispensable au développement de bots, mais il reste détectable via diverses différences, comme
navigator.webdriver, une liste de plugins vide et d’autres particularités
- Il est possible de masquer ces différences en patchant diverses propriétés, mais il faut traiter des dizaines d’indices, tandis que de nouveaux points de détection apparaissent en permanence
- Le mode New Headless, introduit à partir de 2023, utilise le même moteur que Chrome standard, ce qui rend la détection plus difficile
Détection des frameworks d’orchestration et IPC
- Les frameworks d’automatisation comme Selenium ou Playwright exposent des particularités dans leurs flags, options, versions de navigateur et configurations d’environnement
- Exemple : des flags comme
--disable-ipc-flooding-protection peuvent servir d’indices pour identifier un environnement de bot
- Il est aussi possible de provoquer puis détecter un état d’IPC flood en appelant excessivement certaines fonctions JS (par ex.
window.history.pushState)
Détection de proxy : sophistication côté JavaScript
- Latency (mesure de latence) : en comparant la latence totale mesurée via WebSocket, par exemple, avec la latence TCP, on peut déterminer la présence d’un proxy
- WebRTC Leak : le navigateur peut révéler l’IP réelle du client via WebRTC ; si elle ne correspond pas à l’IP de la requête HTTP, cela suggère un proxy ou un bot
- DNS Leak : JavaScript envoie une requête vers un sous-domaine arbitraire → l’emplacement ou l’IP du serveur DNS permet de détecter des schémas anormaux (par ex. incohérence de pays)
- Timezones : la comparaison entre le fuseau horaire du navigateur et la localisation de l’IP permet de détecter l’usage d’un proxy ou d’un déguisement
CAPTCHA et authentification
- Les CAPTCHA constituent une authentification dédiée à la détection et au blocage des bots, sous forme de problèmes qu’un humain peut résoudre (reconnaissance de caractères, clics, etc.)
- Plus récemment, on voit apparaître des CAPTCHA basés sur le Proof-of-Work (imposant un travail de calcul) et des CAPTCHA comportementaux (clic simple, combiné à une analyse comportementale)
- La plupart des bots contournent les CAPTCHA à l’aide de services externes de résolution de CAPTCHA à bas coût
Analyse comportementale simple et avancée
- L’analyse comportementale étudie l’inefficacité et la diversité propres au comportement humain, à travers les mouvements de souris, les schémas de frappe, la position et la vitesse des clics
- Exemples : trajectoires courbes de la souris, délai avant clic, intervalle entre les frappes, événements d’orientation/mouvement sur mobile
- Les bots se trahissent facilement par des déplacements en ligne droite, une frappe régulière ou trop rapide, ou des temps de réaction irréalistes
- L’analyse comportementale avancée collecte et entraîne de grands volumes de données de comportements humains et bots afin d’identifier, via l’IA ou le machine learning, jusqu’aux motifs les plus subtils
- Exemple : classification fondée sur des données combinées comme les trajectoires de souris, les faibles écarts temporels entre frappes et les schémas de navigation dans la page
Conclusion et implications
- Les bots web et les technologies de détection sont engagés dans une lutte d’évolution et de riposte permanente, où se combinent empreintes statiques, analyse comportementale et détection fondée sur l’IA
- Malgré les nombreuses techniques de contournement et de camouflage, les exploitants de services répondent par des systèmes de détection multicouches, une analyse comportementale en temps réel et des modèles d’IA, qui exigent des mises à niveau continues
- Les développeurs de bots restent limités dans leur capacité à construire un environnement de camouflage parfait, et doivent impérativement comprendre les dernières tendances en matière de détection et de contre-mesures
Aucun commentaire pour le moment.