即使在注入JS之后,navigator.webdriver始终会变为True

时间:2019-01-02 17:33:44

标签: javascript selenium selenium-webdriver webdriver selenium-chromedriver

在使用Selenium实现自动化时,我一直试图绕过网站所做的主要检查。我试图绕过此链接上的所有测试:https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html

默认情况下,我可以绕过除webdriver测试之外的所有内容。

我尝试使用十六进制编辑器删除$ cdc_键,并在chrome网络驱动程序中将其替换为等效值,但没有任何更改。

我尝试构建.crx文件以作为chrome中的扩展名加载,并在确保加载并执行JS代码后尝试了以下操作:

document.addEventListener("DOMContentLoaded", () => {
  //var script=document.createElement("script");
  delete navigator['webdriver']
  var obj = Object.create({});
  Object.defineProperty(navigator, 'webdriver', {
    get: () => false,
  });
  console.log(navigator.webdriver)
});

当我打开控制台时,可以看到在console.log时navigator.webdriver为false,但此后立即将其再次设置为true。

任何想法如何克服这个问题?

我对JS不太熟悉,因此,如果您可以更详细地获得答案,我将不胜感激。

0 个答案:

没有答案