mitmproxy 调试 REST API

mitmproxy 是一个基于中间人攻击(Man-in-the-middle)原理的可解密HTTPS连接的网络调试工具。使用Python开发,跨平台,通过HTTP代理和安装mitmproxy的根证书在相应的设备上可实现查看SSL加密的HTTP连接,并且可修改连接信息,对调试分析REST API很有帮助,也可用来分析其他APP的接口数据格式。**手机安装证书时不能用火狐浏览器下载证书,要使用Chrome或系统自带浏览器。**因为火狐有自己的证书管理器,并不会调用系统证书安装程序,会安装到浏览器内部而不是系统。安装时要选择目标为WLAN或APP/VPN,当然安装两次分别选择最保险。也可以通过系统设置安装证书

mitmproxy 的特色就是它是一个基于命令行的程序,使用方式类似Vim,输入?可查看快捷键,鼠标单击和滚动也是支持的。界面简洁,操作流畅。可通过SSH远程使用。Linux平台和Mac平台可使用终端,但Windows终端不支持字符界面,可使用mitmweb 或者 Fiddler。

mitmproxy 支持连接上级代理,即Upstream proxy mode,不过-U参数已经被废弃,提示-U is deprecated, please use --mode upstream:SPEC instead,现在使用的方式是 --mode upstream:SPEC SPEC 就是上级代理,格式为http[s]://host[:port]

查看帮助命令如下:

mitmproxy --help
......
  --mode MODE, -m MODE  Mode can be "regular", "transparent", "socks5",
                        "reverse:SPEC", or "upstream:SPEC". For reverse and
                        upstream proxy modes, SPEC is host specification in
                        the form of "http[s]://host[:port]".
  --upstream-auth USER:PASS
                        Add HTTP Basic authentication to upstream proxy and
                        reverse proxy requests. Format: username:password.

通过使用上级代理,可以方便调试使用Google服务的APP。不是所有APP都可以通过这种方式调试,有些内置证书的,不走代理的APP不能通过这种方式看到网络请求。

扩展链接:
mitmproxy实践教程之调试 Android 上 HTTP流量

原文链接:https://marskid.net/2018/01/09/mitmproxy/