阅读 195

selenium爬虫:一行代码去掉所有webdriver痕迹

selenium爬虫:一行代码去掉所有webdriver痕迹

 

1、前言

码工人之歌

  码工人,码工魂,码工人才是人上人。

  码工人你不要哭,因为……骑电瓶车的时候,擦眼流水儿不安全。

  码工人996写代码少活十年,而不写代码一天都活不下去。

2、问题

  噗哈哈,开个玩笑。首先回顾前两篇selenium系列selenium爬虫使用了代理为什么还是被服务器判定为机器人?以及selenium爬虫使用代理情况下不设置这几个参数,代理就白加了,正确的关闭webrtc以及设置成代理的时区和地理位置,可以很好的帮我们的浏览器伪装成正儿八经的正常浏览器,犹如滤镜可以把王大妈变身成风靡万千宅男的乔碧萝。但是,这还不够,风控系统有各种方式可以将你揪出来。所以应粉丝的要求,今天小码哥又双叒动笔了:

怎么如德芙般丝滑地去掉selenium烦人的webdriver痕迹?

3、原因

  原因很简单,我们使用selenium+chromedriver启动chrome的时候,会在chrome的navigator以及document对象里注入一些属性,如果web服务器返回的js代码里有对这些属性的检测,那我们就会被识别为机器人在访问。

《2021测试开发各大机构最新全套教程》:https://pan.baidu.com/s/17jkyGn-Wm-zC6QQLkWjrsw 
  提取码:o94n 

4、解决方案

  解决方案逻辑上很简单,就是selenium额外加了什么我们去除掉什么。

  我们先上没有去掉webdriver的selenium代码,访问:https://bot.sannysoft.com/

from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option(     "excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option('useAutomationExtension', False) chrome_options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en') chrome_options.add_argument(     'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36') driver = webdriver.Chrome(     "./chromedriver", chrome_options=chrome_options) driver.get("https://bot.sannysoft.com/")

  测试结果截图:

  我们可以看到,webdriver被检测出来了,也就是说服务器知道你使用了selenium访问其网站。

  我们上去掉webdriver的代码的selenium代码

from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option(     "excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option('useAutomationExtension', False) chrome_options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en') chrome_options.add_argument(     'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36') chrome_options.add_argument("disable-blink-features=AutomationControlled")#就是这一行告诉chrome去掉了webdriver痕迹 driver = webdriver.Chrome(     "./chromedriver", chrome_options=chrome_options) driver.get("https://bot.sannysoft.com/")

  测试结果截图:

  我们可以看到通过在chrome启动的时候加一个disable-blink-features=AutomationControlled的flag就可以实现降维打击,移除掉webdriver的痕迹,妈妈再也不用担心你加班了……

如果你们认为做到以上:关闭webrtc、设置浏览器时区和地理位置、去掉webdriver就高枕无忧了吗?

  No,这还不够,服务器还能揪出你,你只能给老板发送以下短信。

然后继续加班。 想知道更多的反检测方式,咱们下期见!

来自51CTO博客作者wx5d22f9656f4ea的原创作品,如需转载,请注明出处,否则将追究法律责任
https://blog.51cto.com/u_14438788/2794292


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