ホームページ > Java > &#&チュートリアル > Selenium Webdriver が Web サイトによって検出されないようにするにはどうすればよいですか?

Selenium Webdriver が Web サイトによって検出されないようにするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-30 17:48:11
オリジナル
716 人が閲覧しました

How Can I Prevent Selenium Webdriver from Being Detected by Websites?

Selenium Webdriver: navigator.webdriver フラグの変更による検出の防止

はじめに

人気のある Web 自動化フレームワークである Selenium は、Web サイトでの実装時に課題に直面していますSelenium 駆動のブラウザにフラグを立てる検出メカニズム。この記事は、navigator.webdriver フラグを変更して Selenium の検出を防ぐ効果的な方法を提供することで、このような検出の問題に対処することを目的としています。

アプローチ

  1. Chrome を追加する引数:

    • --disable-blink-features=AutomationControlled は、自動化検出機能を無効にします。
    options = webdriver.ChromeOptions()
    options.add_argument('--disable-blink-features=AutomationControlled')
    driver = webdriver.Chrome(options=options)
    ログイン後にコピー
  2. CDPの実行コマンド:

    • execute_cdp_cmd を使用すると、ブラウザの Chrome DevTools Protocol (CDP) を直接操作できます。
    • 実際のユーザーをさらに模倣するようにユーザー エージェントを変更します。
    driver.execute_cdp_cmd('Network.setUserAgentOverride', {'userAgent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
    ログイン後にコピー
  3. navigator.webdriver プロパティの変更:

    • navigator.webdriver のプロパティ値を次のように変更します。未定義。
    driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
    ログイン後にコピー
  4. Exclude Automation Switches:

    • オートメーション関連の収集を防ぐために excludeSwitches を追加します。
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    ログイン後にコピー
  5. オートメーション拡張機能を無効にする:

    • さらに削減するには、useAutomationExtension オプションをオフにします。
    options.add_experimental_option('useAutomationExtension', False)
    ログイン後にコピー

サンプル コード

上記のメソッドを 1 つのコード ブロックに結合します:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options)
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.execute_cdp_cmd('Network.setUserAgentOverride', {'userAgent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
driver.get('https://www.website.com/')
ログイン後にコピー

歴史的コンテキスト

navigator.webdriver フラグは、ユーザー エージェントがリモート制御下にあることを示す方法としての W3C。

注意

これらのパラメータを調整すると、ブラウザのナビゲーションに干渉し、WebDriver インスタンスが検出可能になる可能性があります。

更新

  • Selenium Python クライアントは、execute_cdp_cmd をサポートするようになりました。
  • 検出防止をさらに強化するためにパラメータが追加されました。

結論

これらのメソッドに従うことで、navigator.webdriver フラグとWeb サイトが Selenium 駆動のブラウザを検出しないようにします。ただし、検出を避けるために、これらの変更を慎重に扱うことが重要です。

以上がSelenium Webdriver が Web サイトによって検出されないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート