Python Mitmproxy詳解:從入門到實戰

一、Mitmproxy簡介

Mitmproxy是一款開源的交互式HTTPS代理工具,支持攔截、修改和重放HTTP/HTTPS流量。其核心優勢在于:

  • 多平臺支持:兼容Windows、macOS、Linux
  • 三端工具:提供命令行(mitmproxy)、Web界面(mitmweb)、數據流處理(mitmdump)
  • Python集成:通過API可實現高度定制化的流量處理
  • SSL/TLS支持:自動生成證書實現HTTPS解密

二、安裝與配置

2.1 環境準備

# 安裝Python 3.8+(以Windows為例)
# 官方下載地址:https://www.python.org/downloads/
# 配置環境變量后執行
pip install mitmproxy
mitmdump --version  # 驗證安裝

2.2 證書安裝

  1. 啟動代理服務:
mitmdump -p 8080
  1. 移動端配置:
    • 手機連接與PC同網段的WiFi
    • 設置代理:IP為PC地址,端口8080
    • 瀏覽器訪問http://mitm.it下載對應平臺證書

三、核心功能詳解

3.1 流量攔截與修改

基礎模板

from mitmproxy import http, ctxclass RequestModifier:def request(self, flow: http.HTTPFlow):# 修改請求頭flow.request.headers["User-Agent"] = "MitmProxy/1.0"# 修改GET參數if "orderNo" in flow.request.query:flow.request.query["orderNo"] = "NEW_ORDER_ID"def response(self, flow: http.HTTPFlow):# 篡改響應內容if "error" in flow.response.text:flow.response.text = '{"status":"success"}'addons = [RequestModifier()]

3.2 數據持久化存儲

import json
from mitmproxy import httpclass DataLogger:def response(self, flow: http.HTTPFlow):data = {"url": flow.request.url,"method": flow.request.method,"status": flow.response.status_code,"content": json.loads(flow.response.text)}with open("api_logs.json", "a") as f:json.dump(data, f)f.write("\n")

3.3 自動化測試用例生成

import csv
from mitmproxy import httpclass TestCaseGenerator:def __init__(self):self.csvfile = open('test_cases.csv', 'w', newline='')writer = csv.writer(self.csvfile)writer.writerow(["URL", "Method", "Request", "Expected"])def response(self, flow: http.HTTPFlow):writer = csv.writer(self.csvfile)writer.writerow([flow.request.url,flow.request.method,flow.request.text,flow.response.status_code])def done(self):self.csvfile.close()

四、實戰場景

4.1 電商API壓力測試

from mitmproxy import http
import timeclass StressTester:def __init__(self):self.start_time = time.time()def response(self, flow: http.HTTPFlow):elapsed = time.time() - self.start_timectx.log.info(f"API {flow.request.url} 響應時間: {elapsed:.2f}s")if flow.response.status_code >= 500:ctx.log.error(f"服務異常: {flow.response.text}")

4.2 社交APP數據脫敏

import re
from mitmproxy import httpclass DataMasker:PHONE_RE = re.compile(r'1\d{10}')def response(self, flow: http.HTTPFlow):if "user_profile" in flow.request.url:mask_text = self.PHONE_RE.sub("138****0000", flow.response.text)flow.response.text = mask_text

五、高級技巧

5.1 流量重放攻擊

# 保存流量到文件
mitmdump -w traffic.dump# 后續重放
mitmdump -n -r traffic.dump -s replay_script.py

5.2 混合使用BurpSuite

# BurpSuite配置upstream代理
mitmdump --mode upstream:http://localhost:8080 --set upstream_cert=true

六、最佳實踐

  1. 安全建議

    • 測試環境使用自簽名證書
    • 生產環境禁用Mitmproxy
    • 定期輪換CA證書
  2. 性能優化

    # 使用并發處理提升性能
    from mitmproxy.script import concurrentclass ConcurrentHandler:@concurrentdef response(self, flow):# 高并發場景下的處理邏輯
    
  3. 調試技巧

    # 啟動時增加日志級別
    mitmweb -v --set console_eventlog_verbosity=debug
    

