mitmproxy 是一款工具,也可以说是 python 的一个包,使用这个工具可以在命令行上进行抓包(现在也可以在web页面上查看上抓的数据包了),还可以对所抓到的包进行脚本处理,非常有用。
和 fiddler 或charles 等接口抓包工具相比,mitmproxy 不仅可以截获请求帮助开发者查看、分析接口报文,更可以通过自定义Python脚本进行二次开发, 获取更多的内容和能力。
比如,拦截 url 的请求,将返回内容置空,并将真实的返回内容存到数据库或者本地文件;拦截过程中出现异常时发出邮件通知;和反向代理一样,将指向某个服务地址的请求,转发到另外的服务器上。
下图,mitmproxy在网络请求中所处的位置,就能大致理解为什么可以做上面的内容了
安装
sudo pip3 install mitmproxy
运行
要启动 mitmproxy 用mitproxy, mitmdump, mitmweb, 建议用你mitmweb, 它提供了一个web页面,来查看拦截的请求, 运行mitmweb,会启动一个web服务和一个proxy服务,默认端口分别是8081和8080
访问Web Server,可以实时看到发生的请求,并通过 GUI 交互来过滤请求,查看请求数据
注:如果需要修改默认端口 ,通过--web-port和-p两个参数即可,比如web端口是8999,proxy端口是8899
mitmweb --web-port 8999 -p 8899
设置好后,在手机端或者浏览器里,设置代理地址是mitmproxy