首页 > Java > java教程 > 如何通过修改 Navigator.webdriver 标志来防止 Selenium 检测?

如何通过修改 Navigator.webdriver 标志来防止 Selenium 检测?

Mary-Kate Olsen
发布: 2024-12-24 06:35:25
原创
647 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板