MitmProxy使用:mitmproxy、mitmweb、mitmdump


 

介紹

mitmproxy是Python編寫的一款功能完善的代理工具,mitmproxy是一款支持攔截HTTP和HTTPS請求和響應並即時修改它們的交互式中間人代理工具。同時它提供了Python API給開發者編寫插件用來自定義對流量進行處理和修改。

為什么選擇 mitmproxy

  • 相對於我們常用的 fiddle 代理工具,它是可以跨平台;
  • 相對於跨平台的 charles 代理工具,它是開源免費的;
  • 最重要的一點,也是為什么我們采用 mitmproxy 來進行做 Mock,它支持使用 Python 進行二次開發,這樣就可以結合業務進行靈活拓展了。

mitmproxy 構成

  • mitmproxy:是一個控制台工具,允許交互式檢查和修改 HTTP 流量;
  • mitmweb:mitmproxy 是基於 Web 的用戶界面,它允許交互式檢查和修改 HTTP 流量;
  • mitmdump:mitmproxy 的命令行版本。它提供了類似 tcpdump 的功能,可查看、記錄和以編程方式轉換 HTTP 流量。

安裝

pip3 install mitmproxy

啟動

mitmproxy
#或者指定端口
mitmproxy -p 8888

啟動 mitmproxy 之后,默認開啟8080端口, mitmproxy 命令不支持Windows平台,需要使用 mitmdump 或者 mitmweb 命令代替。Windows系統也可以在官網下載它的EXE文件進行安裝。

快速部署

設置本地代理

export http_proxy="127.0.0.1:8080"

拉取mitmproxy鏡像

docker pull mitmproxy/mitmproxy

運行鏡像

docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy mitmproxy

 

mitmproxy 控制台

快速測試

curl http://readtest.cn/

訪問結果:

 

 

 注意:現在訪問https無法劫持,需要訪問http://mitm.it 來安裝證書,選擇匹配的平台,下載 HTTPS 證書。並按照對應的步驟進行安裝

mitmproxy 快捷鍵

? 幫助文檔  
q 返回/退出程序 
b 保存response body 
f 進入編輯模式,可在最下面輸入過濾條件,ESCEnter退出編輯
  • !(~c 200) #顯示所有返回不是200的請求
  • !(~c 200) & ~d safecode #顯示域名包含safecode,返回不是200的請求
  • ~m post & ~u safe #顯示請求的鏈接里面包含safe的post請
k 上
j 下
h 左
l 右
space 翻頁
enter 進入接口詳情
z 清屏
e 編輯
r 重新請求

mitmweb

$ mitmweb

啟動 mitmweb 命令后,會有一個類似Chrome開發者工具的Web頁面,功能上類似mitmroxy,一樣可以查看每個請求的詳情,包括請求、響應,還可以對請求和響應內容進行修改,包括過濾、重新發送請求等常用功能。

mitmdump

$ mitmdump -s script.py

mitmdump 命令最大的特點就是可以自定義腳本,你可以在腳本中對請求或者響應內容通過編程的方式來控制,實現數據的解析、修改、存儲等工作

# script.py
from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:
    # 將請求新增了一個查詢參數
    flow.request.query["mitmproxy"] = "rocks"

def response(flow: http.HTTPFlow) -> None:
    # 將響應頭中新增了一個自定義頭字段
    flow.response.headers["newheader"] = "foo"
    print(flow.response.text)

官網: https://mitmproxy.org
文檔:http://docs.mitmproxy.org/en/v0.18.2/introduction.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM