Android 真機 Https Charles 抓包

工作需要,同事叫幫忙抓一個廣告請求的 Request, 很簡單的事情最后也搞的比較麻煩。記錄一下,可能的話,希望為后來者提供便利。

個人的例子為,在安卓手機上安裝自己簡單寫的Demo APP,在加載廣告的時候,觀察某個合作伙伴的廣告請求是否正常。電腦使用為 Mac

1. 首先安裝 Charles, 下載地址,正常安裝即可:

https://www.charlesproxy.com/download/latest-release/

2. 設置 Charles:

打開 Charles, 關閉 Proxy -> MacOs Proxy (此功能為抓取 Mac 電腦上的流量)

打開 Proxy -> Proxy Setting -> Enable transparent HTTP proxying (打開 Http 代理), 并填寫端口,理論上隨便填,建議 8888

因為要抓取 Https 的流量,故需要設置 Proxy -> SSL Proxying Settings,勾選 Enable SSL Proxying 并在 SSL Proxying 中將手機IP設置添加,也可以設置 * 允許所有客戶端IP,端口填寫 443(Https 端口)

3. 電腦安裝 Charles 證書

此為Mac下的添加方式, Windows 暫不了解

Help -> SSL Proxying -> Install Charles Root Certificate, 在打開的設置中心中找到 Certificate, 再找到 Charles 證書, 雙擊其證書,可以打開證書詳情,選擇信任即可 (Always Trust)

至此電腦端設置完成,為了抓取traffic, Android 手機端也需要做兩件事:

1. 連接 Charles 代理

首先保證手機與電腦在同一路由下,即同一 Wifi 下, 長按Wifi名,修改網(wǎng)絡,高級 -> 代理 -> 選擇手動設置代理,

此時有幾個選項需要填寫,這里只需要填寫 端口 與主機名 即可,主機名填寫電腦的IP,端口填寫上面自己設置的端口,有個小技巧是,打開Charles, Help -> Install Charles Root Certificate On a mobile device or Remote browser, 其會出現(xiàn)一個對話框,上面有IP名與端口號, 類似于:

Configure your device to use Charles as its HTTP proxy on 192.168.3.2:8888, then browse to chls.pro/ssl to download and install the certificate.

192.168.3.2 即為 IP 名, 8888 即為端口號。

連接成功后,Charles 上會彈出一個對話框,顯示 XXX 設備嘗試連接Charles,是否允許,選擇允許即可。

2. 手機安裝證書

手機連接 Charles 代理后,打開Charles, Help -> Install Charles Root Certificate On a mobile device or Remote browser, 按要求,在手機端任意非自帶瀏覽器輸入?chls.pro/ssl 即可,其會自動開始下載證書,下載完成點擊安裝即可。安裝過程中會要求輸入證書名,輸入任意字符串即可,建議 Charles。

安裝成功后,可以在設置-> 證書 -> 用戶證書中找到,IOS 設備需要另外設置相信證書。

理論上,完成上述就可以開始愉快的抓包了,不過越簡單越容易出問題,遇到的問題:

1. 手機無法連接 Charles

相關設置后,死活連接不是Charles, 個人發(fā)現(xiàn)問題可能是由于家里使用電視機頂盒Wifi,并沒有獨立路由(具體原因不清楚,待研究),后面通過另外一部手機發(fā)送熱點,電腦與測試設備連接該熱點把這個問題解決了,這個問題應該不常見。

2. Https 抓包顯示 Unknow

全部搞定了,然而Https 抓包信息依然 unknow, 網(wǎng)絡大部分都說是證書問題,然而我們信任了證書呀,后面發(fā)現(xiàn) Android 7.0 以上對用戶證書添加了限制,需要在 Android 層添加修改:

因為 APP 為自己寫的,故可直接配置 Network Security Configuration,官網(wǎng)介紹

簡述配置如下:

添加如下文件 res/xml/network_security_config.xml? 內(nèi)容:

之后在 Application 節(jié)點下設置:?android:networkSecurityConfig="@xml/network_security_config"?

本人在APP 設置該配置后,便可以愉快的抓 Https 包體了, 簡書上找到另外一篇文章其第五部分關于這里講的挺詳細,鏈接如下:

http://www.itdecent.cn/p/3b4cd6fdd8a9

寫下此文,作為筆記,紀念多折騰的幾個小時

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容