最顶  

Mitmproxy:完全手册

您是否曾觉得需要一个放大镜来观察网络流量?

认识 Mitmproxy。 

这款开源强大工具可让您拦截、修改和分析 HTTP/1、HTTP/2 和 WebSocket 流量。它非常适合网络开发人员、网络管理员和理想的安全专业人员使用。 

本文涵盖了关于 Mitmproxy 的所有必要知识(如果您是初学者)。 它概述了该服务的优缺点、安装步骤、基本用法以及 SSL/TLS 设置、Python 自动化和 Docker 集成等高级功能。

mitmproxy

免责声明: 免责声明:本材料仅供参考。它并不构成对任何活动(包括非法活动)、产品或服务的认可。在使用我们的服务或依赖此处的任何信息时,您全权负责遵守适用的法律,包括知识产权法。对于因以任何方式使用我们的服务或此处包含的信息而造成的损害,我们不承担任何责任,除非法律明确要求。

目录

  1. Mitmproxy 概述
    • 它是什么?
    • 优点和缺点
    • Mitmproxy 使用案例
  2. 如何安装 Mitmproxy(分步指南)
    • Windows
    • 利纳克斯
    • MacOS
  3. Mitmproxy 入门
    • 启动 Mitmproxy
    • 配置浏览器或设备
    • 验证配置
  4. 如何使用 Mitmproxy
  5. 使用 Mitmproxy 可以做的更多事情
    • 使用网络界面
    • 使用 Mitmdump
    • 设置 SSL/TLS 证书
    • 使用 Python 自动执行任务
    • 在 Docker 中运行 Mitmproxy
  6. 常见问题部分
  7. 结语。

1.Mitmproxy 概述

Mitmproxy is an open-source powerful toolset for intercepting, modifying, and analyzing network traffic (specifically HTTP/1, HTTP/2, and WebSockets). It’s an SSL/TLS-capable intercepting proxy. It is perfect for debugging, testing, and security assessments. 它有三种口味,可以满足您的各种需求:

  • Mitmproxy: 互动控制台可让您详细了解流量拦截情况。
  • Mitmweb: 简单易用的网络界面,看起来和感觉就像 Chrome 浏览器的 DevTools。
  • Mitmdump: 一种命令行工具,与 tcpdump 类似,用于编写脚本和实现自动化。

Mitmproxy 是什么意思? 

词的第一部分 -> MitM(中间人)是一个网络安全术语,指一种攻击或技术。在这种情况下,攻击者会秘密拦截并可能篡改双方之间的通信,而双方都认为自己是在直接通信。代理"(或中间人)的另一面是指客户端和服务器之间的中介。它允许用户拦截、检查和修改网络通信。 Mitmproxy 使用了这一概念,但使用的方式是可控的、符合道德规范的。

Mitmproxy 优点和缺点

每种工具都有其优缺点,这款工具也不例外。 在本节中,我们将深入探讨使用它的主要优势和可能存在的隐患。 这将帮助您确定它是否完全符合您的需求。 

Pros 优点Cons 缺点
互动式交通拦截和分析: 实时捕获、修改和回放 HTTP/HTTPS 流量。陡峭的学习曲线 要求具备网络和证书方面的知识。
SSL/TLS 功能: 为安全拦截生成 SSL/TLS 证书。命令行驱动 对于图形用户界面用户来说,依赖 CLI 可能具有挑战性。
双接口和高级过滤: CLI 和网络界面 (mitmweb) 具有强大的过滤选项。资源密集型: 大流量计算需求高。
脚本、自动化和自定义插件: 用于自定义脚本和附加组件的 Python API。兼容性问题: 某些应用程序和复杂设置的问题。
跨平台支持 适用于 Windows、Linux 和 macOS。安全风险: 需要严格的安全措施来避免攻击。
自由与开源: 社区支持下的无障碍环境。手动配置: Docker 和云环境的复杂设置。

