当前位置: 首页 > article >正文

mitmproxy配合Wireshark 抓包分析

Mitmproxy 是一款非常强大的 交互式 HTTP 代理 工具,它被广泛应用于 Web 开发、API 调试、安全测试 等领域。与 Wireshark 侧重于被动监听网络流量不同,Mitmproxy 更像一个 主动的中间人,可以拦截、检查、修改和重放 HTTP/HTTPS 流量,让你能够更深入地理解和控制你的网络通信。

一、什么是 mitmproxy?

Mitmproxy 是一个 自由且开源的交互式 TLS 拦截代理。 “中间人 (Man-in-the-Middle - MITM)” 这个词已经暗示了它的核心功能:它充当客户端和服务器之间的中间人,拦截双方的通信流量。 “代理 (Proxy)” 说明了它的工作方式:你需要配置你的客户端(例如浏览器、应用程序)使用 mitmproxy 作为 HTTP 代理,所有经过代理的流量都会被 mitmproxy 捕获和处理。

二、Mitmproxy 的主要特点和优势:

  • 交互式拦截和检查: Mitmproxy 最突出的特点就是它的 交互性。 当请求经过 mitmproxy 时,你可以 暂停请求流程,检查请求的详细信息 (例如 Headers, Body),甚至可以 修改 请求的内容,然后再让请求继续发送到服务器。 同样,对于服务器的响应,你也可以拦截、检查和修改。 这种交互式的操作方式对于调试和测试非常方便。

  • TLS/SSL 拦截 (HTTPS 支持): Mitmproxy 可以 透明地拦截和解密 HTTPS 流量。 这得益于它能够动态生成和管理 SSL/TLS 证书。 你可以查看 HTTPS 加密流量的明文内容,进行深入分析和调试。 对于开发者来说,这使得调试 HTTPS 应用变得和调试 HTTP 应用一样方便。

  • 强大的脚本化能力 (Python): Mitmproxy 使用 Python 脚本作为其插件系统 (addons)。 你可以使用 Python 编写脚本来 自动化处理各种任务,例如:

    • 自定义流量修改规则: 根据特定条件自动修改请求或响应的 Headers, Body 等。
    • 自定义协议处理逻辑: 扩展 mitmproxy 以支持新的协议或自定义协议的解析和处理。
    • 集成到自动化测试流程: 使用脚本驱动 mitmproxy 进行自动化 API 测试、性能测试、安全测试等。
    • 数据导出和报表生成: 使用脚本将捕获的流量数据导出到文件或数据库,并生成自定义报表。
  • 多种用户界面: Mitmproxy 提供了多种用户界面,满足不同用户的需求:

    • mitmproxy (命令行界面): 纯命令行界面,适合服务器环境或脚本自动化,功能完整,效率高。
    • mitmweb (Web 用户界面): 基于 Web 浏览器的图形用户界面,操作直观友好,更适合交互式操作和手动分析。
    • mitmdump (非交互式命令行工具): 用于非交互式地抓包和保存流量数据,例如用于自动化抓包或长时间监控。
  • 请求和响应修改: Mitmproxy 允许你 动态地修改请求和响应的内容,包括 Headers, Body, HTTP 方法, URL 等。 这对于 模拟各种网络场景、测试服务器端对异常请求的处理、进行 Web 安全测试 非常有用。 例如,你可以修改请求头来模拟不同的 User-Agent,修改请求体来测试 SQL 注入漏洞,修改响应体来模拟错误响应等。

  • 流量过滤和搜索: Mitmproxy 提供了强大的 流量过滤功能,你可以根据各种条件 (例如 URL, Host, Content-Type, HTTP 方法, 状态码等) 来 筛选和查看感兴趣的流量。 也支持 内容搜索,可以在请求和响应的 Headers 和 Body 中搜索关键词。

  • 重放 (Replay) 功能: 你可以 重放已经捕获的请求 到服务器,用于 测试服务器端的处理逻辑、进行性能测试、验证漏洞修复 等。 也可以 修改请求后重放,用于测试不同的请求参数和场景。

  • 反向代理 (Reverse Proxy) 和 上游代理 (Upstream Proxy) 功能: Mitmproxy 不仅可以作为正向代理 (Forward Proxy) 使用,也可以作为反向代理或上游代理使用,应用场景更加灵活。

