Mitmproxy 转发 Http 请求到 Https
我是从实习的时候开始使用 Mitmproxy 的,当时是为了 Debug APP 的 bug 才使用的。编写一个 python 小脚本将流量都转发到自己的 Server 上,对接口进行 Debug。
mitmproxy 叫做 man in the middle proxy,就是中间人代理的意思,一般的中间人攻击就可以利用这个软件,相似的软件还有 Burp Suite,是一个收费的软件,进官网下载免费版的就可以使用,有图形用户界面,功能也是相当强大,因为使用 Java 编写开发,有很好的跨平台能力。Windows 平台上有 Fiddler,功能也是很强大,不多说直接进入今天的正题。
环境介绍
一般开发有三种服务器,dev,beta,online。Android,iOS 发 Build 包一般都会指向测试服务器,但是你要做开发,或者 Debug 就要指向自己服务器,或者是线上服务器,不能总是麻烦他们,所以这时就需要一个代理来转发请求。
online 一般都是 Https,所以对于 https 还要做一些其他处理。
安装一个 Mitmproxy
不管是是什么平台只要安装好 python-pip,就可以直接安装 Mitmproxy
1 | pip install mitmproxy |
mitmproxy 会在~/.mitmproxy 目录下生成一个 mitmproxy-ca-cert.pem 证书。如果是对端开发,支持 https 就要安装自签证书。
1 | python -m SimpleHTTPServer 8888 |
手机访问 http://ip:8888 安装证书
1 | mitmproxy -p 3128 |
手机设置代理到 ip:3128,此时就能抓到 https 的数据包了。
自签证书
1 | openssl genrsa -out cert.key 2048 |
运行
1 | mitmproxy -p 3128 --cert=cert.pem |
Script 支持
转发一定少不了脚本支持
Example
1 | def request(context, flow): |
运行
1 | mitmproxy -s forward.py -p 3128 |