详解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多线程编程(四):使用Lock互斥锁
Apr 05 Python
实例讲解Python设计模式编程之工厂方法模式的使用
Mar 02 Python
python sort、sort_index方法代码实例
Mar 28 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
Python基础学习之函数方法实例详解
Jun 18 Python
Django如何使用jwt获取用户信息
Apr 21 Python
给ubuntu18安装python3.7的详细教程
Jun 08 Python
python中逻辑与或(and、or)和按位与或异或(&、|、^)区别
Aug 05 Python
python 用pandas实现数据透视表功能
Dec 21 Python
python 实现IP子网计算
Feb 18 Python
Python语言内置数据类型
Feb 24 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结合ACCESS的跨库查询功能
2015/06/12 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
详解php几行代码实现CSV格式文件输出
2017/07/01 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
通过Python使用saltstack生成服务器资产清单
2016/03/01 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
python实现祝福弹窗效果
2019/04/07 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
天猫精选:上天猫,就够了
2016/09/21 全球购物
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
公司部门司机岗位职责
2014/01/03 职场文书
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
社区先进事迹材料
2014/05/19 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
大队委员竞选稿
2015/11/20 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
python脚本框架webpy的url映射详解
2021/11/20 Python