HTTP 代理在 Web 滲透測試與移動應用分析中佔據核心地位。Burp Suite、Fiddler、Charles 等圖形化工具固然強大,但當面對「公司內網與移動網絡隔離」、「需要在無界面的 VPS 上長期運行」或「想要靈活編寫自動化處理腳本」等場景時,命令行下的 mitmproxy 顯得更加輕量、靈活且極具擴展性。本文將系統梳理 mitmproxy 的原理、安裝、CA 證書部署、實戰操作與進階 API 擴展,助你快速上手這把「中間人攻擊神器」。
mitmproxy 支持 正向代理 與 透明代理 兩種模式,均能處理 HTTP 與 HTTPS 流量。其核心在於動態生成偽造證書,完成中間人解密:




mitmproxy 基於 Python,跨平台特性極佳。以下以 Debian 7 為例:
# 安裝編譯工具鏈與 Python 頭文件
apt-get install build-essential python-dev python-setuptools
# 安裝 pip
wget https://pypi.python.org/packages/source/p/pip/pip-1.4.1.tar.gz
tar -xzf pip-1.4.1.tar.gz && cd pip-1.4.1 && python setup.py install
# 核心依賴
sudo pip install netlib pyopenssl pyasn1 urwid pil lxml flask
# 可選:解碼/測試用
sudo pip install pyamf protobuf nose pathod countershape
sudo pip install mitmproxy
安裝成功後將生成兩個可執行文件:
/usr/local/bin/mitmproxy —— 交互式控制台界面/usr/local/bin/mitmdump —— 非交互式批量處理工具(類 tcpdump)若遇到 pkg_resources.DistributionNotFound,升級 setuptools 與 pip 即可:
sudo easy_install --upgrade distribute
sudo easy_install --upgrade pip
首次運行 mitmproxy 會在 ~/.mitmproxy 生成四個證書文件:
| 文件名 | 用途 |
|---|---|
| mitmproxy-ca.pem | 私鑰(妥善保管) |
| mitmproxy-ca-cert.pem | Linux/macOS/通用格式 |
| mitmproxy-ca-cert.cer | Android 專用 |
| mitmproxy-ca-cert.p12 | Windows 專用(含私鑰) |
.pem → 勾選「信任此 CA 辨識網站」.p12 (Win) 或 .pem (Chrome).pem → 關鍵字串訪問 → 永遠信任.pem 郵寄/上傳至手機 → 點擊安裝描述文件 → 設定 → 通用 → 關於 → 憑證信任設定 → 開啟完全信任.cer 放入 SD 卡根目錄 → 設定 → 安全 → 從儲存裝置安裝憑證ADVTrustStore 工具注入 TrustStore.sqlite3mitmproxy -b 0.0.0.0 -p 8080 # 監聽所有介面的 8080 端口
VPS 預設 locale 為 POSIX,需修改為 UTF-8:
vim /etc/default/locale
# 修改為 LANG=en_US.UTF-8
locale-gen
echo "export LANG=en_US.UTF-8" >> /etc/profile
echo "export LANG=en_US.UTF-8" >> /etc/bash.bashrc
source /etc/profile && source /etc/bash.bashrc
手機/瀏覽器/PC 將 HTTP/HTTPS 代理指向 VPS_IP:8080,即可在 mitmproxy 界面看到明文流量。

| 按鍵 | 動作 |
|---|---|
| ↑/↓ | 選中請求 |
| Enter | 進入請求詳情 |
| e | 進入編輯模式 |
| q / Esc | 返回/保存退出 |
| a | 新增字段 (Tab 切換) |
| r | 重放當前請求 |
| w | 保存流量到文件 |
編輯模式下可修改:query、path、url、header、form、raw body、method 等所有關鍵字段。
mitmdump 是自動化測試的利器,常用參數:
-r file 讀取流量文件-w file 寫入流量文件-n 不啟動代理(離線處理)-c 重放客戶端請求-s script.py 載入 Python 腳本處理流量# 1. 從 all.data 提取含 weibo 的流量存入 weibo.data
mitmdump -nr all.data -w weibo.data "~u weibo"
# 2. 重放 weibo.data 中的請求
mitmdump -nc weibo.data
# add_header.py
def response(context, flow):
flow.response.headers["X-Custom-Header"] = ["mitmproxy"]
mitmdump -ns add_header.py -r infile -w outfile
mitmproxy 將核心邏輯封裝為 libmproxy 庫,開發者可像搭積木一樣構建專屬工具。查看 API 文檔:
pydoc libmproxy
典型應用場景:自動化測試平台接入、流量異常檢測、協議模糊測試、敏感數據脫敏代理等。
作者提到 mitmdump -S outfile 重放 HTTP 響應時卡死,原因未明。若你有解決方案或使用心得,歡迎在技術社群交流分享。
總結:mitmproxy 憑藉強大的 HTTPS 解密能力、極簡的命令行體驗與豐富的 Python 擴展接口,成為移動端抓包、自動化測試與安全審計的首選利器。掌握其安裝、證書部署、交互操作與腳本開發,將大幅提升你的流量分析效率。