一、介绍
mitmproxy是一组工具,可为HTTP/1,HTTP/2和WebSockets提供交互式的,具有SSL/TLS功能的拦截代理。
二、特征
- 拦截
HTTP和HTTPS请求和响应并即时修改它们; - 保存完整的
HTTP对话以供以后重播和分析; - 重播
HTTP对话的客户端; - 重播先前记录的服务器的
HTTP响应; - 反向代理模式将流量转发到指定的服务器;
macOS和Linux上的透明代理模式;- 使用
Python对HTTP流量进行脚本化更改; - 即时生成用于拦截的
SSL/TLS证书 - 查看更多……
三、3个强大的核心工具
mitmproxy项目的工具是一组暴露通用底层功能的前端。当我们谈论“ mitmproxy”时,我们通常指的是这三种工具中的任何一种-它们只是同一核心代理的不同前端。
-
mitmproxy是具有SSL/TLS功能的交互式拦截侦听代理,具有用于HTTP/1,HTTP/2和WebSockets的控制台界面。 mitmweb是用于mitmproxy的基于Web的界面。mitmdump是mitmproxy的命令行版本。将tcpdump用于HTTP。
分发包可以在mitmproxy网站上找到。开发信息和我们的源代码可以在我们的GitHub中找到 。
1、mitmproxy

mitmproxy是一个控制台工具,它允许交互式检查和修改HTTP流量。它与mitmdump的不同之处在于所有流都保存在内存中,这意味着它旨在获取和处理小样本。使用?快捷键可在任何mitmproxy屏幕上查看上下文相关的文档。
2、mitmweb

mitmweb是mitmproxy基于Web的用户界面,它允许交互式检查和修改HTTP流量。像mitmproxy一样,它与mitmdump的不同之处在于所有流都保存在内存中,这意味着它旨在获取和处理小样本。
Mitmweb目前处于测试阶段。我们认为它对于UI中当前公开的所有功能都稳定,但是仍然缺少许多mitmproxy的功能。
3、mitmdump
mitmdump是mitmproxy的命令行伴侣。它提供了类似tcpdump的功能,可让您查看,记录和以编程方式转换HTTP流量。请参阅--help标志输出以获取完整的文档。
a、示例:保存日志
mitmdump -w outfile
以代理模式启动mitmdump,并将所有日志写入outfile。
b、过滤保存的请求
mitmdump -nr infile -w outfile "~m post"
在不绑定代理端口(-n)的情况下启动mitmdump,从infile中读取所有流,应用指定的过滤器表达式(仅匹配POST),然后写入outfile。
c、客户端重播
mitmdump -nC outfile
启动mitmdump而不绑定到代理端口(-n),然后重播outfile(-C filename)中的所有请求。标志以明显的方式组合,因此您可以重播来自一个文件的请求,并将结果流写入另一个文件:
mitmdump -nC srcfile -w dstfile
有关更多信息,请参见客户端重播。
d、运行脚本
mitmdump -s examples/simple/add_header.py
这将运行add_header.py示例脚本,该脚本仅向所有响应添加新的header。
e、脚本化数据转换
mitmdump -ns examples/simple/add_header.py -r srcfile -w dstfile
此命令从srcfile加载流,根据指定的脚本对其进行转换,然后将其写回到dstfile。