Mac安裝mitmproxy及操作對監控的請求

在 macOS 上安裝和配置 mitmproxy 是一個相對簡單的過程,可以使用常見的包管理工具如 Homebrew 或直接通過 Python 的包管理工具 pip。以下是詳細的安裝步驟:

方法一:使用 Homebrew 安裝
Homebrew 是 macOS 上流行的包管理工具。它可以快速安裝 mitmproxy。

安裝過程:
1、更新 Homebrew
運行以下命令以確保 Homebrew 是最新的:

brew update

2、安裝 mitmproxy
使用 Homebrew 安裝 mitmproxy:

brew install mitmproxy

3、驗證安裝
安裝完成后,可以通過以下命令驗證版本:

mitmproxy --version

4、輸出版本信息即表示安裝成功。
啟動 mitmproxy 或 mitmweb
啟動 mitmproxy:

mitmproxy --listen-host 0.0.0.0 --listen-port 8080

啟動 mitmweb(顯示 GUI):

mitmweb --listen-host 0.0.0.0 --listen-port 8080

方法二:使用 Python 的 pip 安裝
如果沒有使用 Homebrew,也可以通過 Python 的包管理工具 pip 安裝 mitmproxy,因為它是用 Python 編寫的。

安裝過程:
1、確保 macOS 上已安裝 Python 3
檢查 Python 版本,運行以下命令:

python3 --version

如果尚未安裝,可以通過 Homebrew 安裝:

brew install python

2、升級 pip
在安裝 mitmproxy 之前,建議確保 pip 已更新:

python3 -m pip install --upgrade pip

3、安裝 mitmproxy
使用 pip 安裝 mitmproxy:

python3 -m pip install mitmproxy

4、驗證安裝
檢查 mitmproxy 版本確認安裝是否成功:

mitmproxy --version

啟動 mitmproxy 或 mitmweb

啟動 mitmproxy:

mitmproxy --listen-host 0.0.0.0 --listen-port 8080

啟動 mitmweb(顯示 GUI):

mitmweb --listen-host 0.0.0.0 --listen-port 8080

配置 mitmproxy
配置代理
1、設置代理:
在 macOS 的系統設置中,進入 Wi-Fi > 網絡設置 > 高級選項 > 代理。
配置 HTTP/HTTPS 代理地址為 127.0.0.1:8080 或運行 mitmproxy 的本地 IP 和端口號。
2、配置證書信任(確保可以抓 HTTPS 流量)
mitmproxy 默認會攔截 HTTPS 流量,但需要用戶設備信任其自簽名證書。以下是設置證書信任的步驟:
1、安裝證書:
在設備瀏覽器中訪問 http://mitm.it,并按照提示下載 mitmproxy 的證書。
下載后會生成一個 *.pem 文件。
2、將證書導入 macOS 的鑰匙串中:
雙擊 .pem 文件,系統會自動導入到鑰匙串工具中。
在 鑰匙串訪問 中找到導入的證書。
右擊證書,選擇 信息,然后設置為 始終信任。
3、驗證證書是否生效:
再次運行 mitmproxy 或 mitmweb,進行流量捕獲測試。

常見問題和解決方法

  1. mitmproxy 未顯示流量
    解決辦法:
    確保代理端口設置正確,應用是否連接到 127.0.0.1:8080。
    配置證書信任,確保 HTTPS 請求能夠被解密。
  2. Python 版本不兼容
    如果系統自帶的 Python 版本較低(如 2.x),建議安裝最新版 Python:
brew install python
  1. GUI (mitmweb) 不顯示流量
    流量過多時可能存在延遲,增加資源限制:
mitmweb --set connection_strategy=eager

檢查過濾器是否存在:
清空過濾器規則,顯示所有流量。

mitmproxy 提供了擴展 API,允許編寫 Python 腳本對流量進行操作,如捕獲、過濾和處理 HTTP 請求。

以下是一個 Python 腳本,能夠捕獲 HTTP 請求并存儲到集合中:

