首頁 >Java >java教程 >如何透過修改 Navigator.webdriver 標誌來防止 Selenium 偵測?

如何透過修改 Navigator.webdriver 標誌來防止 Selenium 偵測?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-24 06:35:25642瀏覽

How Can I Prevent Selenium Detection by Modifying the Navigator.webdriver Flag?

修改 Navigator.webdriver 標誌以防止 Selenium 偵測

透過 Selenium 和 Chrome 實現日常網站功能自動化時,Selenium 偵測提出了重大挑戰。有些網站會主動檢查 Selenium 驅動的瀏覽器,阻止某些要求。通常,它們依賴暴露的 DOM 變數(如 navigator.webdriver)來偵測此類實例。

預防方法

要阻止這種檢測機制,請考慮以下預防措施:

新增命令列標誌

修改您的Selenium 腳本以將特定參數注入Chrome 實例。這包括:

  • 停用「AutomationControlled」標誌:

    from selenium import webdriver
    
    options = webdriver.ChromeOptions()
    options.add_argument('--disable-blink-features=AutomationControlled')
    driver = webdriver.Chrome(options=options, executable_path=path_to_driver)
  • 設定自訂使用者代理:

    driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Your_Custom_User_Agent'})

腳本內修改
  • 將navigator.webdriver 設定為未定義:
    driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
  • 排除開關🎜>

    options.add_experimental_option("excludeSwitches", ["enable-automation"])
  • 停用自動化副檔名:
    options.add_experimental_option('useAutomationExtension', False)

範例程式碼

結合這些措施,這裡是一個全面的程式碼片段:
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

driver = webdriver.Chrome(options=options, executable_path=path_to_driver)
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Your_Custom_User_Agent'})
print(driver.execute_script("return navigator.userAgent;"))
driver.get('https://www.httpbin.org/headers')

注意事項

請務必小心,因為這些修改可能會幹擾導覽並可能導致檢測。

以上是如何透過修改 Navigator.webdriver 標誌來防止 Selenium 偵測?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn