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  |