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 平臺上的一個包管理器,可以方便地安裝和管理軟件。
-
安裝 Chocolatey: 如果你的 Windows 系統上還沒有安裝 Chocolatey,請先訪問 https://chocolatey.org/install 按照官方指南安裝 Chocolatey。
-
使用 Chocolatey 安裝 mitmproxy: 打開 管理員權限的命令提示符 或 PowerShell,運行以下命令:
choco install mitmproxy
Chocolatey 會自動下載并安裝 mitmproxy 及其依賴項。
-
-
方法二: 手動下載安裝包:
- 訪問 Mitmproxy 官方網站:https://mitmproxy.org/
- 點擊 "Downloads" 按鈕。
- 在 "Windows" 部分,下載最新的
.exe
安裝包。 - 運行下載的
.exe
安裝包,按照安裝向導的提示完成安裝。
-
驗證安裝: 安裝完成后,打開命令提示符或 PowerShell,輸入
mitmproxy --version
或mitmweb --version
,如果能正確顯示 mitmproxy 的版本信息,則說明安裝成功。
2、macOS 平臺安裝
-
方法一: 使用 Homebrew (推薦):
Homebrew 是 macOS 平臺上的包管理器。
-
安裝 Homebrew: 如果你的 macOS 系統上還沒有安裝 Homebrew,請打開終端 (Terminal) 應用,運行以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
按照屏幕提示完成 Homebrew 的安裝。
-
使用 Homebrew 安裝 mitmproxy: 在終端中運行以下命令:
brew install mitmproxy
Homebrew 會自動下載并安裝 mitmproxy 及其依賴項。
-
-
方法二: 使用 pip (Python 包管理器):
如果你的 macOS 系統上已經安裝了 Python 和 pip,可以使用 pip 安裝 mitmproxy。 建議使用
pipx
來安裝,以隔離 mitmproxy 的依賴包,避免與系統 Python 包沖突 (需要先安裝 pipx:brew install pipx
然后pipx ensurepath
).-
使用 pipx 安裝 mitmproxy: 在終端中運行以下命令:
pipx install mitmproxy
-
-
方法三: 手動下載安裝包:
- 訪問 Mitmproxy 官方網站:https://mitmproxy.org/
- 點擊 "Downloads" 按鈕。
- 在 "macOS" 部分,下載最新的
.dmg
安裝包。 - 打開下載的
.dmg
文件,將 Mitmproxy 應用拖動到 "Applications" 文件夾中。
-
驗證安裝: 打開終端,輸入
mitmproxy --version
或mitmweb --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 --version
或mitmweb --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 為例):
- 打開 Chrome 瀏覽器設置 (Settings)。
- 搜索 "proxy" 或 "代理"。
- 找到 "打開代理設置" (Open proxy settings) 或類似的選項 (不同的操作系統和瀏覽器版本可能略有不同)。
- 在系統代理設置中,選擇 "手動設置代理" (Manual proxy configuration) 或類似的選項。
- 在 HTTP 代理 (HTTP Proxy) 或 Web 代理 (Web Proxy) 設置中,輸入:
- 地址 (Address) 或 服務器 (Server):
127.0.0.1
或localhost
- 端口 (Port):
8080
(Mitmproxy 默認代理端口)
- 地址 (Address) 或 服務器 (Server):
- 如果有 HTTPS 代理 (HTTPS Proxy) 或 安全 Web 代理 (Secure Web Proxy) 設置,也同樣配置為
127.0.0.1:8080
。 - 取消勾選 "為本地地址跳過代理服務器 (Bypass proxy server for local addresses)" 或類似的選項 (如果勾選了)。
- 點擊 "保存" 或 "確定" 使代理設置生效。
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 深入分析 (最常用)
-
工作流程:
- 使用 mitmproxy 捕獲 HTTP/HTTPS 流量: 利用 mitmproxy 作為代理服務器,讓客戶端(例如瀏覽器、應用程序)的 HTTP/HTTPS 流量經過 mitmproxy。 Mitmproxy 負責 攔截、解密 (對于 HTTPS) 和記錄 這些流量。
- Mitmproxy 將捕獲的流量導出為 PCAP 文件: Mitmproxy (特別是
mitmdump
命令行工具) 可以將捕獲的流量 保存為 PCAP 或 PCAPNG 格式的文件。 PCAP/PCAPNG 是 Wireshark 原生支持的數據包捕獲文件格式。 - 使用 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 分析和修改 (較少使用,但特定場景下有用)
-
工作流程:
- 使用 Wireshark 捕獲網絡流量: 使用 Wireshark 直接捕獲網絡接口上的 所有 流量,包括 HTTP/HTTPS 流量以及其他協議的流量。 可以將捕獲結果保存為 PCAP 文件。
- 將 PCAP 文件導入 Mitmproxy 進行分析和修改: 雖然 Mitmproxy 主要作為代理服務器工作,但也可以 讀取 PCAP 文件作為輸入源。 Mitmproxy 可以 解析 PCAP 文件中的 HTTP/HTTPS 流量,并利用其交互式攔截、修改、重放等功能,對這些流量進行分析和處理。
-
優勢:
- 處理預先捕獲的流量: 這種方式可以 分析 已經存在 的 PCAP 文件,例如,分析歷史的 Web 服務器日志、分析從其他工具 (例如
tcpdump
, 網絡設備) 捕獲的 PCAP 文件。 - 利用 Mitmproxy 的腳本化能力處理 Wireshark 流量: 可以使用 Mitmproxy 的 Python 腳本功能, 自動化地分析和處理 Wireshark 捕獲的流量,例如,批量提取 HTTP 請求中的特定字段、自動化地修改某些請求并重放、生成自定義分析報告等。
- 處理預先捕獲的流量: 這種方式可以 分析 已經存在 的 PCAP 文件,例如,分析歷史的 Web 服務器日志、分析從其他工具 (例如
-
劣勢:
- 效率較低: 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 的 顯示過濾器 輸入框中,輸入
http
或http2
,然后按下回車鍵。 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 也需要遵守 法律法規和倫理道德規范。 請確保你只在 獲得明確授權的網絡環境 中進行網絡流量捕獲和分析,不得用于非法用途,例如竊取他人隱私信息、進行網絡攻擊等。