详解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压缩和解压缩zip文件
Feb 14 Python
python使用mailbox打印电子邮件的方法
Apr 30 Python
python从入门到精通(DAY 1)
Dec 20 Python
初学python的操作难点总结(新手必看篇)
Aug 03 Python
Python找出最小的K个数实例代码
Jan 04 Python
Python给你的头像加上圣诞帽
Jan 04 Python
Python assert语句的简单使用示例
Jul 28 Python
python Elasticsearch索引建立和数据的上传详解
Aug 04 Python
Django中自定义模型管理器(Manager)及方法
Sep 23 Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 Python
Python grpc超时机制代码示例
Sep 14 Python
PyMongo 查询数据的实现
Jun 28 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
两种php调用Java对象的方法
2006/10/09 PHP
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
PHP操作XML作为数据库的类
2010/12/19 PHP
提高PHP编程效率的方法
2013/11/07 PHP
php 删除cookie方法详解
2014/12/01 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
2017/09/07 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
js实现简单选项卡制作
2020/08/05 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
python标准算法实现数组全排列的方法
2015/03/17 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
django富文本编辑器的实现示例
2019/04/10 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
python滑块验证码的破解实现
2019/11/10 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
django正续或者倒序查库实例
2020/05/19 Python
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
校园招聘策划书
2014/01/09 职场文书
财务内勤岗位职责
2014/04/17 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
八荣八耻演讲稿
2014/09/15 职场文书