使用mitmproxy給手機app抓包
工作中經常需要抓取手機app的網絡報文,比方說某個圖片無法訪問的問題,只在手機app端出現,web端正常。這個時候你需要抓包快速定位問題原因,通常的操作都是在電腦上面安裝個抓包軟件用作代理,手機設置連接這個代理,這樣手機的網絡報文會經過抓包軟件,自然就可抓取解析報文細節了。掌握了網絡報文細節,就好象chrome的調試工具一樣,一切無所遁形。
常見的抓包軟件爲 Charles、Fiddler、Wireshark等,Charles和Fiddler都是收費軟件,Wireshark適合較底層的網絡報文分析,本文推薦 mitmproxy 是個開軟件(MIT License), 不用花錢也夠用,看github的貢獻記錄這軟件是2016年才活躍發力。
有必要介紹下名字,mitm 表示 Man-in-the-middle attack(中間人攻擊),proxy 即代理,組合起來mitmproxy,這樣更加便於記住。
1. 安裝
-
最簡單的安裝方式,因爲是python編寫的,可直接pip安裝(推薦pip安裝,省事):
pip install mitmproxy
-
其它安裝方式:
參考官方文檔 https://docs.mitmproxy.org/stable/overview-installation/
Linux用戶可以直接去官網下載壓縮包,解壓即可。
2. 簡介
安裝完成後,包含三個工具
-
mitmproxy gives you an interactive command-line interface
命令行界面(CUI?),可以在終端上面完成各種操作。
-
mitmweb gives you a browser-based GUI
Web圖形界面,類似chrome的調試界面,不喜歡命令行的個人建議使用這個
-
mitmdump gives you non-interactive terminal output
命令行工具,可以簡單理解爲tcpdump類似的工具
3. 搭建抓包環境
環境圖示:
電腦上啓動 mitmproxy 或者 mitmweb,直接輸入命令啓動,默認8080全網卡監聽:
1 ➜ ~ ss -lnt |grep 8080
2 LISTEN 0 100 0.0.0.0:8080 0.0.0.0:*
3 LISTEN 0 100 [::]:8080 [::]:*
手機端連接WiFi,找到代理設置的地方,填上電腦ip和port,意思就是手機訪問網絡的時候,流量會走代理(即電腦上的ip:port服務),這樣代理軟件才能解析處理。
要點
現在手機app大部分都使用https了,這涉及到信任證書的問題。 以iOS爲例,WiFi設置好代理後,瀏覽器訪問 mitm.it,這個網址 http://mitm.it/,根據頁面上面的指引下載對應平臺的證書。
安裝好證書後(不會安裝網上搜下),一定要注意,新版的iOS系統還要選擇完全信任(這一步很關鍵,Settings > General > About > Certificate Trust Settings 這樣設置)。英文說明如下:
On recent iOS versions you also need to enable full trust for the mitmproxy root certificate:
Go to Settings > General > About > Certificate Trust Settings. Under “Enable full trust for root certificates”, turn on trust for the mitmproxy certificate.
不這樣的設置的話,部分https流量可能無法分析,握手階段證書校驗不會成功,連接斷開。
設置好環境後,即可開始抓包了,手機上開啓目標App,點擊後抓包軟件就會刷新報文列。
三種方式示例如下:
1). mitmproxy
啓動,直接輸入命令:
mitmproxy
命令行界面如圖所示,抓取的B站。
上方爲報文信息,下方爲命令指引,報文列移動貌似支持vim快捷鍵(gg G等),按Enter進入詳情頁,q退出,也支持鼠標點擊,稍微摸索下就會用了,不多解釋。
2). mitmweb
啓動,直接輸入命令:
mitmweb
會直接開啓個瀏覽器tab頁,抓取的手機微信。
點擊報文列,右側界面會顯示請求頭、反回頭等信息。
3). mitmdump
這個感覺有tcpdump,暫時用不到,需要使用的可以去翻看下官方文檔。
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。
相關文章:
- Linux安裝最新版本Python
- Ubuntu 22.10連接藍牙耳機報錯br-connection-profile-unavailable解決方法
- Minetest試玩
- Gnome任務欄高度更改
- alacritty無法輸入中文以及標題欄問題
- Readline常用快捷鍵
- Ubuntu連接AirPods耳機
- Ubuntu連接AirPods耳機
- Rime輸入法引擎和四葉草輸入方案
- k8s的startupProbe探針中initialDelaySeconds是否有效