首页 >Java >java教程 >如何通过修改 Chrome 中的'navigator.webdriver”标志来防止 Selenium 检测?

如何通过修改 Chrome 中的'navigator.webdriver”标志来防止 Selenium 检测?

Patricia Arquette
Patricia Arquette原创
2024-12-25 04:41:11172浏览

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

修改 navigator.webdriver 标志以防止 Chrome 中的 Selenium 检测

WebDriver 驱动的自动化经常面临检测,网站会采取措施来识别受控制的浏览器。为了防止这种检测,Selenium 提供了一种修改 Chrome 中 navigator.webdriver 标志的方法。

1. execute_cdp_cmd()更新

通过引入execute_cdp_cmd(),您可以使用Selenium执行Google Chrome DevTools命令。这使您能够轻松更改 navigator.webdriver 标志。

2.防止 Selenium 检测

要防止 Selenium 检测,请考虑以下方法:

  • 添加参数 '--disable-blink-features=AutomationControlled'
  • 使用execute_cdp_cmd()旋转用户代理
  • 设置navigator.webdriver 属性未定义
  • 排除启用自动化开关的集合
  • 关闭 useAutomationExtension

3.示例代码

结合这些方法,一个有效的 Selenium 代码片段将是:

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'C:\WebDrivers\chromedriver.exe')
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'})
print(driver.execute_script("return navigator.userAgent;"))
driver.get('https://www.httpbin.org/headers')

4。背景和注意事项

根据 W3C 编辑草案,navigator.webdriver 标志表示用户代理的远程控制。务必谨慎行事,因为修改这些参数可能会阻止导航并突出显示 WebDriver 实例。

以上是如何通过修改 Chrome 中的'navigator.webdriver”标志来防止 Selenium 检测?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn