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 webdriverchrome_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 webdriverchrome_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,这还不够,服务器还能揪出你,你只能给老板发送以下短信。
然后继续加班。 想知道更多的反检测方式,咱们下期见!
selenium爬虫:一行代码去掉所有webdriver痕迹相关推荐
- python 一行代码去掉emoji表情符号
安装python 包 pip install emoji 使用方法 import emoji res = "".join(emoji.replace_emoji("I
- idea+selenium代码_你试过使用selenium爬虫抓取数据吗
▼ 关注测试局| 会上瘾 写在前面 本来这篇文章该几个月前写的,后来忙着忙着就给忘记了. ps:事多有时候反倒会耽误事. 几个月前,记得群里一朋友说想用selenium去爬数据,关于爬数据,一般是模拟 ...
- python selenium爬虫代码示例_python3通过selenium爬虫获取到dj商品的实例代码
先给大家介绍下python3 selenium使用 其实这个就相当于模拟人的点击事件来连续的访问浏览器.如果你玩过王者荣耀的话在2016年一月份的版本里面就有一个bug. 安卓手机下载一个按键精灵就可 ...
- Python爬虫仅需一行代码,熟练掌握crawl第三方库
simple_crawl 仅需一行代码即可达到爬虫效果 使用方法 私信小编01即可大量获取Python学习资料 pip install simple_crawl 以下源代码为简单介绍,详细功能介绍再源 ...
- Python爬虫仅需一行代码----crawl第三方库
仅需一行代码写爬虫–simple_crawl simple_crawl 仅需一行代码即可达到爬虫效果 项目地址(欢迎star):https://github.com/Amiee-well/crawl ...
- Python3,爬虫有多简单,一个库,一行代码,就OK, 你确定不来试试?
爬虫进阶库:Scrapeasy 1. 引言 2.Scrapeasy 2.1 简介 2.1.1 Scrap 2.1.2 Scrapeasy 2.2 安装 2.3 代码示例 3.总结 1. 引言 小屌丝: ...
- 【Python奇淫技巧】用pandas的read_html函数仅一行代码实现网页爬虫
目录 一.介绍read_html()函数 二.分析爬取目标页面 三.代码讲解 四.同步视频讲解 一.介绍read_html()函数 喜欢Python编程的小伙伴你知道吗,python的pandas库除 ...
- Python 技术篇-调用浏览器访问指定网页,一行代码实现。非Selenium。
webbrowser 库就可以实现,非常简单方便!只要一行代码! 这个是我的博客主页. import webbrowser webbrowser.open('https://blog.csdn.net ...
- Crawlab运行selenium爬虫
上篇文章学习了Crawlab运行scrapy爬虫和单文件爬虫,这次学习Crawlab运行selenium爬虫,我的例子是单文件的. 环境准备 Crawlab虽然自带了一些爬虫用的第三方库,但是不全,总 ...
最新文章
- C语言--static修饰变量
- 合并分支到master上
- ZOJ3370. Radio Waves(2-sat)
- Record of redevelopment of website
- ffmpeg转换格式
- linux驱动编写(电源管理驱动)
- 计算机知识太多了记不住,内容太多记不住?教你提高记忆力
- 【FPGA教程案例89】编译码2——使用vivado核实现RS信道编译码
- RFC5731 - 中文翻译(原创)
- 湖北专升本MySQL复习(MySQL数据库实用教程)——MySQL数据表的操作
- ios 使用AVFoundation从视频中提取音频
- JVM性能调优(4)——性能调优工具
- 【LeetCode刷题】二月汇总篇
- Oracle函数之LAG函数
- Linux下对文件权限的管理
- 知道创宇 二级安全公司 骗取面试人源码,长见识了啊。
- PID原理及python简单实现与调参
- bootstrap调整Glyphicons图标大小
- 用c语言编写简单的餐厅点餐系统(带后台)
- ps2021逆天滤镜库不登陆Adobe Id可以用吗?