mitmproxy实现js拦截
mitmproxy主要功能:动态拦截和编辑HTTP数据包
网站屏蔽Selenium原理:Selenium在运行时会暴露一些特征字符串,网站通过调用JS进行检测,检测到特征字符串后进行屏蔽。
解决方案:通过mitmproxy拦截并修改请求,在网站调用JS前将请求拦截,一般这种JS是专门用来进行爬虫工具检测的,即使被拦截修改,也不会影响网站其他功能的正常调用
操作方法
1.搭建selenium代码
mitmproxy只是辅助工具,主体的程序代码需要自己先搭建好
2.安装mitmproxy
python直接安装:pip3 install mitmproxy
3.配置mitmproxy
找到mitmproxy-ca-cert.p12文件(一般在系统盘用户文件夹下有一个“.mitmproxy”的文件夹,在这里面),双击安装,主要点下一步就行了,可以自行百度这个文件的安装
4.通过mitmproxy运行js拦截
找到网站拦截selenium时调用的js
创建一个.py文件,编写拦截程序,比如叫proxy.py
TARGET_URL = ‘网站拦截时调用的js’
INJECT_TEXT = 'Object.defineProperties(navigator,{webdriver:{get:() => false}});
def response(flow):
if flow.request.url.startswith(TARGET_URL):
flow.response.text = INJECT_TEXT + flow.response.text
if ‘网站拦截时调用的js名.js’ in flow.request.url:
flow.response.text = flow.response.text + INJECT_TEXT
运行cmd,切换到proxy.py所在的文件夹,运行mitmdump -s proxy.py命令
注意:网站屏蔽调用的js可能会定期进行更换,所以运行前需要检查下js名称是否准确。
5.运行selenium程序,这时如果一切顺利,那么屏蔽功能已经被拦截了。