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

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-23 19:22:17230瀏覽

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

防止Selenium 檢測:修改navigator.webdriver 標誌

嘗試使用Selenium 和Chrome 自動化任務時,某些網站可能會根據Selenium 的檢測來阻止請求-驅動的瀏覽器。一種常見的偵測方法涉及公開一個名為 navigator.webdriver 的 DOM 變量,如果瀏覽器由 Selenium 控制,則變數將傳回 true。

要規避此檢測,請考慮以下方法:

排除自動化開關

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
driver = webdriver.Chrome(options=options, executable_path=r"path/to/chromedriver.exe")

修改navigator.webdriver

driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

更改使用者代理

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

停用閃爍功能

options.add_argument("--disable-blink-features=AutomationControlled")

綜合程式碼範例

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=r"path/to/chromedriver.exe")
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.execute_cdp_cmd("Network.setUserAgentOverride", {"userAgent": "new_user_agent"})
driver.get("https://www.example.com")

歷史注意事項

綜合程式碼範例

歷史注意事項 NavigatorAutomationInformation 介麵包含 navigator.webdriver 標誌,當瀏覽器由 WebDriver 控制時,此標誌傳回 true。但是,如果使用不當,更改這些參數可能會導致導航問題或偵測。

更新Selenium 的最新版本為 WebDriver 控制提供了附加功能,包括用於執行 DevTools 命令的execute_cdp_cmd() 命令。利用此指令提供了一種修改 navigator.webdriver 標誌並防止 Selenium 偵測的便捷方法。

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

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