安装
pip install mitmproxy
介绍
顾名思义,mitmproxy 就是用于 MITM 的 proxy,MITM 即中间人攻击(Man-in-the-middle attack)。用于中间人攻击的代理首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会适时的查、记录其截获的数据,或篡改数据,引发服务端或客户端特定的行为。
不同于 fiddler 或 wireshark 等抓包工具,mitmproxy 不仅可以截获请求帮助开发者查看、分析,更可以通过自定义脚本进行二次开发。举例来说,利用 fiddler 可以过滤出浏览器对某个特定 url 的请求,并查看、分析其数据,但实现不了高度定制化的需求,类似于:“截获对浏览器对该 url 的请求,将返回内容置空,并将真实的返回内容存到某个数据库,出现异常时发出邮件通知”。而对于 mitmproxy,这样的需求可以通过载入自定义 python 脚本轻松实现。
但 mitmproxy 并不会真的对无辜的人发起中间人攻击,由于 mitmproxy 工作在 HTTP 层,而当前 HTTPS 的普及让客户端拥有了检测并规避中间人攻击的能力,所以要让 mitmproxy 能够正常工作,必须要让客户端(APP 或浏览器)主动信任 mitmproxy 的 SSL 证书,或忽略证书异常,这也就意味着 APP 或浏览器是属于开发者本人的——显而易见,这不是在做黑产,而是在做开发或测试。
检查是否安装成功
mitmdump --version
运行
mitmproxy/mitmdump/mitmweb#三个命令任选一个Windows使用mitmweb
使用chrome走代理
cmd执行
"C:\Users\MSI-CN\AppData\Local\Google\Chrome\Application\chrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors
CA证书的配置
路径:C:\Users\MSI-CN.mitmproxy
发现有如下文件
双击mitmproxy-ca.p12进入导入证书的页面,点击“下一步”
一顿傻瓜式操作到这个界面
直接下一页,不要设密码
选择“将所有的证书都放入下列存储”,接着选择“受信任的根证书颁发机构”
如果有弹窗警告,选择"是"
指定python脚本
mitmdump -p 8080 -s C:\Users\MSI-CN\Desktop\test.py
保存截获数据
mitmdump -w test.tx