三、Mitmproxy 的主要应用场景:

  • Web 开发调试: 拦截和检查浏览器与服务器之间的 HTTP/HTTPS 流量,帮助开发者 理解网络请求流程、调试 API 接口、分析性能瓶颈、定位错误原因。 尤其是在调试复杂的 AJAX 应用、RESTful API 或 WebSocket 应用时,Mitmproxy 非常方便。

  • API 测试: 拦截和修改 API 请求和响应,用于 测试 API 接口的功能、边界条件、错误处理、安全性。 可以自动化地发送各种请求,包括正常请求、异常请求、恶意请求,并验证 API 的响应是否符合预期。

  • 移动应用抓包和分析: 通过配置移动设备 (例如 Android, iOS) 使用 Mitmproxy 作为 HTTP 代理,可以 捕获和分析移动应用的网络流量,包括 API 请求、应用行为分析、数据传输内容等。 这对于移动应用开发、测试和安全分析非常有用。

  • 安全测试 (渗透测试): Mitmproxy 是渗透测试人员常用的工具之一。 可以用于 Web 应用漏洞扫描、API 安全测试、中间人攻击测试、协议漏洞分析 等。 通过拦截和修改流量,渗透测试人员可以 模拟各种攻击场景,验证目标系统的安全性。

  • 学习网络协议: Mitmproxy 可以帮助初学者 更直观地理解 HTTP/HTTPS 等网络协议的工作原理。 通过观察请求和响应的 Headers, Body 等详细信息,可以深入学习协议的规范和交互过程。

四、Mitmproxy 安装指南

Mitmproxy 支持多种操作系统,包括 Windows, macOS 和 Linux。 以下分别介绍在不同操作系统上的安装步骤。

1、Windows 平台安装

  • 方法一: 使用 Chocolatey (推荐):

    Chocolatey 是 Windows 平台上的一个包管理器,可以方便地安装和管理软件。

    1. 安装 Chocolatey: 如果你的 Windows 系统上还没有安装 Chocolatey,请先访问 https://chocolatey.org/install 按照官方指南安装 Chocolatey。

    2. 使用 Chocolatey 安装 mitmproxy: 打开 管理员权限的命令提示符PowerShell,运行以下命令:

      choco install mitmproxy
      

      Chocolatey 会自动下载并安装 mitmproxy 及其依赖项。

  • 方法二: 手动下载安装包:

    1. 访问 Mitmproxy 官方网站:https://mitmproxy.org/
    2. 点击 "Downloads" 按钮。
    3. 在 "Windows" 部分,下载最新的 .exe 安装包
    4. 运行下载的 .exe 安装包,按照安装向导的提示完成安装。
  • 验证安装: 安装完成后,打开命令提示符或 PowerShell,输入 mitmproxy --versionmitmweb --version,如果能正确显示 mitmproxy 的版本信息,则说明安装成功。