from mitmproxy import http
import json# 全局請求列表
http_requests = []
def read_json(file_path):"""讀取 JSON 文件數據"""try:with open(file_path, 'r', encoding='utf-8') as file:data = json.load(file)  # 加載 JSON 數據為 Python 對象return dataexcept FileNotFoundError:print(f"{file_path} 不存在,將創建新文件。")return {}  # 如果文件不存在,返回一個空字典except json.JSONDecodeError:print(f"無法解析 {file_path},請確保文件內容是合法的 JSON。")return {}def request(flow: http.HTTPFlow) -> None:"""每次捕獲 HTTP 請求時執行此回調函數"""global http_requests# 提取請求的基本信息url = flow.request.urlmethod = flow.request.methodheaders = dict(flow.request.headers)content = flow.request.text# 將請求信息存入集合request_data = {"url": url,"method": method,"headers": headers,"content": content,}http_requests.append(request_data)print(f"捕獲請求: {url}")def response(flow: http.HTTPFlow) -> None:"""每次捕獲 HTTP 響應時執行此回調函數"""global http_requestsurl = flow.request.urlprint(f"完成響應: {url}")def done():"""在 mitmproxy 運行結束時保存請求集合的數據"""global http_requests# 將捕獲的請求保存到文件with open("http_requests.json", "w", encoding="utf-8") as f:json.dump(http_requests, f, indent=4)print(f"捕獲了 {len(http_requests)} 個 HTTP 請求,已保存到 'http_requests.json'")

如何使用以上腳本

  1. 保存腳本文件
    將上述代碼保存到文件中,例如 capture_requests.py。

  2. 啟動 mitmproxy 并加載腳本
    通過 mitmproxy 或 mitmdump 加載腳本。例如:

mitmproxy -s capture_requests.py

或者使用 mitmdump(無界面模式):

mitmdump -s capture_requests.py
  1. 捕獲流量
    確保目標設備正確配置代理到運行 mitmproxy 的機器,同時安裝并信任 CA 證書。完成流量操作后,腳本會自動將請求數據保存到 http_requests.json。

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

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

相關文章

c++ 數據結構-堆、優先隊列 小總結

之前學習了一些堆、優先隊列的知識點,在此做一個小總結。堆(Heap)堆(Heap)是一種特殊的完全二叉樹數據結構,具有以下重要特性:結構特性堆是一棵完全二叉樹,即除了最后一層外&#xf…

編寫Linux下usb設備驅動方法:probe函數中要進行的工作

一. 簡介 前一篇文章簡單學習了 Linux下usb設備驅動實現流程,文章如下: 編寫Linux下usb設備驅動方法:usb設備驅動實現流程-CSDN博客 本文來學習一下 usb設備驅動的 probe函數要完成的任務。 當usb主控制器檢測到設備與 驅動相匹配時&…

動態規劃:為什么暴力算法會有重復子問題

