本人之前在做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爬虫被检测到的 解决方法相关推荐

  1. python爬虫被检测频繁登录解决方法

    当爬虫遇到频繁登录 下方是对静态网页爬取的python代码(符合爬虫协议规定),注释阐释了我的思路以及碰到的一些问题 import requests from lxml import etree im ...

  2. python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...

    今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...

  3. Python 爬虫使用代理 IP 的正确方法

    代理 IP 是爬虫中非常常用的方法,可以避免因为频繁请求而被封禁.下面是 Python 爬虫使用代理 IP 的正确方法: 1. 选择可靠的代理 IP 供应商,购买或者免费使用代理 IP 列表. 2. ...

  4. dos系统不能安装python模块,无法使用pip命令安装python第三方库的原因及解决方法...

    再dos中无法使用pip,命令主要是没有发现这个命令.我们先找到这个命令的位置,一般是在python里面的scripts文件夹里面.我们可以把dos切换到对应的文件夹,再使用pip命令就可以了. 如果 ...

  5. python跳出双层for循环的解决方法

    转载 python跳出双层for循环的解决方法 一.问题描述 在二维数组的遍历中,我们经常使用双层for循环.在某些时候,我们并不需要遍历整个二维数组.当条件满足时就应该终止for循环.但是,直接在内 ...

  6. mac 安装 python mysqlclient 遇到的问题及解决方法

    mac 安装 python mysqlclient 遇到的问题及解决方法 参考文章: (1)mac 安装 python mysqlclient 遇到的问题及解决方法 (2)https://www.cn ...

  7. Python 报错 SyntaxError: invalid syntax 解决方法

    Python 报错 SyntaxError: invalid syntax 解决方法 参考文章: (1)Python 报错 SyntaxError: invalid syntax 解决方法 (2)ht ...

  8. 如何释放mysql连接资源_CI框架出现mysql数据库连接资源无法释放的解决方法

    本文实例分析了CI框架出现mysql数据库连接资源无法释放的解决方法.分享给大家供大家参考,具体如下: 使用ci框架提供的类查询数据: $this->load->database(); $ ...

  9. python报“IndentationError: unexpected indent“的解决方法

    python报"IndentationError: unexpected indent"的解决方法 参考文章: (1)python报"IndentationError: ...

最新文章

  1. java锁屏_JAVA设置桌面不锁屏设置
  2. 史上最详细阿里云Docker下载运行Zookeeper!!!!
  3. 从头编写 asp.net core 2.0 web api 基础框架 (2)
  4. Solr中的前缀和后缀匹配
  5. 考研编程练习----排名
  6. HTTP系列学习(笔记二):HTTPS与HTTP的区别在哪?
  7. 使用VSCode时,执行ng serve出错
  8. [做一个幸福的记号 忘了琐碎的烦恼]西兰花猪柳
  9. Photoshop 2020 for Mac(PS 2020)中英双版
  10. 自己定义了个一类似UISegment的东西
  11. ISO9001:2000标准的主要特点和要求(转载)
  12. ASIC与FPGA的最大区别是什么 可否相互替代
  13. import java.io 是什么意思_Java IO 详解
  14. smt贴片加工贴片机开机和贴片编程
  15. 思科ccnp现在出来工作有多少钱
  16. Ubuntu虚拟机实现与主机之间复制粘贴
  17. 关于音频采样率,音频帧率,每次采集多少字节的理解
  18. php生成带文字的二维码
  19. 19年恶意软件排行榜
  20. 线性代数 矩阵相似对角化的理解

热门文章

  1. Laravel中的env函数获取不到确定存在的配置
  2. java.util.concurrent.ExecutorService 接口 源码
  3. 分布式系统一致性协议--Paxos算法
  4. javascript--DOM概念
  5. C# 实现连连看功能
  6. CMU机器学习学院院长Tom Mitchell:计算机模拟人脑才刚刚起步
  7. VMmware安装VMware Tools问题解决
  8. ERROR: Could not open CONNECT tunnel
  9. PHP5.3安装Zend Guard Loader代替Zend Optimizer
  10. 甲骨文全面进军云计算市场