来源:python中国网 时间:2020-04-10

  selenium做爬虫能解决很多反爬问题,但是selenium也有很多特征可以被识别,比如用selenium驱动浏览器后window.navigator.webdriver值是true,而正常运行浏览器该值是未定义的(undefined),如下:

  网上的各种文章往往告诉大家把selenium做一下启动配置即可,如下:

  option.add_experimental_option("excludeSwitches", ['enable-automation'])

  但是实际操作后发现并没有卵用,不管怎么配置window.navigator.webdriver的值还是true,原因安在?

  1 因为网上的文章大都是复制粘贴,一个错全都错。

  2 网上的文章太老了,即使今天是对的,随着时间推移版本更替也可能变成错的。

  3 因为ChromeDriver 79.0.3945.36版本无法通过更改enable-automation设置解决window.navigator.webdriver==true的问题。谷歌浏览器修复了非无头模式下排除“启用自动化”时window.navigator.webdriver是未定义的问题。

  要想正常使用,得把把Chrome回滚一个版本,并找到对应的ChromeDriver版本。这样才可以!此外,你还可以采用mitmproxy中间人的方式或者Pyppeteer模块来解决这问题,但是之前没接触过的话时间成本有点高!

  一言以蔽之,window.navigator.webdriver无效的问题是因为浏览器版本不同所以配置没起作用。 【欢迎大家加群(有旧版本谷歌浏览器及对应的webdriver可下载)-获得各种-奇葩报错】python学习会

每篇文章旨在解决一个问题,有帮助,赏瓶水。

疑难杂症

Tips:不要怕、多坚持、多动手、付出必有回报。