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 |