mitmproxy 有 3 个核心工具:
mitmproxy- 控制台模式,提供一个控制台界面,可以实时查看发生的请求,并通过命令过滤请求,查看请求数据mitmdump- 命令行模式,提供了类似 tcpdump 的功能,可查看、记录和已编程的方式转换 HTTP 流量mitmweb- Web 模式,提供一个 Web 界面,可实时查看发生的请求,并通过 GUI 交互过滤请求、查看请求数据
这里只介绍 mitmproxy 工具的使用,其他 2 个工具使用方式类似。
运行 mitmproxy 工具
./mitmproxy --listen-host=0.0.0.0 -p 8080
其他的配置参数使用 ./mitmproxy --help 查看。
用户界面
客户端配置好代理后访问网站或使用 App,就可以在 mitmproxy 中拦截捕获请求了。
为了实验方便我们使用命令行来完成此次的实验。
首先开启另一个终端,输入以下命令:
$ curl --proxy http://127.0.0.1:8080 http://wttr.in$ curl --proxy http://127.0.0.1:8080 https://m.huanyuliren.cn -k

在 mimtproxy 控制台界面中可以观察到浏览记录:
一些常用的键位:
- 按
↑和↓可更换流。 - 按
ENTER可查看流的详细信息,详细信息有 3 个窗口:请求、响应和详细信息。 - 按
←和→可切换窗口查看信息。 - 按
q可退出当前视图。 - 按
z可清屏。 - 按
O可查看或修改配置。 - 按
o可进行排序。
其他的键位可以按 ? 查看。
最常用的键位为 : 可打开命令提示符,输入命令后按 ENTER 可执行命令。
先初步了解下命令模式的使用。
打开命令提示符输入 console.view.flow @focus 指令可打开目标流的详细信息视图。
想查看所有指令可使用 mitmproxy 工具加上 --commands 查看:
$ ./mitmproxy --commands# Start an isolated instance of Chrome that points to the currently# running proxy.browser.startcommands.history.add commandcommands.history.clearcommands.history.filter prefix# Get the entire command history.commands.history.get -> str[]commands.history.next -> strcommands.history.prev -> str# Spawn an external viewer for a flow request or response body based# on the detected MIME type. We use the mailcap system to find the# correct viewier, and fall back to the programs in $PAGER or $EDITOR# if necessary.console.bodyview flow part# Possible parts for console.bodyview.console.bodyview.options -> str[]...
