mitmproxy是一個支持HTTP和HTTPS的抓包程序,有類似Fiddler、Charles的功能。除了命令行形式的控制台,mitmproxy還有兩個關聯組件:mitmdump和mitmweb。
mitmdump:它是mitmproxy的命令行接口,利用它我們可以對接Python腳本,用Python實現監聽后的處理。
mitmweb:它是一個Web程序,通過它我們可以清楚觀察mitmproxy捕獲的請求。
mitmproxy使用:
終端鍵入:
$ mitmproxy --listen-host 電腦IP地址 -p 端口號
出現初始界面
手機連上手動代理后出現抓包信息
很好用的教程:https://greenrobot.me/devpost/how-to-debug-android-http-get-started/
這樣就能使用mitmproxy抓到http請求了!
但是!這時會發現mitmproxy不僅抓不到https請求,而且還會阻斷https請求!
解決辦法:
啟動mitmproxy之后,手機網頁搜索mitm.it選擇匹配的證書下載安裝之后就能抓到https的請求了~
雖然只用了一句話就解決這個問題了,但是我試了好久~哭唧唧~這個mitm.it我嘗試了好多次才能正常訪問~不知道咋回事~
終於弄出來了,給自己呱唧呱唧!
接下來的問題就是,怎樣能把想要的信息打印出來?
mitmdump提供了專門的日志輸出功能,可以設定不同級別以不同顏色輸出結果。ctx模塊有log功能,調用不同的輸出方法就可以輸出不同顏色的結果,以方便我們做調試。
簡單的嘗試一下:
from mitmproxy import ctx def request(flow): flow.request.headers['User-Agent'] = 'MitmProxy' ctx.log.info(str(flow.request.headers)) flow.request.query["who"] = "baby!" ctx.log.warn(str(flow.request.query)) ctx.log.error(str(flow.request.headers))
敲好用的良心教程:https://juejin.im/entry/5b3473b7e51d4558cf6e9abe