Détection de Selenium Chrome
La détection côté client est essentielle pour fournir une détection des bots complète et précise. C’est ce qui permet à notre solution de détecter les navigateurs automatisés en une seule exécution de défi JS. Voyons une technique qui permet au moteur de détection de DataDome d’identifier spécifiquement les navigateurs Chrome créés par le framework Selenium en utilisant la détection JavaScript (JS) côté client, également connue sous le nom de « browser fingerprinting » (empreinte digitale du navigateur).
Qu’est-ce que Selenium ?
Sorti en 2004, Selenium est un framework populaire qui utilise du code pour instrumenter les navigateurs (comme Chrome, Firefox, Opera et Safari) afin d’exécuter automatiquement certaines actions (par exemple, cliquer sur un lien ou ajouter un produit à un panier).
Bien que certains développeurs de bots aient adopté des frameworks plus récents, tels que Puppeteer et Playwright, Selenium reste un choix courant.
Comment détecter Selenium Chrome ?
Dans la détection des bots, vous pouvez utiliser une large gamme de techniques et de signaux, tels que l’analyse comportementale, l’empreinte TLS, ainsi que les réputations de session et d’IP, pour différencier les humains des systèmes automatisés/des bots.
Dans cet article, nous nous concentrons sur une technique qui permet à un site web de détecter spécifiquement Selenium Chrome, c’est-à-dire les navigateurs Chrome créés par le framework Selenium. La technique que nous abordons utilise la détection JavaScript (JS) côté client, également connue sous le nom de « browser fingerprinting ».
Une approche simple et bien connue pour détecter Selenium consiste à vérifier si navigator.webdriver est égal à true. Cependant, bien que navigator.webdriver = true indique la présence d’un bot, cela détectera par ailleurs les bots instrumentés avec d’autres technologies que Selenium, comme Puppeteer et Playwright. De plus, l’attribut navigator.webdriver = true peut désormais être facilement falsifié en utilisant le flag –disable-blink-features=AutomationControlled lors du lancement de Chrome.
Au lieu de cela, il existe une autre approche plus spécifique à Selenium Chrome, où nous essayons de détecter les effets secondaires introduits par Selenium lui-même. Lorsque Selenium interagit avec une page web — pour cliquer sur un élément, déplacer la souris ou exécuter du code JS dans le contexte de la page — il appellera la fonction JS getPageCache à un moment ou à un autre.
L’un des effets secondaires de la fonction JS getPageCache est qu’elle définira un objet Cache dans l’objet document. L’instance du cache est accessible via document.$cdc_asdjflasutopfhvcZLmcfl_.

Vous vous demandez peut-être pourquoi les développeurs de Selenium ont choisi la chaîne $cdc_asdjflasutopfhvcZLmcfl_. Comme ils l’expliquent dans un commentaire du code, il s’agit d’une longue chaîne qui a peu de chances d’entrer en conflit ou d’entrer en collision avec un nom de propriété déjà existant défini dans le même contexte d’exécution JS.
Ainsi, tester la présence de document.$cdc_asdjflasutopfhvcZLmcfl_ peut révéler la présence de Selenium Chrome. (Notez que la propriété document.$cdc_asdjflasutopfhvcZLmcfl_ peut ne pas être présente au moment du chargement si le bot n’a pas encore interagi avec la page.)
Mon site web est-il sécurisé si je détecte Selenium Chrome ?
Cela dépend des protections que vous avez mises en place. Bien que la technique décrite ici permette de détecter la présence de bots automatisés avec Selenium et Chrome, les attaquants disposent d’une large gamme de bots utilisant d’autres navigateurs et frameworks d’instrumentation, tels que Puppeteer extra stealth.
De plus, plusieurs développeurs ont trouvé des moyens de contourner la technique de détection décrite ici, souvent en recompilant le binaire ChromeDriver pour remplacer la chaîne $cdc_asdjflasutopfhvcZLmcfl_ par une autre chaîne, ou simplement en remplaçant la chaîne dans le binaire compilé.
La modification de différents attributs « standard » pour éviter la détection est plus courante que vous ne le pensez et affecte tous les secteurs, des sites de commerce électronique aux plateformes de streaming. Cette technique est utilisée par les bots pour mener des attaques de scraping, acheter des produits en édition limitée (scalping), manipuler les votes et augmenter le nombre de vues sur les plateformes de streaming.
Conclusion
La détection côté client est primordiale pour une détection rapide et précise des bots. Elle permet à notre moteur de détection des bots de détecter les navigateurs automatisés lors de l’exécution d’un seul défi JS en recherchant des effets secondaires discriminants dans les empreintes digitales des navigateurs.
Comme nous l’avons montré dans cet article, nous pouvons détecter les bots (Headless) Chrome automatisés avec Selenium en utilisant document.$cdc_asdjflasutopfhvcZLmcfl_, même si les bots essaient de masquer leur présence en supprimant navigator.webdriver = true à l’aide du flag –disable-blink-features=AutomationControlled lors du lancement de Chrome.
Cependant, gardez à l’esprit que détecter et stopper Selenium Chrome ne suffit pas à sécuriser entièrement un site web contre les bots malveillants. Les attaquants d’aujourd’hui disposent encore d’une large gamme de bots utilisant d’autres navigateurs et frameworks d’instrumentation, tels que Puppeteer extra stealth.