Détection de sélénium par les sites Web
Bien que Selenium avec Chromedriver permette d'automatiser le navigateur, certains sites Web possèdent la capacité de détecter lorsqu'une instance de sélénium est utilisée , malgré l’absence d’automatisation explicite. Cette capacité soulève la question de savoir comment ces sites Web effectuent cette détection.
Techniques de détection
Les sites Web emploient diverses techniques pour discerner la présence de sélénium. Une méthode répandue consiste à examiner les variables JavaScript prédéfinies qui émergent lorsque Selenium est opérationnel. Ces variables contiennent fréquemment les termes « sélénium » ou « webdriver » et peuvent être détectées dans les objets fenêtre et les variables de document comme $cdc_ et $wdc_. Le mécanisme de détection varie en fonction du navigateur utilisé.
Contre-mesures
Pour contourner la détection de sites Web, une approche consiste à éliminer ou à modifier la présence de variables JavaScript spécifiques. Par exemple, dans Chrome, la modification du code source du pilote chrome pour remplacer $cdc_ par un nom de variable différent s'est avérée efficace.
Pseudocode pour la détection des robots
Certains les réseaux de robots peuvent exploiter des algorithmes complexes pour détecter l’utilisation de Selenium. Le pseudocode suivant donne un aperçu des techniques de détection potentielles :
runBotDetection = function () { // Check for window-specific detection keys for (windowDetectionKey in windowDetectionKeys) { if (window[windowDetectionKeyValue]) { return true; } } // Check for document-specific detection keys for (documentDetectionKey in documentDetectionKeys) { if (window['document'][documentDetectionKeyValue]) { return true; } } // Inspect document for specific patterns for (documentKey in window['document']) { if (documentKey.match(/$[a-z]dc_/) && window['document'][documentKey]['cache_']) { return true; } } // Check for additional external indicators if (window['external'] && window['external'].toString() && (window['external'].toString()['indexOf']('Sequentum') != -1)) return true; // Examine HTML element attributes if (window['document']['documentElement']['getAttribute']('selenium')) return true; if (window['document']['documentElement']['getAttribute']('webdriver')) return true; if (window['document']['documentElement']['getAttribute']('driver')) return true; return false; };
Méthodes supplémentaires
En plus de modifier les variables JavaScript, d'autres techniques permettant d'échapper à la détection de Selenium incluent :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!