详解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牛刀小试密码爆破
Feb 03 Python
对pandas进行数据预处理的实例讲解
Apr 20 Python
Sanic框架应用部署方法详解
Jul 18 Python
pandas dataframe的合并实现(append, merge, concat)
Jun 24 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
django-利用session机制实现唯一登录的例子
Mar 16 Python
基于python实现上传文件到OSS代码实例
May 09 Python
Python常用模块函数代码汇总解析
Aug 31 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 08 Python
pandas针对excel处理的实现
Jan 15 Python
Python实现区域填充的示例代码
Feb 03 Python
尝试使用Python爬取城市租房信息
Apr 12 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
推荐一篇入门级的Class文章
2007/03/19 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
php实现每日签到功能
2018/11/29 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
JS实现可点击展开与关闭的左侧广告代码
2015/09/02 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
Opencv求取连通区域重心实例
2020/06/04 Python
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
《长城》教学反思
2014/02/14 职场文书
买卖协议书范本
2014/04/21 职场文书
党员志愿者活动方案
2014/08/28 职场文书
终止劳动合同协议书
2014/10/05 职场文书
2014年减负工作总结
2014/12/10 职场文书
关于感谢信的范文
2015/01/23 职场文书
党校毕业个人总结
2015/02/28 职场文书
任命通知范文
2015/04/21 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书
Python基本数据类型之字符串str
2021/07/21 Python
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers