抓包分析數(shù)據(jù)在移動開發(fā)中十分重要浊服,可以幫助我們更快的了解數(shù)據(jù)構(gòu)成统屈,提高開發(fā)效率。但是在蘋果要求上線的App必須使用HTTS之后牙躺,HTTPS數(shù)據(jù)包的抓取分析較為麻煩愁憔,在此總結(jié)了在mac上使用Charles抓包的詳細(xì)步驟。
首先我們下載最先版本的Charles
官網(wǎng)下載:https://www.charlesproxy.com/download/
免費(fèi)版下載:http://xclient.info/search/s/charles/
一孽拷、開啟網(wǎng)絡(luò)請求記錄吨掌,設(shè)置系統(tǒng)網(wǎng)絡(luò)代理
安裝Charles之后,我們選擇Proxy->Start Recording脓恕,開始記錄網(wǎng)絡(luò)請求膜宋,然后勾選MacOS Proxy(和其他的代理對象如:Mozilla Firefox Proxy火狐瀏覽器),將系統(tǒng)代理設(shè)置通過Charles Proxy。
此時打開系統(tǒng)偏好設(shè)置->網(wǎng)絡(luò)->高級炼幔,我們可以看到本機(jī)HTTP和HTTPS請求被代理到127.0.0.1秋茫,端口號是8888。至此乃秀,我們已經(jīng)完成了基本的網(wǎng)路請求設(shè)置肛著,通過此Mac發(fā)起的HTTP請求,我們都可以通過Charles分析跺讯。
注:在Charles關(guān)閉的時候枢贿,這里的web代理和安全web代理也會變成無勾選狀態(tài)。保證無代理時抬吟,Mac也能夠訪問網(wǎng)絡(luò)萨咕。
二、iPhone數(shù)據(jù)包的抓取
1. 打開Charles的代理功能
為了使用Charles抓取到iPhone設(shè)備的數(shù)據(jù)包火本,我們首先要打開Charles的代理功能危队。選擇Proxy ->Proxy Setting,設(shè)置Port:8888钙畔,選擇Enable TransParent HTTP Proxying茫陆。
2.獲取本機(jī)電腦IP
接下來我們要將手機(jī)的網(wǎng)絡(luò)代理IP設(shè)置為Charles運(yùn)行所在的電腦IP,獲取本機(jī)電腦的IP方法如下:
方法一:8Mac電腦上使用Control +空格鍵擎析,并輸入Terminal 可以進(jìn)入控制臺簿盅,然后鍵入 ifconfig en0命令 挥下,我們查看到當(dāng)前電腦的IP地址。
方法二:通過Charles查看本機(jī)的IP地址:打開Charles ->Help->Local IP Address
3. 設(shè)置手機(jī)網(wǎng)絡(luò)代理IP
我們依次打開iphone “設(shè)置->無線局域網(wǎng)”桨醋,點(diǎn)擊當(dāng)前連接Wifi右側(cè)的詳情按鈕棚瘟。這里顯示了當(dāng)前連接Wifi的基本信息,我們需要將這里底部的HTTP代理改為手動喜最,然后填上Charles運(yùn)行所在電腦的IP和端口號8888偎蘸。如圖:
此時,iPhone的網(wǎng)絡(luò)代理就設(shè)置完成了瞬内,手機(jī)上請求將會被代理到mac上迷雪,我們可以很方便的通過Charles查看到手機(jī)應(yīng)用發(fā)起的網(wǎng)絡(luò)請求數(shù)據(jù)包。
三虫蝶、抓取HTTPS數(shù)據(jù)包
相對于HTTP類的網(wǎng)絡(luò)請求章咧,HTTPS請求更加安全,這也使得抓取這類的數(shù)據(jù)包進(jìn)行分析要麻煩一些能真。抓取HTTPS請求數(shù)據(jù)包進(jìn)行分析赁严,關(guān)鍵的步驟如下:
1. 安裝Charles根證書
打開charles,依次點(diǎn)擊Help -> SSL Proxying -> Install Charles Root Certificate,安裝根證書
2. 設(shè)置證書信任
在安裝證書之后粉铐,我們查看鑰匙串误澳。選擇所有項(xiàng)目,我們會看到一個帶有紅叉標(biāo)記不被信任的Charles證書秦躯。Charles證書默認(rèn)是不信任的忆谓,需要我們手動設(shè)置。右鍵->顯示簡介->點(diǎn)擊信任踱承,我們?nèi)鐖D設(shè)置始終信任倡缠。
3.設(shè)置 SSL 代理
打開charles應(yīng)用,選擇Proxy->SSL Proxying Settings,我們在這里設(shè)置SSL Proxy,點(diǎn)擊面板上的add茎活,如下圖:
在這里我們設(shè)置主機(jī)地址Host是*,使用通配符表示檢測所有網(wǎng)絡(luò)請求昙沦。然后設(shè)置端口號是443
4. iOS設(shè)備安裝證書
最后我們還需要在iOS設(shè)備上安裝證書。點(diǎn)擊 Charles 的頂部菜單载荔,選擇 Help –> SSL Proxying–> Install Charles Root Certificate on a Mobile Device or Remote Browser盾饮,然后就可以看到 Charles 顯示如下彈窗:
然后我們需要打開safari ,輸入網(wǎng)址: http://charlesproxy.com/getssl,
這時候會彈出安裝證書的界面懒熙,我們點(diǎn)擊安裝證書丘损,如圖:
目前為止,我們就完成了Charles抓取HTTPS數(shù)據(jù)包的所有設(shè)置了工扎。查看Charles,我們可以看到數(shù)據(jù)包的內(nèi)容了徘钥。
5. 失敗請求的處理
iOS10.3之后,在上述設(shè)置完成之后肢娘,所有的https請求都會失敗呈础。提示錯誤:Failure SSLHandshake: Received fatal alert: unknown_ca 和You may need to configure your browser or application to trust the Charles Root Certificate.
原因:charles的根證書雖然已經(jīng)在安裝列表中,但在iOS 10.3之后,安裝新的自定義證書默認(rèn)是不受信任的舆驶。如果要信任已安裝的自定義證書,需要手動打開開關(guān)以信任證書。
解決:設(shè)置->通用->關(guān)于本機(jī)->證書信任設(shè)置-> 找到charles proxy custom root certificate然后信任該證書即可. 模擬器也是這樣處理而钞。
四沙廉、使用Charles遇到的問題
1.ipa包上傳失敗
我在使用Charles抓包https之后,在使用applicationLoader上傳ipa包的時候遇到了下面的問題:
Communication error. Please use diagnostic mode to check connectivity. You need to have outbound access to TCP port 443.
解決:將charles關(guān)閉臼节,然后再上傳ipa文件春寿。
至于原因我也沒弄明白颅停,如果哪位朋友知道也可以告訴我一下僚祷。