推荐用于哪些用途?Mitmproxy 使用案例举例

  • 调试应用程序 使用 Mitmproxy 捕捉并分析 HTTP 请求和响应。这有助于找出响应缓慢或有效载荷过大的问题,从而解决延迟问题。截获流量以查看发送和接收的数据也有助于调试与数据相关的问题。此外,它还有助于模拟各种服务器响应,查看应用程序如何处理错误。
  • 渗透测试。 利用 Mitmproxy,您可以捕获并调整 HTTP/HTTPS 流量,模拟攻击(如 SQL 注入、XSS)并识别漏洞。此外,您还可以记录和调整合法流量,以测试重放攻击和会话固定等弱点。在这方面,Mitmproxy 还可以帮助拦截加密流量,以验证证书处理、加密标准和 HTTPS 整体安全性。
  • 隐私测量。 Mitmproxy 可用于捕获和检查流量,确保敏感信息不被泄露。您还可以用它来验证数据处理和传输是否符合 GDPR 等隐私法规。人们还用它来分析第三方服务。分析应用程序与第三方服务之间的流量,确保它们不会收集不必要的数据。

2.如何安装 Mitmproxy(分步指南)

a.视窗:分步安装指南

  • 下载安装程序官方网站.
  • 运行安装程序: 执行下载的文件,并按照屏幕上的说明完成安装。
安装 mitmproxy
  • 验证安装: 打开命令提示符并键入 mitmproxy、mitmweb 或 mitmdump 以验证安装。如果工具正确启动,说明安装成功。但仍然无法捕获流量。
mitmproxy 仪表板

b.Linux使用软件包管理器和源码安装

要在 Linux 上安装 Mitmproxy,可以使用软件包管理器或从源代码安装。 

使用软件包管理器

您可以下载特定发行版的独立二进制文件(访问 官方网站 来查找这些二进制文件),或者使用每个发行版各自的软件包管理器。这两种方法都提供了预编译的二进制文件,简化了 mitmproxy 的安装。此外,软件包管理器还提供自动的依赖关系管理和更新。

Arch Linux

Fedora

Debian/Ubuntu:

设置 mitmproxy

源安装:

如果你愿意,也可以从源代码中安装。所有说明如下。 

安装依赖项并构建

使用 pipx 进行 Python 软件包管理

安装 pipx

安装 mitmproxy:

c. macOS:通过 Homebrew 安装

前提条件:安装 Homebrew:如果您尚未安装 Homebrew,请按照以下说明进行安装 自制啤酒官方网站.

安装 mitmproxy:

mitmproxy 设置

验证安装: 

打开终端并键入 mitmproxy、mitmweb 或 mitmdump 以验证安装。

mitmproxy UI

Mitmproxy 用户正在寻求可扩展性和性能? 

Rapidseedbox 如何提供帮助?

高流量处理
保证正常运行时间
触达全球
增强匿名性
---

3.Mitmproxy 入门。

在您的平台上安装后,就是使用它的时候了。在本节中,我们将学习基本配置和设置、基本命令以及如何在不同设备和浏览器上进行设置。 

注意: 默认情况下,Mitmproxy 会启动一个 Proxy HTTP.它还能收听 http://localhost:8080。

a.启动 Mitmproxy:

  • (如上一节所示)打开终端,输入 "mitmproxy "启动命令行界面。mitmproxy 界面应如下截图所示:
mitmproxy UI
  • 键入 "mitmweb "启动网络界面。它将自动启动(如下截图所示)。 
  • 如果无法启动,请打开浏览器,进入 http://localhost:8081。
安装 mitmproxy
  • Mitmdump: 键入 mitmdump 可使用命令行工具编写脚本。
安装 mitmproxy

排除故障!

如果您看到以下一行 "[12:10:38.265] mitmproxy 证书授权已过期! 做到以下几点...

此错误信息表明 Mitmproxy 证书授权(CA)已过期。要解决这个问题,请删除 .mitmproxy 文件夹中与 CA 相关的文件,以便生成新的 CA。删除过期的 CA 文件后,工具会在重启时自动重新生成新的 CA。 

以下是解决此问题的步骤:

删除 CA 相关文件:

重新启动 Mitmproxy:

安装 mitmproxy

b.配置浏览器或设备。

要使用它,请将浏览器或设备设置为通过 Mitmproxy 接收所有流量。您可以在谷歌浏览器、火狐浏览器、微软Edge浏览器或iOS(iPhone/iPad)或安卓等设备上设置代理。但请注意,不同浏览器和设备的代理配置会有所不同。 

