硒的webdriver:修改navigator.webdriver标志,以防止硒检测

Ajantha:

我试图使用自动化硒和铬,但不知何故,当Chrome是由硒和块每一个请求驱动的网站检测网站一个非常基本的任务。我怀疑这个网站是靠暴露DOM变量像这样的https://stackoverflow.com/a/41904453/648236检测硒驱动器。

我的问题是,有没有办法可以让navigator.webdriver标志为假?我愿意走这么远的尝试,并进行修改后重新编译硒源,但我似乎无法找到资源库中的NavigatorAutomationInformation源代码任意https://github.com/SeleniumHQ/selenium

任何帮助深表感谢

PS:我也尝试从以下https://w3c.github.io/webdriver/#interface

Object.defineProperty(navigator, 'webdriver', {
    get: () => false,
  });

但它仅更新初始页面加载后的财产。我认为,在执行我的脚本之前站点检测到的变量。

DebanjanB:

一是更新1

execute_cdp_cmd() 随着可用性execute_cdp_cmd(cmd, cmd_args)命令现在您可以轻松地执行 命令使用使用此功能,您可以修改navigator.webdriver容易,以防止硒从得到检测。


预防检测 2

为了防止驱动硒webdriver的越来越检测利基办法将包括任何/所有的以下提到的步骤:

  • 旋转所述通过execute_cdp_cmd()命令如下:

    driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browserClientA"}})
    
  • 更改属性的值navigator进行的webdriver未定义

    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
      "source": """
        Object.defineProperty(navigator, 'webdriver', {
          get: () => undefined
        })
      """
    })
    
  • 排除收集enable-automation开关

    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    
  • 关掉 useAutomationExtension

    options.add_experimental_option('useAutomationExtension', False)
    

示例代码3

向上杵上方和有效码块将提到的所有步骤:

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_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})
driver.execute_cdp_cmd("Network.enable", {})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browser1"}})
driver.get("https://www.google.com/")

历史

由于按照W3C编者草案目前执行严格提到:

标志被设置为当所述用户代理正在远程控制,其最初被设置为webdriver-active truefalse

进一步,

Navigator includes NavigatorAutomationInformation;

这是要注意的是:

NavigatorAutomationInformation 接口不应该暴露WorkerNavigator

NavigatorAutomationInformation 接口被定义为:

interface mixin NavigatorAutomationInformation {
    readonly attribute boolean webdriver;
};

返回true如果webdriver-active 标志设置,否则为false。

最后,navigator.webdriver定义用于协同操作的用户代理以通知它是由控制的文档的标准方式的webdriver,以便交替代码路径可以自动化过程被触发。

注意:改变/调整上述参数可能会阻止导航,并获得的webdriver实例检测。


更新(6 - 11月,2019)

由于目前实施没有得到检测是使用了访问网页的理想方法的ChromeOptions()类一对夫妇的参数添加到:

  • 排除收集enable-automation开关
  • 关掉 useAutomationExtension

通过的一个实例ChromeOptions如下:

  • Java示例:

    System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver =  new ChromeDriver(options);
    driver.get("https://www.google.com/");
    
  • Python的例子

    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'C:\path\to\chromedriver.exe')
    driver.get("https://www.google.com/")
    

传奇

1:仅适用于硒的Python的客户。

2:仅适用于硒的Python的客户。

3:仅适用于硒的Python的客户。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

如何使用硒在无头铬中取消设置navigator.webdriver?

来自分类Dev

网站检测到硒webdriver

来自分类Java

硒webdriver轮询时间

来自分类Java

硒webdriver检测UI弹出错误消息

来自分类Java

添加SSL证书以硒的webdriver

来自分类Java

登录后的硒webdriver URL

来自分类Java

空指针异常返回 - Java的硒的webdriver

来自分类Java

硒的webdriver:如何使用硒的webdriver从Gmail中删除打开邮件

来自分类Java

如何记录在硒的webdriver和Java API视频

来自分类Java

如何配置硒的webdriver同春启动的UI测试?

来自分类Java

查找使用硒的webdriver与Java的新页面上WebElement

来自分类Java

如何使用硒webdriver的日历选择日期

来自分类Java

如何在硒webdriver 3.0 beta中使用geckodriver?

来自分类Dev

测试用例未运行iin硒webdriver

来自分类Java

在硒webdriver中运行moveToElement()方法时出错?

来自分类Dev

--headless在chrome webdriver中不是硒python的选项

来自分类Java

使用webdriver.firefox.marionette的Java硒问题

来自分类Java

如何在硒打开新标签使用的webdriver动作类的硒使用Java或如何按Ctrl + T使用硒的webdriver

来自分类Java

为什么不是我能够设置系统属性为我的硒的webdriver(JAVA)?

来自分类Python

如何在硒中使用Chrome WebDriver下载python中的文件?

来自分类Dev

可视化/显示硒2测试中的鼠标光标位置(例如PHPUnit Webdriver)

来自分类Java

如何检查一个zip文件是否成功下载或不使用Java的硒的webdriver?

来自分类Java

如何允许或利用硒的webdriver与Java否认Firefox的麦克风和摄像头弹出的通知

来自分类Java

我如何设置在硒的webdriver 3 Firefox的驱动程序默认的配置文件?

来自分类Dev

空手道与硒webdriver一起使用的能力

来自分类Java

如何提取DOM元素的ID属性,如果我知道通过硒的webdriver和Java对应的文本

来自分类Java

右/语境单击IE11使用硒的webdriver工作不正常

来自分类Java

什么是org.openqa.selenium.remote.session.StripAnyPlatform类中的硒webdriver的目的是什么?

来自分类Java

元素不是交互使用Java的Gmail密码字段中硒的webdriver

TOP 榜单

热门标签

归档