详解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类方法__init__和__del__构造、析构过程分析
Mar 06 Python
python实现的DES加密算法和3DES加密算法实例
Jun 03 Python
Python实现保证只能运行一个脚本实例
Jun 24 Python
Python中str.format()详解
Mar 12 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
Feb 13 Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 Python
学生信息管理系统python版
Oct 17 Python
Python代码块及缓存机制原理详解
Dec 13 Python
python psutil监控进程实例
Dec 17 Python
django 数据库返回queryset实现封装为字典
May 19 Python
PyQt5 QDockWidget控件应用详解
Aug 12 Python
python​格式化字符串
Apr 20 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
Yii获取当前url和域名的方法
2015/06/08 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
PHP多进程编程实例详解
2017/07/19 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
基于JavaScript代码实现微信扫一扫下载APP
2015/12/30 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
JS中的三个循环小结
2017/06/20 Javascript
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
React事件处理的机制及原理
2018/12/03 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
python实现ipsec开权限实例
2014/11/11 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
python实现画循环圆
2019/11/23 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
adidas泰国官网:adidas TH
2020/07/11 全球购物
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
总经理职责范文
2013/11/08 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
六查六看剖析材料
2014/10/06 职场文书
整改报告格式
2014/11/06 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android