使用selenium框架的Python爬虫被检测到的 解决方法
本人之前在做X宝,X评,X团的爬虫项目时,均遇到了获取cookies这个重要的问题,而获取cookies的前提是实现用户登录,登陆的过程就不赘述了,相信大家都遇到了滑块,滚动条等反爬手段,(本人用webdriver破解),可大厂的技术团队还是给了我们一个更难解决的问题,就是通过js给webdriver请求响应错误信息。那我们的思考路线就是如何让这个js文件功能作废,本人使用的方法是通过 mitmproxy 蔽掉识别 webdriver 标识符的 js 文件。 首先下载mitproxy,pip安装方法:
pip install mitmproxy
基本使用方法:
给本机设置代理ip 127.0.0.1端口8001(为了让所有流量走mitmproxy)具体方法请百度。
2. 启动mitmproxy。
windows:
mitmdump -p 8001
Linux:
mitmproxy -p 8001
3. 打开chrome的开发者工具,找到目标网站是通过哪个js文件控制webdriver相应的, 如:
4. 开始写干扰脚本(DriverPass.py):
import re
from mitmproxy import ctxdef response(flow): if '/js/yoda.' in flow.request.url:for webdriver_key in ['webdriver', '__driver_evaluate', '__webdriver_evaluate', '__selenium_evaluate', '__fxdriver_evaluate', '__driver_unwrapped', '__webdriver_unwrapped', '__selenium_unwrapped', '__fxdriver_unwrapped', '_Selenium_IDE_Recorder', '_selenium', 'calledSelenium', '_WEBDRIVER_ELEM_CACHE', 'ChromeDriverw', 'driver-evaluate', 'webdriver-evaluate', 'selenium-evaluate', 'webdriverCommand', 'webdriver-evaluate-response', '__webdriverFunc', '__webdriver_script_fn', '__$webdriverAsyncExecutor', '__lastWatirAlert', '__lastWatirConfirm', '__lastWatirPrompt', '$chrome_asyncScriptInfo', '$cdc_asdjflasutopfhvcZLmcfl_' ]:ctx.log.info('Remove "{}" from {}.'.format(webdriver_key, flow.request.url)) flow.response.text = flow.response.text.replace('"{}"'.format(webdriver_key), '"NO-SUCH-ATTR"') flow.response.text = flow.response.text.replace('t.webdriver', 'false')flow.response.text = flow.response.text.replace('ChromeDriver', '')
5. 退出刚才的mitmproxy状态,重新用命令行启动mitmproxy干扰脚本 监听8001端口的请求与响应。
mitmdump -s DriverPass.py -p 8001
6. 现在别管mitmproxy,启动webdriver 顺利获得cookies。
使用selenium框架的Python爬虫被检测到的 解决方法相关推荐
- python爬虫被检测频繁登录解决方法
当爬虫遇到频繁登录 下方是对静态网页爬取的python代码(符合爬虫协议规定),注释阐释了我的思路以及碰到的一些问题 import requests from lxml import etree im ...
- python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...
今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...
- Python 爬虫使用代理 IP 的正确方法
代理 IP 是爬虫中非常常用的方法,可以避免因为频繁请求而被封禁.下面是 Python 爬虫使用代理 IP 的正确方法: 1. 选择可靠的代理 IP 供应商,购买或者免费使用代理 IP 列表. 2. ...
- dos系统不能安装python模块,无法使用pip命令安装python第三方库的原因及解决方法...
再dos中无法使用pip,命令主要是没有发现这个命令.我们先找到这个命令的位置,一般是在python里面的scripts文件夹里面.我们可以把dos切换到对应的文件夹,再使用pip命令就可以了. 如果 ...
- python跳出双层for循环的解决方法
转载 python跳出双层for循环的解决方法 一.问题描述 在二维数组的遍历中,我们经常使用双层for循环.在某些时候,我们并不需要遍历整个二维数组.当条件满足时就应该终止for循环.但是,直接在内 ...
- mac 安装 python mysqlclient 遇到的问题及解决方法
mac 安装 python mysqlclient 遇到的问题及解决方法 参考文章: (1)mac 安装 python mysqlclient 遇到的问题及解决方法 (2)https://www.cn ...
- Python 报错 SyntaxError: invalid syntax 解决方法
Python 报错 SyntaxError: invalid syntax 解决方法 参考文章: (1)Python 报错 SyntaxError: invalid syntax 解决方法 (2)ht ...
- 如何释放mysql连接资源_CI框架出现mysql数据库连接资源无法释放的解决方法
本文实例分析了CI框架出现mysql数据库连接资源无法释放的解决方法.分享给大家供大家参考,具体如下: 使用ci框架提供的类查询数据: $this->load->database(); $ ...
- python报“IndentationError: unexpected indent“的解决方法
python报"IndentationError: unexpected indent"的解决方法 参考文章: (1)python报"IndentationError: ...
最新文章
- java锁屏_JAVA设置桌面不锁屏设置
- 史上最详细阿里云Docker下载运行Zookeeper!!!!
- 从头编写 asp.net core 2.0 web api 基础框架 (2)
- Solr中的前缀和后缀匹配
- 考研编程练习----排名
- HTTP系列学习(笔记二):HTTPS与HTTP的区别在哪?
- 使用VSCode时,执行ng serve出错
- [做一个幸福的记号 忘了琐碎的烦恼]西兰花猪柳
- Photoshop 2020 for Mac(PS 2020)中英双版
- 自己定义了个一类似UISegment的东西
- ISO9001:2000标准的主要特点和要求(转载)
- ASIC与FPGA的最大区别是什么 可否相互替代
- import java.io 是什么意思_Java IO 详解
- smt贴片加工贴片机开机和贴片编程
- 思科ccnp现在出来工作有多少钱
- Ubuntu虚拟机实现与主机之间复制粘贴
- 关于音频采样率,音频帧率,每次采集多少字节的理解
- php生成带文字的二维码
- 19年恶意软件排行榜
- 线性代数 矩阵相似对角化的理解
热门文章
- Laravel中的env函数获取不到确定存在的配置
- java.util.concurrent.ExecutorService 接口 源码
- 分布式系统一致性协议--Paxos算法
- javascript--DOM概念
- C# 实现连连看功能
- CMU机器学习学院院长Tom Mitchell:计算机模拟人脑才刚刚起步
- VMmware安装VMware Tools问题解决
- ERROR: Could not open CONNECT tunnel
- PHP5.3安装Zend Guard Loader代替Zend Optimizer
- 甲骨文全面进军云计算市场