一闽瓢、抓包工具介紹
- Charles是一款十分流行的api抓包工具接癌,提供了多種抓包所需的功能。缺點(diǎn)是不支持二次開發(fā)扣讼。
- mitmproxy是基于python開發(fā)的開源的抓包工具缺猛,同樣功能強(qiáng)大⊥址可惜mitmproxy只能基于控制臺或web操作荔燎,沒有單獨(dú)的GUI,操作遠(yuǎn)不如Charles方便销钝。但是mitmproxy有一個(gè)極大的優(yōu)勢和亮點(diǎn)---它提供了基于python的API有咨,可以自定義腳本控制請求與響應(yīng)。
二蒸健、關(guān)于Charles的思考
在日常抓包測試工作中座享,Charles提供的rewrite、breakingpoint似忧、maplocal等功能真的很好用渣叛。
但是有時(shí)候需要對抓包過程進(jìn)行實(shí)時(shí)修改、數(shù)據(jù)提取橡娄、批量處理等诗箍,Charles就顯得力不從心。這時(shí)候一般是利用python腳本直接發(fā)送請求去處理挽唉,但是數(shù)據(jù)準(zhǔn)備會比較繁瑣滤祖。或者直接用強(qiáng)大的mitmproxy工具瓶籽,可惜抓包過程不夠直觀匠童。
有沒有辦法能夠讓Charles抓包也支持自定義腳本呢?
答案是可以的塑顺。
三汤求、將Charles與mitmproxy組合俏险?
原理:可以將mitmproxy作為Charles的上級代理⊙镄鳎客戶端發(fā)起的請求先經(jīng)過Charles竖独,再經(jīng)過mitmdump,最后到達(dá)服務(wù)器挤牛。利用mitmdump提供的python api彌補(bǔ)Charles不能二次開發(fā)的缺點(diǎn)莹痢。
四、配置方法
3.1 前置條件
- mitmproxy安裝
pip3 install mitmproxy
- 安裝Charles證書
連接Charles代理墓赴,瀏覽器訪問chls.pro/ssl
安裝證書竞膳。 - 安裝mitmproxy證書
連接mitmproxy代理,瀏覽器訪問mitm.it
安裝證書诫硕。
3.2 使用方法
- 啟動mitmproxy坦辟,端口8080,并加載自定義的腳本章办。
mitmdump -p 8080 -s myScript.py
- 啟動Charles锉走,打開
Proxy > External Proxy Setting
設(shè)置項(xiàng)。 - 勾選
Use external proxy servers
項(xiàng)纲菌,使用代理挠日。 - 勾選
Web Proxy (HTTP)
項(xiàng),右側(cè)server項(xiàng)填入mitmproxy的地址和端口翰舌。如:localhost:8080
嚣潜。該選項(xiàng)表示將http請求代理到mitmproxy。 - 勾選
Secure Web Proxy (HTTP)
項(xiàng)椅贱,配置同上懂算。該選項(xiàng)表示將https請求代理到mitmproxy。 - 手機(jī)連接Charles代理庇麦,按照正常抓包使用即可计技。
- 若不想使用mitmproxy,關(guān)閉Charles中的
External Proxy Setting
+ 停用mitmproxy即可山橄。
3.3 已知存在的問題
- 在Charles中使用repeat功能垮媒,重復(fù)發(fā)送https請求時(shí),mitmproxy會將請求攔截航棱,返回400狀態(tài)碼睡雇。原因是mitmproxy的安全校驗(yàn)機(jī)制導(dǎo)致。詳細(xì)可參考:mitmproxy討論區(qū)