2、macOS 平台安装

  • 方法一: 使用 Homebrew (推荐):

    Homebrew 是 macOS 平台上的包管理器。

    1. 安装 Homebrew: 如果你的 macOS 系统上还没有安装 Homebrew,请打开终端 (Terminal) 应用,运行以下命令:

      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      

      按照屏幕提示完成 Homebrew 的安装。

    2. 使用 Homebrew 安装 mitmproxy: 在终端中运行以下命令:

      brew install mitmproxy
      

      Homebrew 会自动下载并安装 mitmproxy 及其依赖项。

  • 方法二: 使用 pip (Python 包管理器):

    如果你的 macOS 系统上已经安装了 Python 和 pip,可以使用 pip 安装 mitmproxy。 建议使用 pipx 来安装,以隔离 mitmproxy 的依赖包,避免与系统 Python 包冲突 (需要先安装 pipx: brew install pipx 然后 pipx ensurepath).

    1. 使用 pipx 安装 mitmproxy: 在终端中运行以下命令:

      pipx install mitmproxy
      
  • 方法三: 手动下载安装包:

    1. 访问 Mitmproxy 官方网站:https://mitmproxy.org/
    2. 点击 "Downloads" 按钮。
    3. 在 "macOS" 部分,下载最新的 .dmg 安装包
    4. 打开下载的 .dmg 文件,将 Mitmproxy 应用拖动到 "Applications" 文件夹中。
  • 验证安装: 打开终端,输入 mitmproxy --versionmitmweb --version,验证安装是否成功。

3、Linux 平台安装

在 Linux 系统上,安装方式取决于你使用的发行版。 以下列出几种常见发行版的安装方法。

  • Debian/Ubuntu 系统:

    sudo apt update
    sudo apt install mitmproxy
    
  • Fedora/CentOS/RHEL 系统:

    sudo yum install mitmproxy   # 或 dnf install mitmproxy (较新的 Fedora 版本)
    
  • Arch Linux 系统:

    sudo pacman -S mitmproxy
    
  • 通用方法: 使用 pip (Python 包管理器):

    类似于 macOS,你也可以使用 pip 安装 mitmproxy。 建议使用 pipx 隔离环境。

    pipx install mitmproxy
    
  • 验证安装: 在终端中运行 mitmproxy --versionmitmweb --version,验证安装是否成功。

四、Mitmproxy 基本使用教程

以下介绍 Mitmproxy 的基本使用方法,以 mitmweb (Web 用户界面) 为例。

1、启动 mitmweb:

打开终端或命令提示符,输入 mitmweb 命令并回车。

mitmweb

Mitmweb 默认会在浏览器中打开一个 Web 界面,通常地址是 http://127.0.0.1:8081/。

2、配置浏览器代理:

要让浏览器流量经过 Mitmproxy,你需要配置浏览器的 HTTP 代理设置。

Chrome 浏览器代理设置 手动配置代理服务器地址和端口为 127.0.0.1:8080

  • Chrome / Firefox / Safari 等浏览器配置步骤 (以 Chrome 为例):
    1. 打开 Chrome 浏览器设置 (Settings)。
    2. 搜索 "proxy" 或 "代理"。
    3. 找到 "打开代理设置" (Open proxy settings) 或类似的选项 (不同的操作系统和浏览器版本可能略有不同)。
    4. 在系统代理设置中,选择 "手动设置代理" (Manual proxy configuration) 或类似的选项。
    5. 在 HTTP 代理 (HTTP Proxy) 或 Web 代理 (Web Proxy) 设置中,输入:
      • 地址 (Address) 或 服务器 (Server): 127.0.0.1localhost
      • 端口 (Port): 8080 (Mitmproxy 默认代理端口)
    6. 如果有 HTTPS 代理 (HTTPS Proxy) 或 安全 Web 代理 (Secure Web Proxy) 设置,也同样配置为 127.0.0.1:8080
    7. 取消勾选 "为本地地址跳过代理服务器 (Bypass proxy server for local addresses)" 或类似的选项 (如果勾选了)。
    8. 点击 "保存" 或 "确定" 使代理设置生效。

3、访问网站,开始抓包:

