详解selenium + chromedriver 被反爬的解决方法


Posted in Python onOctober 28, 2020

问题背景:这个问题是在爬取某夕夕商城遇到的问题,原本的方案是用selenium + chromedriver + mitmproxy开心的刷,但是几天之后,发现刷不出来了,会直接跳转到登陆界面(很明显,是遭遇反爬了)

讲实话,这还是第一次用硒被反爬的,于是进行大规模的测试对比。

同台机器,用铬浏览器正常访问是不用跳转到登陆界面的,所以不是IP的问题。再用提琴手抓包对比了一下两个请求头,请求头都是一样的,所以忽略标头的反爬。

最后通过分析,可能是硒被检测出来了。于是就去查资料。大概的查到是和webdriver的有关系的。因为这个在服务端是可以检测到的。于是通过fiddler抓包,全局搜索了一下webdriver,发现在js中果然是有判断的。导致selenium爬取的时候,被转到登陆界面。

解决方法:mitmproxy

因为mitmproxy可以拦截请求,所以在响应中,将包含的webdriver的JS中的关键字替换成其他的字符就可以了。

if "/_next/static/js/common_pdd" in flow.request.url:
    flow.response.text = flow.response.text.replace("webdriver", "userAgent")

我是这样替换的。这样js解析的参数就变了,问题花刃而解。可以正常爬取数据了。

另外国外网上也有很多方法,比如修改webdriver里的一些特定参数名称,我尝试了一下,没有生效。

到此这篇关于详解selenium + chromedriver 被反爬的解决方法的文章就介绍到这了,更多相关selenium chromedriver反爬内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木! 

Python 相关文章推荐
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
简单学习Python time模块
Apr 29 Python
django中静态文件配置static的方法
May 20 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
Jul 09 Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 Python
Python理解递归的方法总结
Jan 28 Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 Python
Python json格式化打印实现过程解析
Jul 21 Python
怎么解决pycharm license Acti的方法
Oct 28 Python
python中@contextmanager实例用法
Feb 07 Python
python cv2图像质量压缩的算法示例
Jun 04 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
Nov 25 #Python
Python字典实现伪切片功能
Oct 28 #Python
python使用selenium爬虫知乎的方法示例
Oct 28 #Python
怎么解决pycharm license Acti的方法
Oct 28 #Python
python如何快速拼接字符串
Oct 28 #Python
Python实现简单的猜单词小游戏
Oct 28 #Python
Python中openpyxl实现vlookup函数的实例
Oct 28 #Python
You might like
ZF等常用php框架中存在的问题
2008/01/10 PHP
PHP高级OOP技术演示
2009/08/27 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
jQuery 查找元素操作实例小结
2019/10/02 jQuery
vue项目从node8.x升级到12.x后的问题解决
2019/10/25 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
Python之eval()函数危险性浅析
2014/07/03 Python
python中__slots__用法实例
2015/06/04 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
python将unicode和str互相转化的实现
2020/05/11 Python
德国旅游网站:weg.de
2018/06/03 全球购物
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server