mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler、Charles的功能。除了命令行形式的控制台,mitmproxy还有两个关联组件:mitmdump和mitmweb。
mitmdump:它是mitmproxy的命令行接口,利用它我们可以对接Python脚本,用Python实现监听后的处理。
mitmweb:它是一个Web程序,通过它我们可以清楚观察mitmproxy捕获的请求。
mitmproxy使用:
终端键入:
$ mitmproxy --listen-host 电脑IP地址 -p 端口号
出现初始界面
手机连上手动代理后出现抓包信息
很好用的教程:https://greenrobot.me/devpost/how-to-debug-android-http-get-started/
这样就能使用mitmproxy抓到http请求了!
但是!这时会发现mitmproxy不仅抓不到https请求,而且还会阻断https请求!
解决办法:
启动mitmproxy之后,手机网页搜索mitm.it选择匹配的证书下载安装之后就能抓到https的请求了~
虽然只用了一句话就解决这个问题了,但是我试了好久~哭唧唧~这个mitm.it我尝试了好多次才能正常访问~不知道咋回事~
终于弄出来了,给自己呱唧呱唧!
接下来的问题就是,怎样能把想要的信息打印出来?
mitmdump提供了专门的日志输出功能,可以设定不同级别以不同颜色输出结果。ctx模块有log功能,调用不同的输出方法就可以输出不同颜色的结果,以方便我们做调试。
简单的尝试一下:
from mitmproxy import ctx def request(flow): flow.request.headers['User-Agent'] = 'MitmProxy' ctx.log.info(str(flow.request.headers)) flow.request.query["who"] = "baby!" ctx.log.warn(str(flow.request.query)) ctx.log.error(str(flow.request.headers))