mitmproxy 简介
主要特色:Intercept HTTP & HTTPS requests and responses and modify them on the fly
使用python编写,可以在windows,Linux, Mac 下运行,这点比 fiddler 有优势。可以修改
报文内容,这点很不错。
1. 安装
参考 http://docs.mitmproxy.org/en/stable/install.html
1 | sudo dnf install -y python-pip python-devel libffi-devel openssl-devel libxml2-devel libxslt-devel libpng-devel libjpeg-devel |
2. 基本使用
mitmproxy -b a.b.c.d -p 8080
- -b bind address
- -p bind port
- -s “script.py –bar”, –script “script.py –bar” Run a script. Surround with quotes to pass script
1 | -b ADDR, --bind-address ADDR |
2.1 mitmproxy 界面操作
- ? 显示帮助信息
- i, j, k, l 上下左右,同 vi
- enter 进入具体报文
- tab 详细报文内容页面,显示标签调整
- E 导出报文内容
3. HTTPS
使用mitmproxy 最大的原因就是因为它可以对付https报文。
3.1 导入mitmproxy的 CA
参考 http://docs.mitmproxy.org/en/stable/certinstall.html
mitmproxy 的 CA 证书放在 ~/.mitmproxy 目录, 可以在不同设备中添加。
3.2 目标设备为Linux
☆ Google Chrome
设置 -> HTTPS/SSL -> 证书管理 -> 授权中心
☆ Firefox
没用Firefox,估计也类似。
然后设置浏览器使用mitmproxy代理即可。
3.3 目标设备为 Android
3.3.1 导入证书
adb push ~/.mitmproxy/mitmproxy-ca-cert.cer /sdcard/Download
设置 -> 安全 -> 证书存储 -> 从手机存储安装, 选择上传的CA证书。
3.3.2 设置代理
emulator 上可以通过下面的命令行,设置代理。
./emulator -avd 7.0_x86 -http-proxy http://a.b.c.d:8080
真实的设备上,据网络上的文章说,可以通过设置 APN来实现,没有测试。
3.3.3 启动 mitmproxy
mitmproxy -b a.b.c.d -p 8080
4. 透明模式
mitmproxy 支持透明部署,具体的方法可以参考下面的文章。
http://docs.mitmproxy.org/en/stable/transparent/linux.html
5. 修改报文内容
github 上有很多例子,这次没有需求,可以参考
https://github.com/mitmproxy/mitmproxy/tree/v0.18.2/examples
官方文档上给了个简单例子
1 | def response(flow): |
给http响应报文的头部添加一个 newheader 的字段。
6. socks 模式
–socks 作为 SOCKS5 proxy server
7. 总结
这里说到的内容非常少,mitmproxy这个工具还是很强大的。