Web サイトによる Selenium の検出
Selenium と Chromedriver はブラウザの自動化を提供しますが、一部の Web サイトは Selenium インスタンスの使用を検出する機能を備えています。明示的な自動化がないにもかかわらず。この機能により、これらの Web サイトがこの検出をどのように実行するかという疑問が生じます。
検出技術
Web サイトは、Selenium の存在を識別するためにさまざまな技術を採用しています。一般的な方法の 1 つは、Selenium が動作しているときに出現する事前定義された JavaScript 変数を調べることです。これらの変数には、「selenium」または「webdriver」という用語が含まれることが多く、$cdc_ や $wdc_ などのウィンドウ オブジェクトやドキュメント変数で検出できます。検出メカニズムは、使用されているブラウザによって異なります。
対策
Web サイトの検出を回避する 1 つのアプローチは、特定の 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 の検出を回避するための他の手法には次のものがあります。
以上がWeb サイトは Selenium 自動化をどのように検出し、どのように回避できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。