mitmproxy
顾名思义中间人代理【man-in-the-middle proxy】,和fiddler、Charles等工具类似,通过代理方式实现对http(s)的拦截
mitmproxy 不仅可以截获请求、帮助开发者查看、分析、更可以通过自定义脚本进行二次开发,修改爬虫行为;
mitmproxy的安装
参考https://cuiqingcai.com/5391.html
pip3 install mitmproxy
这是最简单和通用的安装方式,执行完毕之后即可完成mitmproxy的安装,另外还附带安装了mitmdump和mitmweb这两个组件。如果不想用这种方式安装,也可以选择后面列出的专门针对各个平台的安装方式或者Docker安装方式。
Windows下的安装
可以到GitHub上的Releases页面(链接为:https://github.com/mitmproxy/mitmproxy/releases/)获取安装包
证书配置
对于mitmproxy来说,如果想要截获HTTPS请求,就需要设置证书。mitmproxy在安装后会提供一套CA证书,只要客户端信任了mitmproxy提供的证书,就可以通过mitmproxy获取HTTPS请求的具体内容,否则mitmproxy是无法解析HTTPS请求的。
首先,运行以下命令产生CA证书,并启动mitmdump:
我们就可以在用户目录下的.mitmproxy目录里面找到CA证书
证书一共5个,表1-1简要说明了这5个证书。
mitmproxy-ca.pem |
PEM格式的证书私钥 |
mitmproxy-ca-cert.pem |
PEM格式证书,适用于大多数非Windows平台 |
mitmproxy-ca-cert.p12 |
PKCS12格式的证书,适用于Windows平台 |
mitmproxy-ca-cert.cer |
与mitmproxy-ca-cert.pem相同,只是改变了后缀,适用于部分Android平台 |
mitmproxy-dhparam.pem |
PEM格式的秘钥文件,用于增强SSL安全性 |
Windows下证书配置过程:
进入用户目录下的.mitmproxy,双击mitmproxy-ca.p12,按照引导一步步操作,不输入输入密码
在“选择证书的存储区域”时,点击第二个选项“将所有的证书都放入下列存储”,然后点击“浏览”按钮,选择证书存储位置为“受信任的根证书颁发机构”,接着点击“确定”按钮,然后点击“下一步”按钮。
启动 mitmproxy
(1) mitmweb
— 提供一个web界面;
— 代理端口:绑定了 *:8080作为代理端口;
— 交互界面地址:localhost:8081;
(2) mitmproxy
— 提供命令行界面;
— 可以通过命令过滤请求;
(3) mitmdump
— 【TODO】
部署手机与电脑配置
安装ca证书
第一步,将电脑和手机连到同一个 WiFi 中;
第二步,获取本机的内网IP地址;
第三步,给手机WiFi配置代理
第四步,安装证书
使用手机浏览器访问 mitm.it
对接python
import json
def response(flow):
url=’https://api.amemv.com/aweme/v1/aweme/post/’
#筛选出以上面url为开头的url
if flow.request.url.startswith(url):
text=flow.response.text
#将已编码的json字符串解码为python对象
data=json.loads(text)
print(data)
然后运行命令 mitmdump -s test.py
参考https://www.imooc.com/article/80382?block_id=tuijian_wz