웹사이트에서 Selenium 감지
Chromedriver가 포함된 Selenium은 브라우저 자동화를 제공하지만 일부 웹사이트에는 Selenium 인스턴스가 사용되는 시기를 감지하는 기능이 있습니다. , 명시적인 자동화가 없음에도 불구하고. 이러한 능력은 이러한 웹사이트가 어떻게 탐지를 수행하는지에 대한 의문을 제기합니다.
탐지 기술
웹사이트는 셀레늄의 존재를 식별하기 위해 다양한 기술을 사용합니다. 널리 사용되는 방법 중 하나는 Selenium이 작동할 때 나타나는 사전 정의된 JavaScript 변수를 검사하는 것입니다. 이러한 변수에는 "selenium" 또는 "webdriver"라는 용어가 자주 포함되며 $cdc_ 및 $wdc_와 같은 창 개체 및 문서 변수에서 감지될 수 있습니다. 탐지 메커니즘은 사용 중인 브라우저에 따라 다릅니다.
대책
웹사이트 탐지를 우회하는 한 가지 접근 방식은 특정 JavaScript 변수의 존재를 제거하거나 변경하는 것입니다. 예를 들어 Chrome에서는 chromedriver 소스 코드를 수정하여 $cdc_를 다른 변수 이름으로 변경하는 것이 효과적인 것으로 나타났습니다.
봇 탐지를 위한 의사 코드
일부 봇 네트워크는 복잡한 알고리즘을 활용하여 Selenium 사용을 감지할 수 있습니다. 다음 의사 코드는 잠재적인 탐지 기술을 간략하게 보여줍니다.
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; };
추가 방법
JavaScript 변수를 변경하는 것 외에도 Selenium 탐지를 회피하기 위한 다른 기술은 다음과 같습니다.
위 내용은 웹사이트는 셀레늄 자동화를 어떻게 감지하고 어떻게 우회할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!