一、介紹
Python mitmproxy是一款針對開發人員的免費、開源的代理伺服器、攔截器和反向代理伺服器,也是一種靠譜的方式來攔截HTTP/HTTPS流量,適用於Web開發和測試人員。mitmproxy可以攔截並修改來自客戶端和伺服器的HTTP流量,還可以攔截WebSocket、TCP、DNS和其他流量。
Mitmproxy是基於Python語言編寫的,可以使用Python編寫自定義插件,支持跨平台使用,可在macOS、Linux和Windows上運行。同時,mitmproxy可以通過網頁界面進行交互操作,展示請求和響應的精細信息。
二、安裝與配置
安裝mitmproxy很簡單,只需要在終端執行下面的pip命令即可:
pip install mitmproxy
在安裝之後,可以使用 mitmdump,mitmproxy,mitmweb 這三個工具。
在使用mitmproxy時,需要配置你的設備的代理,例如在手機的無線網路設置里,將代理設置為 mitmproxy 所在的伺服器 ip 和埠號,如 192.168.0.1:8080。
三、基礎使用
1. HTTP代理
mitmproxy最常用的功能就是作為一個HTTP代理,可以查看請求和響應的詳細信息,並且可以對信息進行修改和攔截。可以在終端輸入 mitmproxy 命令開啟代理監控:
mitmproxy
此時mitmproxy服務就可以進行HTTP代理攔截了,同時我們也可以通過 mitmproxy 的 Web 界面進行監控。
2. 安全代理
mitmproxy支持HTTPS的攔截和證書自動配對,可以查看HTTPS加密信息的加密信息。我們需要在終端輸入 mitmproxy –ssl-insecure 命令來開啟。使用 mitmdump –set ssl_insecure=True 可以收到 MITM 攻擊警告。
mitmproxy --ssl-insecure
3. WebSocket代理
mitmproxy支持攔截WebSocket流量,還能夠查看和修改WebSocket通信內容。需要在終端輸入 mitmproxy –mode reverse:https://[domain] 命令設置反向代理,並可以通過瀏覽器或其他應用來發送和接收WebSocket流量。
mitmproxy --mode reverse:https://example.com
四、自定義插件
mitmproxy還提供了強大的插件和腳本語言API,可以使用Python編寫自定義插件,實現對於請求、響應、WebSocket通信等各種流量進行定製化的攔截和修改。
以下是一個例子,實現了對指定URL的請求響應進行替換的操作:
from mitmproxy import http def response(flow: http.HTTPFlow) -> None: if flow.request.pretty_url == "https://example.com": flow.request.headers["myheader"] = "test" flow.response = http.HTTPResponse.make( 200, # (optional) status code b"Hello World", # (optional) content {"Content-Type": "text/html"} # (optional) headers )
在命令行中輸入 mitmproxy -s [filename]即可運行自定義插件。
五、總結
Python mitmproxy是一款強大的代理伺服器和攔截器,可以監控HTTP、HTTPS、WebSocket和其他流量,支持自定義插件,具有很強的靈活性和可擴展性。儘管 mitmproxy 在使用過程中有些小瑕疵,但在Web開發和測試中,mitmproxy 是一種非常實用的工具。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/256951.html