在写爬虫,面对很多js 加载的页面,很多人束手无策,更多的人喜欢用Senlenium+ Webdriver,古语有云:道高一尺魔高一丈。已淘宝为首,众多网站都针对 Selenium的js监测机制, 比如:window.navigator.webdriver,navigator.languages,navigator.plugins.length……

正常情况下我们用浏览器访问淘宝等网站的 window.navigator.webdriver的值为
undefined。

当我们用selenium 的时候, window.navigator.webdriver的值为 true。

那么如何解决这个问题呢?

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

第二种方法依旧通过selenium,不过是在服务器在第一次发送js并在本地验证的时候,做好‘第一次’的伪装,从而实现‘第一次登陆’有效。。方法简单,适合小白。

之前我写过一次用 pyppeteer 加 asyncio 绕过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窗口,在右上角会弹出一个提示,不用管它,不要点击停用按钮。

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

只支持旧的版本啦,更多信息以及其它方法戳

最新文章

  1. AudioRecord类获取录音音量分贝数
  2. python csv用法
  3. -[UIViewController _loadViewFromNibNamed:bundle:]
  4. Linux下怎么查看当前系统的版本
  5. CSS Reset样式重置
  6. Android源码分析之MessageQueue
  7. PHPExcel上传sae遇到: -1:fail to get xml content
  8. Windows下查看8080进程及结束进程命令
  9. try catch语句在VC下的处理
  10. Java 类成员的初始化顺序
  11. 左侧高亮(js)
  12. 前端学习笔记(zepto或jquery)——对li标签的相关操作(五)
  13. 批处理数据--db2备份数据
  14. chrome开发工具指南(十一)
  15. 第1阶段——uboot分析之硬件初始化start_armboot函数(5)
  16. [二十六]JavaIO之再回首恍然(如梦? 大悟?)
  17. 【转】Spark实现行列转换pivot和unpivot
  18. jmeter 报错Error in NonGUIDriver java.lang.IllegalArgumentException: Report generation requires csv output format, check 'jmeter.save.saveservice.output_format' property
  19. 周一要做的事情Sd31y5YE
  20. Go语言的map如何判断key是否存在

热门文章

  1. 强大的httpClientUtils
  2. leetcood学习笔记-88-合并两个有序数组
  3. leetcood学习笔记-104-二叉树的最大深度
  4. 移动Windows开始按钮到任务栏中的任何位置
  5. CF696B Puzzles(期望dp)
  6. 转-pycharm建立项目
  7. 剑指offer——36二叉树和为某一值的路径
  8. MyBatis中使用RowBounds对查询结果集进行分页
  9. 第三天:字典表dict、元组tuple、文件与类型汇总
  10. HTTP协议:响应消息