這里說下我經(jīng)常使用的代理抓包軟件
- 圖形化抓包工具fiddler
- 命令行 mitmproxy/mitmdump
重中之重:首先對(duì)于代理抓包工具颅拦,要抓取https協(xié)議接口鞭执,證書很重要浙于,請(qǐng)按照各家代理軟件提示去安裝好蝎抽,并信任;其次連接的網(wǎng)絡(luò)屬于同一局域網(wǎng)蜈敢,且代理 host及port均設(shè)置正確
若提示Cannot establish TLS with client (sni: dragate.dc.oppomobile.com): TlsExcept ion("SSL handshake error: Error([('SSL routines', 'ssl3_read_bytes', 'sslv3 aler t certificate unknown')])")
,基本可判斷為證書安裝問題。
-------------------------------------------------------------------------------
?? ?? 若以上操作均正常抚笔,如果你用的恰好是android手機(jī)扶认,莫慌;可以看看你們應(yīng)用打印的錯(cuò)誤日志殊橙,若是java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
辐宾,那么恭喜你,你來對(duì)地方了膨蛮,你手機(jī)系統(tǒng)是不是7.0及以上叠纹?若是,再次恭喜你
?? ?? 這里大概說下原因敞葛,google自從7.0及以上系統(tǒng)誉察,推出了更嚴(yán)格的網(wǎng)絡(luò)完全機(jī)制,且你們開發(fā)也嚴(yán)格按照要求配置了network-security-config
,那么出現(xiàn)抓不到包也十有八九了惹谐,這正好符合google的目的持偏,一切都是為了安全,避免數(shù)據(jù)泄露氨肌。
?? ?? 7.0系統(tǒng)后鸿秆,默認(rèn)情況下,來自所有應(yīng)用的安全連接(使用 TLS 和 HTTPS 之類的協(xié)議)均信任預(yù)裝的系統(tǒng) CA(system區(qū))怎囚,而面向 Android 6.0(API 級(jí)別 23)及更低版本的應(yīng)用默認(rèn)情況下還會(huì)信任用戶添加的 CA 存儲(chǔ)區(qū)(user區(qū))卿叽。而用于預(yù)裝系統(tǒng) CA 證書為 "system"區(qū),用于用戶添加的 CA 證書為 "user"區(qū)恳守,所以知道為什么會(huì)報(bào)找不到證書路徑了吧考婴,壓根不信任你安裝在user區(qū)的證書唄。關(guān)于google 網(wǎng)絡(luò)安全配置說明催烘,詳見:https://developer.android.com/training/articles/security-config
-------------------------------------------------------------------------------
解決辦法:
- Android 只能用7.0以下系統(tǒng)的手機(jī)抓包
- 開發(fā)改變網(wǎng)絡(luò)安全配置及其他手段沥阱,遵循不悖于google針對(duì)7.0及以上系統(tǒng)增強(qiáng)的安全策略,也方便調(diào)試
- 使用root手機(jī)伊群,將代理軟件的證書安裝在system區(qū)考杉,system 區(qū)目錄:
/system/etc/security/cacerts/