歡迎光臨
每天分享高質量文章

最好用的中間人攻擊工具mitmproxy

來自:Python之禪(微訊號:VTtalk)

mitmproxy 是 man-in-the-middle attack proxy 的簡稱,譯為中間人攻擊工具,可以用來攔截、修改、儲存 HTTP/HTTPS 請求。做爬蟲離不開這些工具,特別是基於APP的爬蟲。mitmproxy 以命令列終端形式呈現,操作上類似於Vim,同時提供了 mitmweb 外掛,是類似於 Chrome 瀏覽器開發者樣式的視覺化工具。

它是一款基於Python開發的開源工具,最重要的是它提供了Python API,你完全可以透過Python程式碼來控制請求和響應,這是其它工具所不能做到的,這點也是我喜歡這個工具的原因之一。

安裝

sudo pip3 install mitmproxy

啟動

mitmproxy
#或者指定埠
mitmproxy -p 8888

啟動 mitmproxy 之後,預設開啟8080埠, mitmproxy 命令不支援Windows平臺,需要使用 mitmdump 或者 mitmweb 命令代替。Windows系統也可以在官網下載它的EXE檔案進行安裝。

手機或者瀏覽器設定好代理之後,就可以進行抓包分析了,開啟瀏覽器訪問某個網址,mitmproxy 看到的效果是:



當前一共有136個請求,當前選擇的是第16個請求,請求方法是 GET, 傳回的狀態碼是200,代理的埠是8080,透過 J、K 鍵可上下切換到不同的請求,回車可以看到當前選中的請求詳情,包括三部分,Request和Response還有 Detail

mitmproxy 快捷鍵

? 說明檔案  
q 傳回/退出程式 
b 儲存response body 
f 輸入過濾條件
k 上
j 下
h 左
l 右
space 翻頁
enter 進入介面詳情
z 清屏
e 編輯
r 重新請求

HTTPS 抓包配置

對於HTTPS請求,為了能正常抓到請求,需要先安裝證書。沒安裝證書的請求看到的效果是這樣的。

開啟網址 http://mitm.it , 選擇匹配的平臺,下載 HTTPS 證書。並按照對應的步驟進行安裝

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.essay-headers["newessay-header"] = "foo"
   print(flow.response.text)

當你在瀏覽器請求 http://httpbin.org/get ,看到的效果:


你還可以參考這些連結:

官方檔案:https://docs.mitmproxy.org/stable/

GitHub地址:https://github.com/mitmproxy/mitmproxy

更多指令碼例子:https://github.com/mitmproxy/mitmproxy/tree/master/examples/simple

如何在Chrome瀏覽器設定代理:https://jingyan.baidu.com/article/e52e3615a3ef8e40c60c510f.html


●編號533,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

 

資料庫開發

更多推薦18個技術類微信公眾號

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