七、總結

Mitmproxy作為功能強大的流量分析工具,在以下場景展現獨特價值:

  • 接口測試:自動化生成測試用例
  • 安全審計:發現敏感信息泄露
  • 性能優化:定位慢查詢接口
  • 協議分析:研究未知API結構

通過Python API的深度集成,開發者可以構建從流量捕獲、修改到分析的完整處理鏈路,顯著提升研發效率。建議結合具體業務場景,逐步構建企業級流量處理平臺。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87713.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87713.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87713.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

刷題筆記--串聯所有單詞的子串

題目:1、我的寫法(超時)從題面自然想到先用回溯算法把words的全排列先算出來,然后遍歷字符串s一次將符合條件的位置加入結果全排列計算所有可能字符串算法寫法:這是一個模板用于所有全排列算法的情況,本質思…

操作系統【1】【硬件結構】【操作系統結構】

一、CPU如何執行程序? 提綱 圖靈機工作方式馮諾依曼模型線路位寬CPU位寬程序執行基本過程執行具體過程 1. 圖靈機工作方式 圖靈機可以視作“一臺帶規則的自動草稿機” 圖靈機基本組成: 紙帶(內存):連續格子組成&…

SQLite與MySQL:嵌入式與客戶端-服務器數據庫的權衡

SQLite與MySQL:嵌入式與客戶端-服務器數據庫的權衡 在開發應用程序時,數據庫選擇是一個至關重要的決策,它會影響應用的性能、可擴展性、部署難度和維護成本。SQLite和MySQL是兩種廣泛使用的關系型數據庫管理系統,它們各自針對不同…

CppCon 2018 學習:Smart References

