详解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中Collection的使用小技巧
Aug 18 Python
python使用wmi模块获取windows下硬盘信息的方法
May 15 Python
python实现文件快照加密保护的方法
Jun 30 Python
通过Python来使用七牛云存储的方法详解
Aug 07 Python
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
Python内建函数之raw_input()与input()代码解析
Oct 26 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
Django 创建/删除用户的示例代码
Jul 24 Python
python画环形图的方法
Mar 25 Python
django创建css文件夹的具体方法
Jul 31 Python
10个顶级Python实用库推荐
Mar 04 Python
python读取pdf格式文档的实现代码
Apr 01 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
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
基于jquery的多功能软键盘插件
2012/07/25 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
深入探讨前端框架react
2015/12/09 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
Python and、or以及and-or语法总结
2015/04/14 Python
使用Python写个小监控
2016/01/27 Python
Python标准库sched模块使用指南
2017/07/06 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
公司JAVA开发面试题
2015/04/02 面试题
2014植树节活动总结
2014/03/11 职场文书
毕业生求职自荐书范文
2014/03/27 职场文书
素质教育标语
2014/06/27 职场文书
房屋认购协议书
2015/01/29 职场文书
神农溪导游词
2015/02/11 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python