中間人攻擊(爬蟲工具) mitmproxy 使用指南

mitmproxy 是 man-in-the-middle proxy 的簡稱,譯爲中間人代理工具,能夠用來攔截、修改、保存 HTTP/HTTPS 請求。以命令行終端形式呈現,操做上相似於Vim,同時提供了 mitmweb 插件,是相似於 Chrome 瀏覽器開發者模式的可視化工具。html

它是基於Python開發的開源工具,最重要的是它提供了Python API,你徹底能夠經過Python代碼來控制請求和響應,這是其它工具所不能作到的,這點也是我喜歡這個工具的緣由之一。python

安裝

sudo pip3 install mitmproxy
複製代碼

啓動

mitmproxy
#或者指定端口
mitmproxy -p 8888
複製代碼

啓動 mitmproxy 以後,默認開啓8080端口, mitmproxy 命令不支持Windows平臺,須要使用 mitmdump 或者 mitmweb 命令代替。Windows系統也能夠在官網下載它的EXE文件進行安裝。git

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

當前一共有136個請求,當前選擇的是第16個請求,請求方法是 GET, 返回的狀態碼是200,代理的端口是8080,經過 J、K 鍵可上下切換到不一樣的請求,回車能夠看到當前選中的請求詳情,包括三部分,Request和Response還有 Detailweb

mitmproxy 快捷鍵編程

? 幫助文檔  
q 返回/退出程序 
b 保存response body 
f 輸入過濾條件
k 上
j 下
h 左
l 右
space 翻頁
enter 進入接口詳情
z 清屏
e 編輯
r 從新請求
複製代碼

HTTPS 抓包配置

對於HTTPS請求,爲了能正常抓到請求,須要先安裝證書。沒安裝證書的請求看到的效果是這樣的。瀏覽器

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

mitmweb

$ mitmweb
複製代碼

啓動 mitmweb 命令後,會有一個相似Chrome開發者工具的Web頁面,功能上相似mitmroxy,同樣能夠查看每一個請求的詳情,包括請求、響應,還能夠對請求和響應內容進行修改,包括過濾、從新發送請求等經常使用功能。工具

mitmdump

$ mitmdump -s script.py
複製代碼

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

# 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)
複製代碼

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

你還能夠參考這些連接:

同步發表博客:foofish.net

https://user-gold-cdn.xitu.io/2017/7/16/4a84df1d3a79ea6aa60d4068ea549f6d?imageView2/0/w/1280/h/960/format/webp/ignore-error/1
相關文章
相關標籤/搜索