“強類型別名”(strong typedefs) 的動機和實現,配合一個簡單例子說明: 動機(Motivation) 用 using filename_t string; 和 using url_t string; 來區分不同的字符串類型(比如文件名和網址&…

高性能高準確度的CPU電壓與溫度監測軟件HWInfo

🖥? 一、軟件概述 Windows版:圖形化界面,支持實時監控(溫度、電壓、風扇轉速等)、基準測試及報告生成,兼容Windows XP至Windows 11系統。Linux版:命令行工具,由openSUSE社區維護&a…

H3C WA6322 AP版本升級

1、查看當前版本:R2444P01 2、官網下載升級文件: WA6300系列版本說明H3C WA6300系列(適用于WA6330、 WA6322、WA6320H、WA6320、 WTU630H、WTU630、WA6330-LI、WA6320-C、WA6320-D、WA6320H-LI、WA6338、WA6322H、WTU632H-IOT、WAP922E、WAP923、WA6320…

用 YOLOv8 + DeepSORT 實現目標檢測、追蹤與速度估算

【導讀】 目標檢測與追蹤技術是計算機視覺領域最熱門的應用之一,廣泛應用于自動駕駛、交通監控、安全防護等場景。今天我們將帶你一步步實現一個完整的項目,使用YOLOv8 DeepSORT實現目標檢測、追蹤與速度估算。>>更多資訊可加入CV技術群獲取了解…

Python實例題:基于 Python 的簡單聊天機器人

Python實例題 題目 基于 Python 的簡單聊天機器人 要求: 使用 Python 構建一個聊天機器人,支持以下功能: 基于規則的簡單問答系統關鍵詞匹配和意圖識別上下文記憶功能支持多輪對話可擴展的知識庫 使用tkinter構建圖形用戶界面。實現至少 …

相機:Camera原理講解(使用OpenGL+QT開發三維CAD)

相機為三維場景提供了靈活便捷的視角變換和交互能力,通過相機操作可以實現全方位、各角度的場景瀏覽。 怎樣在三維場景中引入相機,怎樣處理和實現視角的放縮、移動、旋轉?在視角旋轉時以指定目標為中心又該怎樣處理? 原文&#…

開源的虛擬電廠預測數據:資源、應用與挑戰

引言 虛擬電廠(Virtual Power Plant, VPP)是一種通過聚合分布式能源資源(如太陽能、風能、儲能系統、電動汽車和可控負荷)來優化電力系統運行的數字化能源管理平臺。準確的預測數據是虛擬電廠高效運行的關鍵,而開源數據為研究者和企業提供了低成本、高透明度的解決方案。…

IDE全家桶專用快捷鍵----------個人獨家分享!!

給大家分享一下我個人整理的快捷鍵,其中包含對電腦的操作,以及在編寫代碼時的操作🚀Window系列1 WindowsR 開啟運行對話框--->輸入cmd啟動黑窗口?2 WindowsE 快速打開我的電腦 ?3 WindowsL 電腦鎖屏 ?4 WindowsD 顯示/恢復桌面 ?5 Win…

人工智能概念:RNN中的基礎Encoder-Decoder框架

文章目錄一、序列(Seq2Seq)轉換的核心架構二、Encoder-Decoder框架基礎原理2.1 整體工作流程2.2 編碼器(Encoder)詳解2.3 解碼器(Decoder)工作機制與缺陷三、基礎框架的核心缺陷分析(以"歡…

R 列表:深入解析與高效應用

R 列表:深入解析與高效應用 引言 在R語言中,列表(List)是一種非常重要的數據結構,它允許我們將不同類型的數據組合在一起。列表在數據分析和統計建模中扮演著至關重要的角色。本文將深入探討R列表的概念、創建方法、…

uniapp 國密sm2加密

1. uniapp 國密sm2加密 在uniapp中使用國密SM2算法進行加密解密,你可以通過安裝第三方庫miniprogram-sm-crypto來實現。這個庫提供了SM2、SM3和SM4算法的實現,可以在小程序和uniapp項目中使用。 1.1. 安裝miniprogram-sm-crypto 首先,你需要…

07_持續集成與部署:DevOps的核心引擎

07_持續集成與部署:DevOps的核心引擎 引言 在快速迭代的軟件開發時代,持續集成(CI)與持續部署(CD)已成為企業提升競爭力的關鍵。通過自動化構建、測試和部署流程,CI/CD能夠顯著縮短交付周期,提高軟件質量,降低發布風險。本文將深入探討CI/CD的核心理念、實施路徑與最…

電腦休眠設置

Dont Sleep的意思就是“不要睡覺”,用在電腦里就是“阻止休眠”的意思。但這款軟件其實有“阻止休眠”和“允許休眠”兩個功能。 阻止休眠時可以選擇事件,是計時器、電池、CPU、網絡這幾個事件進行觸發阻止休假的功能。 允許休眠也可以根據自己的需求進行…

藍牙墨水屏上位機學習(3)

main.js中sendimg()函數學習,對應發送圖片按鈕函數代碼如下:async function sendimg() {const canvasSize document.getElementById(canvasSize).value;const ditherMode document.getElementById(ditherMode).value;const epdDriverSelect document.…

Linux應用基礎

1. 基礎概念 1.1 系統調用 系統調用實際上是Linux內核為上層應用程序提供的API接口,方便應用程序進行調用,類似于SVC。 1.2 庫函數 庫函數是應用層里邊的東西,在系統調用的上層,通常以動態庫文件(.so)形式…

【時間序列數據處理的噩夢與救贖:一次復雜數據可視化問題的深度復盤】

時間序列數據處理的噩夢與救贖:一次復雜數據可視化問題的深度復盤 創建時間: 2025/7/3 技術棧: Vue 3 TypeScript UniApp ECharts 問題級別: 🔴 系統性架構問題 🎯 引言:當簡單需求變成技術噩夢 “老哥,這個圖表時…

Redis--黑馬點評--基于stream消息隊列的秒殺優化業務詳解

基于redis的stream結構作為消息隊列,實現異步秒殺下單 需求: 創建一個Stream類型的消息隊列,名為stream.oreders 修改之前的秒殺下單Lua腳本,在認定有搶夠資格后,直接向stream.orders中添加消息,內容包括…