mitmproxy一个交互式的TLS拦截的HTTP代理

mitmproxy


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 的控制台界面。

mitmdump 是 mitmproxy 的命令行版本。类似于 HTTP 版的 tcpdump。

mitmweb 是 mitmproxy 的 Web 界面。

可以在 mitmproxy 网站上找到分发包。开发信息和源代码可以在我们的 GitHub 代码库中找到。

mitmproxy

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


mitmweb

mitmweb 是 mitmproxy 的基于 Web 的用户界面,允许交互式地检查和修改 HTTP 流量。与 mitmproxy 类似,它与 mitmdump 的不同之处在于,所有流量都保存在内存中,这意味着它旨在用于获取和处理较小规模的样本。

Mitmweb 目前处于测试阶段。我们认为它目前在 UI 中展示的所有功能都已稳定,但仍缺少许多 mitmproxy 的功能。


mitmdump

mitmdump 是 mitmproxy 的命令行伴侣。它提供类似 tcpdump 的功能,让您可以查看、记录并以编程方式转换 HTTP 流量。完整文档请参见 --help 参数的输出。

示例:保存流量

language 复制代码
mitmdump -w outfile

以代理模式启动 mitmdump,并将所有流量写入 outfile。

过滤已保存的流量

language 复制代码
mitmdump -nr infile -w outfile "~m post"

启动 mitmdump 但不绑定代理端口 (-n),从 infile 读取所有流量,应用指定的过滤表达式(仅匹配 POST 请求),然后写入 outfile。

客户端重放

language 复制代码
mitmdump -nC outfile

启动 mitmdump 但不绑定代理端口 (-n),然后重放 outfile 中的所有请求(-C 文件名)。标志以显而易见的方式组合,因此您可以从一个文件重放请求,并将生成的流写入另一个文件:

language 复制代码
mitmdump -nC srcfile -w dstfile

有关更多信息,请参阅客户端重放部分。

运行脚本

language 复制代码
mitmdump -s examples/simple/add_header.py

这将运行 add_header.py 示例脚本,该脚本只会向所有响应添加新的标头。

脚本化数据转换

language 复制代码
mitmdump -ns examples/simple/add_header.py -r srcfile -w dstfile

此命令从 srcfile 加载流,根据指定的脚本对其进行转换,然后将其写回 dstfile。

更多教程

官方文档

关于项目

mitmproxy 面向渗透测试人员和软件开发人员的,为 HTTP/1、HTTP/2 和 WebSockets 提供交互式、支持 SSL/TLS 的拦截代理。
MIT
Python
40,823
4326
628
2010-02-16
2025-10-10

增长趋势 - stars