详解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处理圆角图片、圆形图片的例子
Apr 25 Python
使用Flask集成bootstrap的方法
Jul 24 Python
python中强大的format函数实例详解
Dec 05 Python
python列表list保留顺序去重的实例
Dec 14 Python
python实现nao机器人手臂动作控制
Apr 29 Python
python tkinter控件布局项目实例
Nov 04 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 10 Python
Django在Model保存前记录日志实例
May 14 Python
python上selenium的弹框操作实现
Jul 13 Python
Django URL参数Template反向解析
Nov 24 Python
Python常用GUI框架原理解析汇总
Dec 07 Python
python使用shell脚本创建kafka连接器
Apr 29 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
一个好用的分页函数
2006/11/16 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
js获取内联样式的方法
2015/01/27 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
JavaScript数组方法大全(推荐)
2016/07/05 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
python实现给数组按片赋值的方法
2015/07/28 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
python 格式化输出百分号的方法
2019/01/20 Python
python队列Queue的详解
2019/05/10 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
如何利用python 读取配置文件
2021/01/06 Python
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
幼儿园教师考核制度
2014/02/01 职场文书
歌舞青春观后感
2015/06/10 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
Python机器学习之基础概述
2021/05/19 Python