第一步:先明確 “子問題” 和 “重復子問題” 的定義 在算法中,“子問題” 不是泛指 “小一點的問題”,而是具有明確 “狀態參數” 的、可獨立求解的問題單元。 狀態參數:描述子問題核心信息的變量(比如 01 背包中的 “…

【網絡】添加路由時,via和dev參數作用、直連路由

文章目錄概述1、帶via1.1 添加路由前的初始狀態1.2. 執行添加路由的命令1.3. 添加路由后的狀態2、不帶 via (使用設備接口),直連3、帶via還是不帶via ?4、dev xx的作用4.1 命令中帶via時,建議不帶 dev eth0 (讓系統自動判斷)4.2 命令中帶via&#xff0c…

云原生---企業級Kubernetes

一、Kubernetes介紹 1.簡介 kubernetes的本質是一組服務器集群,它可以在集群的每個節點上運行特定的程序,來對節點中的容器進行管理。目的是實現資源管理的自動化,主要提供了如下的主要功能: 自我修復:一旦某一個容器…

無人機三維路徑規劃首選算法:RRT_

無人機三維路徑規劃首選算法:RRT* 要判斷哪種算法更適合無人機三維路徑規劃,需先明確無人機三維路徑規劃的核心需求,再結合各算法的底層邏輯與特性進行匹配。以下先梳理核心需求,再逐一分析算法特性,最終通過對比得出結…

CentOS 7 服務器初始化:從 0 到 1 的安全高效配置指南

前言 對于運維或開發人員而言,新到手的 CentOS 7 服務器絕非 “開箱即用”—— 默認的國外軟件源下載緩慢、系統缺乏基礎工具、防火墻未做安全配置,這些問題都會影響后續使用效率與服務器安全性。本文整理了 CentOS 7 服務器初始化的全套實操方案&#…

32.Attention-注意力機制

不是所有的信息都是有用的,或者說重要的。我們應該把注意力放在他該在的地方。 在人工智能領域,注意力機制被廣泛應用。他可以幫助模型關注與當前任務相關的特征,而忽略不重要的特征,以提高準確率。注意力機制本質:即通…

如何設計 “用戶共創型” IP 成長社群模型??

“用戶共創型” IP 成長社群的核心,是從 “IP 單向輸出” 轉向 “IP 與用戶共生”,讓用戶從 “被動接收者” 變為 “主動參與者”,通過 “需求共建、內容共造、價值共享” 形成閉環,既強化用戶歸屬感,又為 IP 注入持續…

Windows 命令行:mkdir 命令

專欄導航 上一篇:Windows 命令行:dir 命令 回到目錄 下一篇:MFC 第一章概述 本節前言 本節,我們來講解一個常見的命令,mkdir 命令。 學習本節知識,需要你首先懂得如何打開一個命令行界面,…

Linux系統編程——進程(函數)

回調函數:atexit()原型: int atexit(void (*function)(void));功能: 注冊進程退出前執行的函數參數: function 函數指針,指向void返回值void參數的函數指針返回值 成功 返回0失敗 …

均勝電子上半年毛利率持續提升,汽車智能化與機器人業務多點突破

8月25日,全球領先的智能汽車科技解決方案提供商均勝電子(600699.SH)發布2025上半年業績,報告期內公司實現營業收入約303.47億元,同比增長12.07%;營業利潤總額約12.47億元,歸母凈利潤同比增長11.…

【QT入門到晉級】進程間通信(IPC)-共享內存

前言 前面分享了幾種IPC通信技術,都有成熟的交互機制(阻塞和非阻塞方式交互),而本文分享的共享內存,更像是系統提供了一張“白紙”,讓多個進程自己構建管理及安全機制,而有些場景只需要簡單的機…

自動化測試概念與 Web 自動化實戰(基于 Selenium)

在軟件測試領域,自動化測試是提升測試效率、保障回歸測試質量的核心手段。尤其對于 C 開發的項目,自動化測試能有效減少重復手工操作,避免新增功能對歷史功能的影響。本文從自動化基礎概念入手,詳解自動化分類、Web 自動化測試核心…

NeRAF、ImVid論文解讀

目錄 一、NeRAF 1、概述 2、方法 3、訓練過程 4、實驗 二、ImVid 1、概述 2、Imvid數據集 3、STG方法 一、NeRAF 1、概述 NeRF類方法僅支持視覺合成功能,缺乏聲學建模能力。對于以往的聲學建模(如NAR/INRAS)會忽略三維場景幾何對聲…

重復文件刪除查找工具 Duplicate Files Search Link v10.7.0

軟件介紹 Duplicate Same Files Searcher 是一款面向 Windows 平臺的專業重復文件檢索與清理工具,兼具符號鏈接替換與 NTFS 高級特性支持,可在無損數據的前提下大幅縮減磁盤冗余。 軟件使用 軟件打開后是英文版,手動切換中文(按…

簡易shell

目錄 一、整體功能概述 函數準備 1.env命令 2.getenv()函數 3.snprintf 4.strtok()函數 三、全局變量 四、核心功能函數解析 1. 信息獲取函數 2. 命令行交互 3. 命令解析 4. 普通命令執行 5. 內置命令處理(核心功能) 五、主函數流程 六、總…

網關資源權限預加載:從冷啟動阻塞到優雅上線的完整閉環

網關資源權限預加載:從冷啟動阻塞到優雅上線的完整閉環 基于 Spring Cloud Gateway + Spring Cloud Alibaba Nacos ——一篇可落地的技術方案與源碼級實現 1. 場景與痛點 在微服務網關層做 統一資源權限校驗 時,必須滿足: 啟動阻塞:所有權限規則加載完成前,不監聽端口,拒…

open webui源碼分析8—管道

我們可以把Open WebUI想象成一個管道系統,數據通過管道和閥門流動。管道作為open webui的插件,可以為數據構建新的通路,可以自定義邏輯和處理數據;閥門是管道的可配置部件,控制數據流過管道時的行為。管道可以理解成用…

深入理解 C 語言 hsearch 哈希表:限制、技巧與替代方案

概述 C 語言標準庫中的 hsearch 系列函數提供了一套簡單易用的哈希表實現,包含在 <search.h> 頭文件中。這組函數雖然接口簡潔,但在實際使用中存在一些重要的限制和注意事項。本文將深入探討 hsearch 的功能特點、設計局限,并提供實用的解決方案和替代建議。 hsearc…