selenium 参数设置-window.navigator.webdriver


selenium 参数设置

selenium启动chrome基本上与真实环境类似,但有一些变量还是不一样,需要注意。

有些网站通过这些参数识别爬虫。

 

window.navigator.webdriver

值为undefined是正常的浏览器,返回true说明用的是Selenium模拟浏览器。

这里给出一个检测Selenium的js代码例子

webdriver = window.navigator.webdriver;

if(webdriver){    console.log('Selenium模拟浏览器')

} else {    console.log('正常浏览器')}

 

解决办法:

第一种:使用mitmproxy用中间人的方式截取服务器发送来的js,修改js里面函数的参值方式发送给服务器。相当于在browser和server之间做一层中介的拦截。不过此方法要对js非常熟悉。

 

第二种:通过selenium,设置Chromedriver的启动参数。

 

在启动Chromedriver之前,为Chrome开启实验性功能参数excludeSwitches,它的值为['enable-automation'],完整代码如下:

 

from selenium.webdriver import Chrome

from selenium.webdriver import ChromeOptions

 

option = ChromeOptions()

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

driver = Chrome(options=option)

 

此时启动的Chrome窗口,在右上角会弹出一个提示,不用管它,不要点击停用按钮。

再次查询window.navigator.webdriver,可以发现这个值已经自动变成undefined。并且无论打开新网页,开启新窗口还是点击链接进入其他页面,都不会让它变成true。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM