今年從 iPhone 轉(zhuǎn)戰(zhàn) Android ,遇到的第一個(gè)大坑就是安卓7+的 https 抓包問(wèn)題。
本人手機(jī)型號(hào)是 HUAWEI Mate 20 Pro | EMUI 9.1.0 | Android 9 ,出現(xiàn)的問(wèn)題是手機(jī)安裝 charles-ssl-proxying 證書(shū)后(PC端證書(shū)也安裝完畢),手機(jī)瀏覽器的 https 抓包、解密正常,但是APP中請(qǐng)求的 https 包都是 <unknown>,如下圖:

上網(wǎng)查閱原因說(shuō)是:安卓7+以上由于系統(tǒng)安全性設(shè)置,用戶(hù)在手機(jī)上引入的證書(shū)不會(huì)被系統(tǒng)信任,只有系統(tǒng)證書(shū)才可以。用戶(hù)在手機(jī)安裝的證書(shū)都默認(rèn)放在了用戶(hù)證書(shū)列表,如下圖:

想要將證書(shū)放到系統(tǒng)證書(shū)列表,則需要將手機(jī) root。但是我不想 root 手機(jī)。
一、非 Root 手機(jī)進(jìn)行抓包
感謝大佬提供的解決方法 (點(diǎn)此閱讀原文)
手機(jī)不需要root,只需要安裝以下兩個(gè)工具:
過(guò)程如下:
- 下載并安裝 VirtualXposed
- 下載并安裝 JustTrustMe
- 進(jìn)入 VirtualXposed 應(yīng)用首頁(yè),點(diǎn)擊“六個(gè)點(diǎn)”
VirtualXposed-首頁(yè).jpeg - 進(jìn)入設(shè)置頁(yè)后,點(diǎn)擊”添加應(yīng)用“
添加應(yīng)用 -
勾選 JustTrustMe 模塊,再點(diǎn)擊安裝
勾選 JustTrustMe 模塊后點(diǎn)擊安裝 - 回到設(shè)置頁(yè),點(diǎn)擊“模塊管理”
VirtualXposed-設(shè)置頁(yè)-模塊管理.jpeg - 勾選“JustTrustMe”模塊
JustTrustMe模塊.jpeg - 回到設(shè)置頁(yè),重啟 VirtualXposed
- 再次打開(kāi) VirtualXposed - 設(shè)置頁(yè),點(diǎn)擊“添加應(yīng)用”
VirtualXposed-添加應(yīng)用.jpeg -
以 zhihu 為例,勾選 zhihu,點(diǎn)擊安裝
安裝 zhihu.jpeg - 點(diǎn)擊“VIRTUALXPOSED”后,等待安裝完畢
選擇VirtualXposed.jpeg - 屆時(shí)在 VirtualXposed 中訪(fǎng)問(wèn) zhihu,charles 就可以成功抓到 https 的包了
訪(fǎng)問(wèn) zhihu.jpeg
https 解密成功.png
如果抓到的響應(yīng)結(jié)果是亂碼,那么就是PC端或者移動(dòng)端的CA協(xié)議沒(méi)有安裝好 (Mac端參考鏈接 、IOS端參考鏈接、Windows端和Android端參考鏈接)
非Root抓包實(shí)現(xiàn)原理可以用原作的話(huà)一句概括:“可以將 VirtualXposed 粗暴的當(dāng)虛擬機(jī)對(duì)待。”
二、Root 手機(jī)進(jìn)行抓包
Root手機(jī)原理是將用戶(hù)下載的CA協(xié)議移動(dòng)到系統(tǒng)信任的證書(shū)目錄下。
具體過(guò)程,詳見(jiàn):安卓7.0以上手機(jī)使用charles代理抓取https數(shù)據(jù)
三、其他方式
若是自己開(kāi)發(fā)的應(yīng)用,調(diào)試時(shí)可以通過(guò)修改源碼中的安全設(shè)置實(shí)現(xiàn) (參考鏈接);
若是第三方應(yīng)用,也可以自己解包,更改代碼,重新打包...這里不再贅述。