配置好浏览器代理后,在浏览器中访问任意网站 (例如 https://www.example.com)。 你会在 Mitmweb 的界面中看到浏览器发出的网络请求被实时捕获并显示出来。

4、查看请求详情:

在 Mitmweb 的请求列表中,点击任意一个请求,会在右侧面板显示该请求的详细信息,包括:

  • Request (请求):

    • Overview (概述): 请求的基本信息,例如 URL, 方法, 版本, 状态码, 连接信息等。
    • Headers (标头): 请求头 (Request Headers) 信息。
    • Content (内容): 请求体 (Request Body) 内容 (如果有的话)。
  • Response (响应):

    • Overview (概述): 响应的基本信息,例如状态码, 版本, 耗时等。
    • Headers (标头): 响应头 (Response Headers) 信息。
    • Content (内容): 响应体 (Response Body) 内容。

5、交互式操作:

  • 拦截请求/响应 (Intercept): 默认情况下,Mitmproxy 不会主动拦截流量。 你可以在请求或响应上右键点击,选择 "Intercept" (拦截) 或 "编辑并重放 (Edit & Replay)"。 被拦截的请求或响应会以 黄色高亮 显示,并暂停流程。 你可以在详情面板中 检查和修改 请求或响应的内容,然后点击 "Resume" (继续) 让流程继续,或点击 "Drop" (丢弃) 终止流程。

  • 修改请求/响应 (Modify): 在请求或响应的详情面板中,你可以点击 "Headers" 或 "Content" 选项卡, 编辑 Header 字段或 Body 内容。 修改后,可以点击 "Replay" (重放) 发送修改后的请求到服务器,或点击 "Resume" (继续) 让原始请求继续发送 (修改会生效)。

  • 重放请求 (Replay): 在请求上右键点击,选择 "Replay" (重放) 或 "重放编辑 (Replay & Edit)" 可以 重新发送该请求到服务器。 "重放编辑" 会打开请求详情面板,允许你修改请求后再重放。

  • 丢弃请求/响应 (Drop): 在请求或响应上右键点击,选择 "Drop" (丢弃) 可以 终止该请求或响应流程,阻止其发送到服务器或客户端。

  • 筛选 (Filter): 在 Mitmweb 界面顶部的 "Filter" 输入框中,可以输入 过滤表达式 来筛选请求列表。 例如,输入 ~url example.com 只显示 URL 包含 "example.com" 的请求,输入 ~status 404 只显示状态码为 404 的请求。 Mitmproxy 使用强大的过滤语法,可以参考官方文档了解更多过滤选项。

6、证书安装 (HTTPS 拦截需要):

为了让 Mitmproxy 能够拦截和解密 HTTPS 流量,你需要 在你的客户端 (例如操作系统或浏览器) 安装 Mitmproxy 的 CA 证书。 当 Mitmproxy 拦截 HTTPS 连接时,会动态生成一个伪造的 SSL 证书来冒充目标网站,客户端需要信任 Mitmproxy 的 CA 证书才能信任这些伪造的证书,从而避免证书错误提示。

  • 访问 http://mitm.it (在配置了 Mitmproxy 代理的浏览器中): 打开配置了 Mitmproxy 代理的浏览器,访问 http://mitm.it。 Mitmproxy 会在此页面提供各种操作系统和浏览器的证书下载链接和安装指南。

  • 下载并安装证书: 根据你的操作系统和浏览器类型,选择合适的证书下载链接,并按照页面上的安装指南进行安装。 通常需要下载 CA 证书文件 (例如 .pem, .crt.p12 格式),然后导入到操作系统或浏览器的证书信任存储区。

  • 重启浏览器 (可能需要): 安装证书后,可能需要重启浏览器才能使证书生效。

7、更多高级用法:

  • 使用 mitmproxy 命令行界面: mitmproxy 命令行界面提供了更强大的功能和脚本化能力,适合在服务器环境或脚本自动化中使用。 可以通过命令参数和交互式命令进行流量控制和分析。

  • 使用 mitmdump 进行非交互式抓包: mitmdump 是 Mitmproxy 的非交互式命令行版本,可以用于 后台抓包、长时间监控、数据导出 等自动化任务。 例如,可以使用 mitmdump -w capture.pcap 将捕获的流量保存到 capture.pcap 文件中 (可以使用 Wireshark 打开分析)。

  • 编写 Python 脚本 (addons): 使用 Python 编写 Mitmproxy 插件 (addons) 可以 扩展 Mitmproxy 的功能,实现自定义的流量处理逻辑,自动化任务,数据分析和报表生成。 Mitmproxy 提供了丰富的 API 供插件使用,可以访问和修改请求、响应、连接等各个方面的信息。 插件可以使用命令行参数加载,或通过配置文件自动加载。

Mitmproxy 是一款功能强大、灵活易用的交互式 HTTP 代理工具,特别适合 Web 开发者、API 开发者、安全测试人员进行 Web 应用调试、API 测试、移动应用抓包、安全分析 等任务。 它提供的 交互式拦截、TLS/SSL 解密、脚本化扩展 等特性,使其成为网络分析和调试的利器。 掌握 Mitmproxy 的使用,可以显著提升你的 Web 开发效率和网络安全分析能力。

五、Wireshark 和 mitmproxy结合使用

Wireshark 和 mitmproxy 是网络分析领域的两款强大工具,虽然它们侧重点有所不同,但结合使用可以发挥更大的威力,提供更深入、更全面的网络流量分析能力。

1、Wireshark 和 mitmproxy 的角色定位

在深入探讨如何结合使用之前,先简单回顾一下它们各自的特点和擅长领域:

  • Wireshark:

    • 通用网络协议分析器: Wireshark 是一个 通用的网络协议分析器,可以捕获和分析 各种网络协议 的数据包,包括 TCP/IP 协议族、应用层协议(如 HTTP, DNS, FTP, SMTP 等等)、以及各种工业协议、无线协议等。
    • 深入的协议细节: Wireshark 擅长 深入解析协议的细节,例如 TCP 三次握手过程、HTTP 请求头字段、DNS 查询报文格式等等。 它提供了丰富的协议解析器,可以帮助用户理解网络通信的每一个细节。
    • 被动式监听和分析: Wireshark 主要是一个 被动式监听工具,它捕获网络接口上的数据包,然后用户使用其强大的过滤和分析功能来 事后分析 捕获到的数据。
    • 不具备修改和拦截能力: Wireshark 主要用于 观察和分析 网络流量,它 本身不具备修改或拦截网络流量的能力。
  • mitmproxy:

    • 交互式 HTTP/HTTPS 代理: mitmproxy 是一个 专门针对 HTTP/HTTPS 协议的代理工具,它充当客户端和服务器之间的 中间人
    • 拦截、检查和修改流量: mitmproxy 的核心特点是 交互性,它允许用户 拦截、检查、修改和重放 HTTP/HTTPS 请求和响应。 这对于 Web 开发调试、API 测试、安全测试非常有用。
    • TLS/SSL 解密: mitmproxy 可以 透明地解密 HTTPS 加密流量,让你能够查看和修改 HTTPS 请求和响应的明文内容。
    • 脚本化和自动化: mitmproxy 可以通过 Python 脚本进行扩展,实现自定义的流量处理逻辑、自动化测试、数据导出等功能。

2、Wireshark 和 mitmproxy 如何结合使用

虽然 Wireshark 和 mitmproxy 功能各有侧重,但它们可以很好地协同工作,互补优势,以实现更强大的网络分析能力。 主要有两种常见的结合使用方式:

1. Mitmproxy 捕获流量,Wireshark 深入分析 (最常用)

  • 工作流程:

    1. 使用 mitmproxy 捕获 HTTP/HTTPS 流量: 利用 mitmproxy 作为代理服务器,让客户端(例如浏览器、应用程序)的 HTTP/HTTPS 流量经过 mitmproxy。 Mitmproxy 负责 拦截、解密 (对于 HTTPS) 和记录 这些流量。
    2. Mitmproxy 将捕获的流量导出为 PCAP 文件: Mitmproxy (特别是 mitmdump 命令行工具) 可以将捕获的流量 保存为 PCAP 或 PCAPNG 格式的文件。 PCAP/PCAPNG 是 Wireshark 原生支持的数据包捕获文件格式。
    3. 使用 Wireshark 打开和分析 PCAP 文件: 在 Wireshark 中 打开 Mitmproxy 导出的 PCAP 文件,就可以 使用 Wireshark 强大的协议分析和过滤功能,对 Mitmproxy 捕获的 HTTP/HTTPS 流量进行更深入的分析。
  • 优势:

    • 专注于 Web 流量: Mitmproxy 专注于 HTTP/HTTPS 协议,可以 更高效地捕获和处理 Web 流量,并自动完成 HTTPS 解密,减轻了 Wireshark 处理 HTTPS 加密流量的负担。
    • 深入的协议细节分析: Wireshark 在 协议分析方面更加专业和强大,可以提供更详细的协议字段解析、协议层级结构展示、协议统计分析等功能,帮助用户更深入地理解 HTTP/HTTPS 协议的细节,以及 TCP/IP 协议栈的底层交互过程。
    • 强大的过滤和搜索: Wireshark 提供了 极其强大的过滤和搜索功能,可以使用各种复杂的过滤表达式,根据协议、字段、内容等条件来筛选和分析数据包,快速定位感兴趣的流量。
    • 可视化和图形化分析: Wireshark 的 图形界面 更直观友好,提供了丰富的 图形化分析工具,例如协议分层统计图、IO 图表、TCP 流图等,帮助用户更直观地理解网络流量的特征和趋势。
  • 适用场景:

    • Web 应用安全分析: 使用 Mitmproxy 捕获 Web 应用的 HTTP/HTTPS 流量,导出 PCAP 文件,然后在 Wireshark 中 分析是否存在 Web 应用漏洞、恶意攻击行为,例如 SQL 注入、XSS 跨站脚本攻击、命令注入等。
    • API 接口安全测试: 使用 Mitmproxy 捕获 API 请求和响应,导出 PCAP 文件,然后在 Wireshark 中 分析 API 接口的安全性、认证授权机制、数据传输安全性 等。
    • 复杂 Web 应用问题排查: 当 Web 应用出现 性能问题、连接问题、功能异常 时,可以使用 Mitmproxy 捕获流量,导出 PCAP 文件,然后在 Wireshark 中 深入分析协议交互过程,定位问题根源
    • 学习和研究 HTTP/HTTPS 协议: 使用 Mitmproxy 捕获实际的 HTTP/HTTPS 流量,导出 PCAP 文件,然后在 Wireshark 中 详细分析协议的各个字段和流程,加深对协议的理解。

2. Wireshark 捕获流量,Mitmproxy 分析和修改 (较少使用,但特定场景下有用)

  • 工作流程:

    1. 使用 Wireshark 捕获网络流量: 使用 Wireshark 直接捕获网络接口上的 所有 流量,包括 HTTP/HTTPS 流量以及其他协议的流量。 可以将捕获结果保存为 PCAP 文件。
    2. 将 PCAP 文件导入 Mitmproxy 进行分析和修改: 虽然 Mitmproxy 主要作为代理服务器工作,但也可以 读取 PCAP 文件作为输入源。 Mitmproxy 可以 解析 PCAP 文件中的 HTTP/HTTPS 流量,并利用其交互式拦截、修改、重放等功能,对这些流量进行分析和处理。
  • 优势:

    • 处理预先捕获的流量: 这种方式可以 分析 已经存在 的 PCAP 文件,例如,分析历史的 Web 服务器日志、分析从其他工具 (例如 tcpdump, 网络设备) 捕获的 PCAP 文件。
    • 利用 Mitmproxy 的脚本化能力处理 Wireshark 流量: 可以使用 Mitmproxy 的 Python 脚本功能, 自动化地分析和处理 Wireshark 捕获的流量,例如,批量提取 HTTP 请求中的特定字段、自动化地修改某些请求并重放、生成自定义分析报告等。
  • 劣势:

    • 效率较低: Mitmproxy 主要为 实时代理流量 设计,处理 PCAP 文件可能不如处理实时流量效率高。
    • 功能受限: Mitmproxy 主要针对 HTTP/HTTPS 协议,对于 PCAP 文件中 非 HTTP/HTTPS 协议的流量,Mitmproxy 的功能有限,不如 Wireshark 通用。
  • 适用场景:

    • 自动化分析历史 Web 流量日志: 可以使用 Mitmproxy 的脚本功能,批量分析和处理 已经捕获的 Web 流量 PCAP 文件,例如,从历史日志中提取特定类型的 HTTP 请求、统计 Web 应用的错误率、分析用户行为模式等。
    • 对已有的 Wireshark 抓包结果进行交互式调试和修改: 对于已经使用 Wireshark 捕获的 HTTP/HTTPS 流量,如果需要 进行交互式的检查、修改或重放,可以将 PCAP 文件导入 Mitmproxy 进行操作。

3、详细步骤: Mitmproxy 捕获流量 -> Wireshark 深入分析

以下以最常用的 Mitmproxy 捕获流量,Wireshark 深入分析 的工作流程为例,详细介绍操作步骤:

步骤 1: 使用 mitmdump 命令行工具捕获 HTTP/HTTPS 流量并保存为 PCAP 文件

  • 打开终端或命令提示符。
  • 使用 mitmdump 命令,并添加 -w 参数指定输出的 PCAP 文件名。 例如,将捕获的流量保存到名为 web_traffic.pcap 的文件中:
mitmdump -w web_traffic.pcap
  • mitmdump 开始运行,并等待客户端的 HTTP/HTTPS 流量经过代理。 此时 mitmdump 命令行界面通常是 静默的,不会显示实时的流量信息 (因为它主要是非交互式的抓包工具)。

步骤 2: 配置客户端 (例如浏览器) 使用 Mitmproxy 代理

  • 按照之前介绍的 Mitmproxy 安装教程中的 "配置浏览器代理" 步骤,将你的浏览器或其他 HTTP 客户端配置为使用 Mitmproxy 作为 HTTP 和 HTTPS 代理,代理地址为 127.0.0.1:8080

步骤 3: 在配置了代理的客户端上进行 Web 操作

  • 在配置了代理的浏览器中,访问你想要分析的网站或 Web 应用,进行相关的操作 (例如浏览网页、提交表单、API 调用等)。 这些操作产生的 HTTP/HTTPS 流量都会经过 Mitmproxy,并被记录到 web_traffic.pcap 文件中。

步骤 4: 停止 mitmdump 抓包

  • 当你完成需要捕获的 Web 操作后,在运行 mitmdump 的终端中,按下 Ctrl+C 停止 mitmdump 进程。 mitmdump 会停止抓包,并将所有捕获到的流量 保存到 web_traffic.pcap 文件中。

步骤 5: 使用 Wireshark 打开和分析 PCAP 文件

  • 启动 Wireshark 应用程序。
  • 点击 Wireshark 菜单 "文件 (File)" -> "打开 (Open)",或者使用快捷键 Ctrl+O (Windows) 或 Command+O (macOS)。
  • 在文件选择对话框中,找到并 选择你刚刚使用 mitmdump 保存的 web_traffic.pcap 文件,点击 "打开 (Open)"。

步骤 6: 在 Wireshark 中分析 HTTP/HTTPS 流量

  • Wireshark 加载 PCAP 文件后,会在主界面中 显示捕获到的 HTTP/HTTPS 流量数据包列表。

  • 使用 Wireshark 过滤器筛选 HTTP 流量: 在 Wireshark 的 显示过滤器 输入框中,输入 httphttp2 ,然后按下回车键。 Wireshark 会 只显示 HTTP 或 HTTP/2 协议的数据包,方便你专注于分析 Web 流量。

  • 分析 HTTP 请求和响应: 在数据包列表中,选择一个 HTTP 数据包,然后在下方的 数据包详细信息面板 中,展开 "Hypertext Transfer Protocol" (或 "HTTP2") 协议层级,可以 查看 HTTP 请求和响应的详细信息,例如请求方法 (GET, POST)、URL、HTTP 头字段 (Request Headers, Response Headers)、请求体 (Request Body)、响应体 (Response Body)、状态码 (Status Code) 等。
  • 追踪 HTTP 流: 对于一个完整的 HTTP 会话 (例如,客户端发送请求,服务器返回响应),Wireshark 提供了 追踪流 (Follow Stream) 的功能,可以将属于同一个 HTTP 会话的所有数据包 按时间顺序重新组装,并以 更易读的文本形式 展示整个 HTTP 会话的交互过程。 在数据包列表中的一个 HTTP 数据包上右键点击,选择 "追踪流 (Follow Stream)" -> "HTTP 流 (HTTP Stream)"。
  • 使用 Wireshark 的各种高级分析功能: 例如,使用 协议分层统计 (Protocol Hierarchy Statistics) 查看 HTTP 流量在整个网络流量中的占比,使用 IO 图表 (IO Graphs) 分析 HTTP 流量的吞吐量和延迟,使用 专家信息 (Expert Info) 查看 Wireshark 检测到的 HTTP 协议异常或警告信息等。

4、结合使用的优势总结

通过将 Mitmproxy 和 Wireshark 结合使用,你可以充分利用两者的优势:

  • 更专注于 Web 流量: Mitmproxy 负责高效捕获和预处理 HTTP/HTTPS 流量,Wireshark 专注于对这些流量进行更深入的协议分析。
  • HTTPS 解密透明化: Mitmproxy 自动处理 HTTPS 解密,你可以在 Wireshark 中直接分析解密后的 HTTP 明文流量,无需在 Wireshark 中配置 SSL 解密密钥。
  • 更强大的分析能力: Wireshark 提供了比 Mitmproxy 更强大的协议分析、过滤、搜索和可视化功能,可以帮助你更深入地理解和分析 Web 流量的各个方面。
  • 灵活的工作流程: 你可以根据不同的分析需求,灵活选择使用 Mitmproxy 捕获流量,然后用 Wireshark 进行深入分析,或者直接使用 Wireshark 捕获所有流量,然后用 Mitmproxy 处理特定的 HTTP/HTTPS 流量。

重要提示: 合法合规使用

与所有网络分析工具一样,使用 Wireshark 和 Mitmproxy 也需要遵守 法律法规和伦理道德规范。 请确保你只在 获得明确授权的网络环境 中进行网络流量捕获和分析,不得用于非法用途,例如窃取他人隐私信息、进行网络攻击等。


http://www.kler.cn/a/579783.html

相关文章:

  • conda list <package> 指令输出的build和channel含义
  • 电力行业中分布式能源管理(Distributed Energy Management System, DEMS)的实现
  • 【每日学点HarmonyOS Next知识】底部弹窗、对话框不弹出、多模块间跳转、输入框不显示内容、Grid编辑顺序
  • QT系列教程(17) MVC结构之Model模型介绍
  • Spring-全面详解(学习总结)
  • Manus联创澄清:我们并未使用MCP技术
  • Windows中的用户变量和系统变量
  • Zabbix监控进程报警(Zabbix Monitoring Process Alarm)
  • 越早越好!8 个反直觉的金钱真相|金钱心理学
  • A Mutually Textual and Visual RefinementNetwork for Image-Text Matching | 文献翻译
  • Lottie与LottieFiles:快速为前端Web开发注入精美动画的利器
  • Linux系统下nvm工具的安装与基本使用
  • RabbitMQ 高级特性:从 TTL 到消息分发的全面解析 (下)
  • 23种设计模式之《模板方法模式(Template Method)》在c#中的应用及理解
  • 1.3 Spring Boot原理解析
  • Ollama 已在本地部署了deepseek,如何用Python语言调用
  • django下防御race condition漏洞(竞争型漏洞)
  • 2025-03-10 吴恩达机器学习1——机器学习概述
  • boost::beast websocket 实例
  • this.$nextTick() 作用及实现原理