设置 HTTP 代理:

  • 打开浏览器或设备网络设置。不知道什么是 HTTP 代理?在此阅读更多 (HTTP 代理服务器)的不同之处,并从 SOCKS5 代理服务器.
  • 查找代理设置(通常可在高级设置或连接设置下找到)。
  • 将 Web HTTP 代理 (1) 设置为 http://localhost:8080 或 127.0.0.1:8080 (2),然后单击确定 (3)。 
配置 CA

安装 Mitmproxy CA。

  • 打开浏览器,导航至 http://mitm.it.您将看到一个页面,指示您安装 Mitmproxy 证书管理机构 (CA)。
  • 找到相应的平台并下载证书。如果下载失败......请按照该平台上的说明进行操作。  http://mitm.it page.
配置 mitmproxy CA 证书
照片由官方网站提供
  • 您可以通过检查系统证书来验证 mtimproxy CA 证书是否已安装。
  • 对于 macOS,请进入 "钥匙串访问">"证书"。确保 SSL 设置为 "始终信任"。
验证 mtimproxy CA 证书

无法通过 Mitmproxy 路由网络流量? 

  • 如果在打开网页 (http://mitm.it如果您看到以下信息 "If you can see this, traffic is not passing through mitmproxy"(如果您看到此信息,则流量未通过 mitmproxy),这意味着您的网络流量未被 mitmproxy 拦截。
  • 这很可能是因为您没有正确设置代理服务器配置(在浏览器或设备上)。此外,请确保 mitmproxy 设置正确并正在运行。然后再试一次。 
图片来源:mitm.it

c.验证配置。

  • 打开终端,使用以下命令启动服务:mitmproxy
  • 一旦启动(如果配置正确),就会看到终端接收 HTTP 和 WSS 流量。 
mitmproxy 捕捉 HTTP 和 WSS 流量

4.如何使用 Mitmproxy。

界面显示以下信息 

  • 流量部分: 屏幕的主要部分显示截获的 HTTP 和 WebSocket 流量列表。每一行代表一个 HTTP/WebSocket 请求和响应。
  • 专栏
    • 时间:显示捕获请求的时间。
    • 协议:表示所使用的协议(如 HTTP、表示 WebSocket 的 WS)。
    • 方法:使用的 HTTP 方法(如 GET)。
    • 主机和路径:请求的目标主机和路径。
    • 状态代码:服务器返回的 HTTP 状态代码。
    • 内容:显示回复是否有内容。
    • 持续时间:处理请求所需的时间(毫秒)。

详细流程信息

  • 选定流程: 在底部,您可以看到所选流量的数量和一个小菜单
    • 流动: 表示所选流量的数量。
    • 代理: 显示活动代理配置。
    • 其他选择 您可以使用 o(选项)、e(事件)、q(退出)等按键和其他各种命令与流程进行交互。(下文将详细介绍)
mitmproxy 用户界面
  • 检查流量:
    • 使用箭头键浏览流量列表。您将看到一个">>"符号在流量列表中上下移动。 
    • 按 Enter 键可详细查看特定流程。这样就可以查看头、内容以及有关请求和响应的其他信息。
    • 例如,我们选择了主机为 mitm.it 的流量。在该部分中,您将看到有关标头的所有信息。此外,您还可以在选项卡中移动:请求、响应和其他详细信息。
mitmproxy UI
  • 过滤流量: 按 f 键并输入过滤条件(如特定主机名或请求类型),即可过滤流量。
  • 例如,我们使用过滤器键入 "mitm.it",现在只能看到 mitm.it 主机。 
了解 Midmproxy 接口
  • 选项和配置: 按 o 打开选项菜单,在这里可以配置 Mitmproxy 的各种设置。这些选项包括方法、大小、时间和 URL。
使用 mitmproxy

Mitmproxy 的底部菜单选项

  • 在界面中,底部菜单提供了各种选项,用于与捕获的流量进行交互并配置 Mitmproxy 设置。
mitmproxy 用户界面

下面将详细解释底部菜单上显示的所有选项:

  • 流动: 选择当前高亮显示的流程进行详细检查或操作。
  • 选择: 允许您选择多个流程进行批量操作。
  • 帮助: 访问使用 Mitmproxy 的帮助和文档。
  • q 退出: 退出会话。
  • r 重播: 重放选定的 HTTP 请求。
  • E 活动: 查看 Mitmproxy 的事件日志,其中包括重要信息和错误。
  • 出口: 将选定的流量导出到文件,以便日后分析或共享。
  • 选项: 打开选项菜单配置设置。
  • d 删除: 从列表中删除所选流量。
  • i 拦截: 拦截请求,以便在将请求转发给服务器之前对其进行修改或检查。
  • 马克 标记流量以执行批量操作,如删除或导出。
  • 过滤器 应用筛选器,根据主机、方法或状态代码等标准只查看特定流量。
  • e 编辑: 编辑所选流程的请求或响应。
  • b 保存身体: 将所选流程的正文保存到文件中。
  • z 清除列表: 清除列表中的所有流量。
  • 节省流量: 将捕捉到的所有数据流保存到文件中。
  • 更改布局: 在界面中切换不同的布局模式。
  • 按 Ctrl+F 查找新内容: 自动跟踪并突出显示捕捉到的新流量。

使用 Mitmproxy 时需要更多帮助? 

查看帮助:在 mitmproxy 界面中按下"?

使用 mitmproxy

下一步是什么? 

现在,您已经掌握了开始使用 Mitmproxy 的知识。接下来该做什么呢? 

  • 开始捕捉: 当流量流经 Mitmproxy 时,您将实时看到 HTTP(或 WSS)请求和响应。您可以使用界面即时检查和修改它们。
  • 分析流量: 在捕获的流量中查找模式、异常或特定数据。通过该工具,您可以对每个请求和响应进行细致入微的分析。

5.使用 Mitmproxy 可以做的更多事情

Mitmproxy 不仅仅是一个简单的网络流量拦截器,您还可以用这个神奇的工具做更多的事情。下面是您可以用这个工具做的另外五件很酷的事情。

a.使用网络界面。

使用内置的基于网络的图形用户界面,可以更轻松地进行流量分析和操作。如何启动? 

  • 启动 mitmweb: mitmweb
  • 打开网络界面: 在浏览器中访问 http://localhost:8081。

b.使用 Mitmdump。

Mitmdump 随 Mitmproxy 安装一起提供。这是一款非交互式命令行工具,设计用于编写脚本和实现自动化。

  • 启动 mitmdump: mitmdump
  • 将流量保存到文件: mitmdump -w outfile
  • 过滤和重放流量: mitmdump -nr infile -w outfile "~m post"

c.设置 SSL/TLS 证书

Traffic Interception isn’t complete without handling encrypted traffic. Mitmproxy simplifies SSL/TLS certificate setup so you can peek into HTTPS traffic seamlessly. How to do this? 

  • 该服务会创建 CA 证书,您将用它来签署拦截的流量。
  • 在浏览器中导航至 http://mitm.it,然后按照说明在设备上安装 CA 证书。 
  • 安装 CA 证书后,Mitmproxy 将解密 HTTPS 流量,使您可以像检查、修改和分析未加密 HTTP 流量一样检查、修改和分析安全通信。

d.使用 Python 自动执行任务

让您的流量分析更上一层楼。Mitmproxy 的 Python API 可让您自动执行任务并自定义流量处理。

  • 使用 Python 编写自定义插件,扩展工具的功能。例如,您可以自动修改请求或记录特定的流量模式。
  • 通过 Python API,您可以完全控制拦截的流量。修改报头、改变请求路径,甚至根据自定义逻辑阻止特定请求。

e.在 Docker 中运行 Mitmproxy

您会很高兴知道 Mimtproxy 受 Docker 支持(如果您喜欢容器环境)。Docker 中的 Mitmproxy 可以很好地集成到现代开发工作流程中。

  • 拉取 Docker 映像:从 DockerHub 下载官方镜像:docker pull mitmproxy/mitmproxy
  • 在容器中运行: docker run -rm -it -p 8080:8080 mitmproxy/mitmproxy

6.常见问题部分。

1.如何使用 Mitmproxy 拦截 HTTP/HTTPS 请求? 

要拦截 HTTP/HTTPS 请求,请将浏览器或设备配置为使用 Mitmproxy 作为代理。在终端中启动它,它就会开始捕获通过它的所有流量。然后,您就可以随时检查和修改这些请求了。更多信息请参阅本帖前面的章节。 

2.Mitmproxy 能否处理大量网络流量? 

是的,Mitmproxy 可以处理大量的网络流量。不过,对于非常大的流量,我们建议确保您的硬件支持负载。该工具提供各种选项来优化性能和有效管理流量。

3.Mitmproxy 如何管理 SSL/TLS 证书? 

Mitmproxy 会生成证书颁发机构 (CA) 证书,您需要将其安装到设备上。这样 Mitmproxy 就能拦截和解密 HTTPS 流量。CA 证书用于即时签署其他证书。这样,截获的流量就会在浏览器或应用程序中显示为可信流量。

4.使用 Mitmproxy 安全吗? 

Mitmproxy 是安全的(如果使用得当)。最佳做法是确保生成的 CA 证书只用于受信任的设备和环境。始终将 Mitmproxy 更新到最新版本,以便从安全补丁和改进中获益。最重要的是,请始终牢记,拦截流量只能以道德和合法的方式进行。

5.Mitmproxy 能否用于不同的托管环境和服务器? 

当然可以。Mitmproxy 兼容各种托管环境和服务器。您可以在本地服务器、云环境甚至 Docker 容器中进行设置。 

6.如何在 Docker 容器中运行 Mitmproxy? 

要在 Docker 中运行 Mitmproxy,请使用 "docker pull mitmproxy/mitmproxy "命令从 DockerHub 提取 Mitmproxy 的官方镜像。然后,用 docker run -rm -it -p 8080:8080 mitmproxy/mitmproxy 启动一个容器。这种设置可以让你在容器环境中拦截流量。这非常适合与现代 DevOps 工作流程集成。

7.如何使用 Mitmproxy API 进行自定义流量操作? 

Mitmproxy 提供功能强大的 Python API,允许您编写用于流量操作的自定义脚本。利用该 API,您可以自动执行任务、修改请求和响应,并实现复杂的逻辑。要开始使用,请编写脚本并运行 Mitmproxy,在脚本路径后加上 -s 标志。

8.Mitmproxy 能否用于网络搜索? 

是的,Mitmproxy 是一款完美的网络搜索工具。通过它,您可以捕捉和修改网络流量,从而更轻松地从网页中提取数据。通过分析 HTTP 请求和响应,您可以更有效地自动收集数据。

9.Mitmproxy 的 TLS/SSL 配置流程是什么? 

要在 Mitmproxy 中配置 TLS/SSL,您需要在设备上启动 CA 证书。这样 Mitmproxy 就能解密 HTTPS 流量。配置客户端以信任 CA 证书,从而确保安全无缝地截获加密流量。

10.Mitmproxy 有哪些替代或类似工具?

如果您正在探索 Mitmproxy 的替代方案(或类似工具),请考虑以下几点: 

  • Fiddler 具有友好的用户界面和强大的网络会话调试功能
  • 查尔斯代理 的 SSL 代理和带宽节流功能
  • 用于全面网络应用程序安全测试的 Burp 套件。 
  • OWASP ZAP 提供开源安全测试工具
  • Wireshark 提供详细的网络协议分析
  • Proxyman 为网络流量调试提供现代化界面
  • HTTP Toolkit 通过引导式设置简化了 HTTP(S) 流量的拦截和调试。

7.最后的话

我们对 Mitmproxy 的特性和功能进行了 "肤浅 "的探讨。这篇文章的指南只涵盖了这一神奇工具的冰山一角。 

在本指南中,我们介绍了不同操作系统的安装步骤、基本设置和使用方法。此外,我们还深入探讨了 SSL/TLS 拦截、Python 自动化和 Docker 集成等高级功能。 

我们希望,有了这些知识,您就能充分利用 Mitmproxy 进行网络流量分析和操作。

您认为自己了解交通管理吗? 

但您尝试过使用 RapidSeedbox 吗? 

高速稳定
高流量处理
保证正常运行时间
地理覆盖范围
安全和匿名
---

关于作者 Diego Asturias

Diego Asturias的头像

Diego Asturias是一位科技记者,将复杂的技术术语转化为引人入胜的内容。他拥有美国华盛顿特区的互联网技术学位,并获得了思科、麦克菲和Wireshark的技术认证。他在拉丁美洲、韩国和西非拥有实际工作经验。他的作品曾出现在SiliconANGLE Media、Cloudbric、Pcwdld、Hackernoon、ITT Systems、SecurityGladiators、Rapidseedbox等媒体上。

加入 40K+ 新闻通讯订阅者行列

定期获取有关 Seedbox 使用案例、技术指南、代理服务器以及 隐私/安全提示。

把你的想法说出来

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注