当前位置:   article > 正文

selenium 防止window.navigator.webdriver对象检测的方法

window.navigator.webdriver

当我们使用selenium 去访问或爬取某些网站的时候会遇到网站对selenium检测的一些情况。

正常用浏览器访问时:window.navigator属性是undefind

而使用selenium去访问 则会给window.navigator 设置webdriver属性

处理方法:

1.可以使用CDP(chrome开发者工具协议)解决这个问题

利用它可以实现每个页面刚加载的时候就执行Javascript语句 将webdriver属性置空

  1. from selenium import webdriver
  2. from selenium.webdriver import ChromeOptions
  3. # 方法1 在每次打开新的页面时将webdriver属性置为空
  4. option = ChromeOptions()
  5. option.add_argument('--disable-blink-features=AutomationControlled')
  6. option.add_experimental_option('excludeSwitches', ['enable-automation'])
  7. option.add_experimental_option('useAutomationExtension', False)
  8. driver = webdriver.Chrome(options=option, executable_path="chromedriver.exe")
  9. driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
  10. "source": 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'
  11. })
  12. # 方法2
  13. option = ChromeOptions()
  14. option.add_argument('--disable-blink-features=AutomationControlled')
  15. driver = webdriver.Chrome(options=option, executable_path="chromedriver.exe")
  16. driver.get("xxxxxx")

还有一种方法是stealth.min.js  

  1. with open('stealth.min.js') as f:
  2.     js = f.read()
  3. driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  4.   "source": js
  5. })


不过该方式有时候也会被检测出来

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/457999
推荐阅读
相关标签
  

闽ICP备14008679号