1.前言
以前剛接觸Android時(shí)候用過(guò)Fiddler抓包api學(xué)習(xí)。轉(zhuǎn)眼幾年過(guò)去了,現(xiàn)在有需要用到抓包,再用回Fiddler發(fā)現(xiàn)不太好用,大部分Https都是提示Tunnel To還有443,看不到接口調(diào)用和數(shù)據(jù)。
朋友推薦Charles,今天就學(xué)習(xí)了一下,寫(xiě)個(gè)文章總結(jié)和記錄。
2.Charles
Charles是一款收費(fèi)的抓包工具,但是安裝之后,默認(rèn)有30天試用期。付費(fèi)的區(qū)別是,無(wú)期限限制,打開(kāi)程序不用等10s(故意惡心免費(fèi)用戶的?/狗頭)。
目前提供win64,macOS,Linux64版本。
3.安裝
到 官網(wǎng) 下載并安裝程序。本人使用Win10,后面都以Win10為例。
安裝過(guò)程沒(méi)什么好說(shuō)的,選擇安裝位置,一直下一步到結(jié)束。
題外話,雖說(shuō)大天朝雖然目前網(wǎng)絡(luò)環(huán)境漸漸正版化,但是發(fā)現(xiàn)這個(gè)軟件還有一些提供破解的/手動(dòng)狗頭。這個(gè)破解比較暴力,手速快點(diǎn)1min不到,就替換個(gè)Charles.jar文件。后面的 鏈接 與我無(wú)關(guān),希望下次用的時(shí)候這個(gè)網(wǎng)址別404了,各位下手輕點(diǎn)。
4.一些配置
打開(kāi)程序之后,默認(rèn)會(huì)開(kāi)啟 Windows proxy,抓取 windows 的訪問(wèn)請(qǐng)求。如果想只抓取手機(jī)的可以在 Proxy->proxy setting->Windows 中關(guān)閉默認(rèn)啟用。
5.抓包手機(jī)Https(Android )
5.1 安裝根證書(shū)
help->SSL Proxy->Install Charles Root Certificate,選擇 安裝證書(shū) ,一直到下一步到到安裝完成。
5.1 手機(jī)上安裝證書(shū)
步驟
-
在windows的Charles程序中,
help->SSL Proxy->Install Charles Root Certificate on a Mobile Device or Remote Browser
提示內(nèi)容的意思是,確認(rèn)手機(jī)使用Charles的代理(主機(jī)地址:端口號(hào)),然后訪問(wèn)chls.pro/ssl去下載并安裝證書(shū)。
提示內(nèi)容 按照提示內(nèi)容操作,首先電腦和手機(jī)在同一個(gè)局域網(wǎng)中,也就是電腦和手機(jī)連接同一個(gè)網(wǎng)絡(luò)??梢赃B接相同的Wifi,或者電腦用網(wǎng)線,手機(jī)用wifi但是確保是同一個(gè)網(wǎng)絡(luò)。
手機(jī)
已連接的wifi設(shè)置中,設(shè)置手動(dòng)代理,代理內(nèi)容在第一步的提示框中給出了。填入電腦主機(jī)地址和端口號(hào)即可。-
設(shè)置完代理后,會(huì)在windows端Charles得到手機(jī)連接提示,選擇
Allow允許!
如果手快點(diǎn)了Deny拒絕,在Charles的Proxy->Proxy Setting中更改端口號(hào),然后重啟Charles,手機(jī)重新配置一下手動(dòng)代理的端口號(hào),就會(huì)重新得到提示。
連接提示,別人的圖 手機(jī)瀏覽器訪問(wèn)
chls.pro/ssl,下載證書(shū)文件。我下載的文件名是charles-proxy-ssl-proxying-certificate.pem,點(diǎn)擊會(huì)提示安裝證書(shū)。
在MIUI12中點(diǎn)擊文件沒(méi)識(shí)別出證書(shū),需要到設(shè)置->密碼與安全->系統(tǒng)安全->加密與憑證,然后選擇從存儲(chǔ)設(shè)備安裝,找到你下載的證書(shū)的文件路徑地址,選擇證書(shū),就會(huì)執(zhí)行安裝操作。安裝后,在設(shè)置->密碼與安全->系統(tǒng)安全->加密與憑證->信任的憑證->用戶能夠看到剛剛安裝的的證書(shū)。
5.2 Charles的SSL代理設(shè)置
Charles進(jìn)入 Proxy -> SSL Proxying Settings 中,勾選 Enable SSL Proxy ,填入 Host 目標(biāo)域名,和 Port端口號(hào)。
- 可以在
Host填入*,端口號(hào)填入443,表示抓取所有Https(443端口)的請(qǐng)求。 - 或者可以在監(jiān)控窗口,看到地址后,右鍵選擇
Enable SSL Proxying,就會(huì)自動(dòng)添加到設(shè)置中了。
值得一說(shuō)的是,在側(cè)邊的 Notes 還非常有人性化的提示,我就是根據(jù)這個(gè)提示設(shè)置了的。

5.3 關(guān)于Android7.0+的Https都是Unkown
這是由于Android7.0+的Https啟用了SSL驗(yàn)證,需要繞過(guò)該驗(yàn)證才能正確抓取。解決也簡(jiǎn)單 Xpose + JustTrustMe。由于現(xiàn)在的手機(jī)基本都不給Root,所以不建議使用 Xpose 了,改為 VirtualXpose。
使用也簡(jiǎn)單,步驟
- 先從 官網(wǎng) 下載
VirtualXpose的apk安裝包。
注意:0.19.0以上版本只支持安裝64位應(yīng)用(安裝目標(biāo)app時(shí)如果是32位會(huì)提示不支持),若你的應(yīng)用是32位,需要安裝下面的0.18.2版本。 - 然后到 Github 上下載
JustTrustMe的apk安裝包,這個(gè)是Xpose框架,用來(lái)繞過(guò)Android的 SSL 機(jī)制。 - 在Android手機(jī)上安裝
VirtualXpose的apk和JustTrustMe的apk。 - 打開(kāi)
VirtualXpose,在設(shè)置中,克隆JustTrustMe和 需要抓包的應(yīng)用。 - 設(shè)置的框架中勾選
JustTrustMe,然后到設(shè)置中重啟VirtualXpose,讓框架生效。 - 打開(kāi)需要抓包的應(yīng)用,就可以在Charles中抓到Https請(qǐng)求了。

