一、安裝Charles
二、使用
1.http抓包
1.1 現在我們默認是在進行iOS開發,首先確保iPhone和Mac是在同一個局域網下(連同一個WiFi)。然后查看Mac的IP地址(打開網絡偏好設置即可看到),假設我的IP地址為:192.168.1.2. 然后進入iPhone,進行HTTP代理設置,從關閉改為手動,在服務器位置輸入剛才Mac的IP地址。在端口位置輸入8888.如圖:
1.2 然后就可以開始進行抓包了。打開Charles,會彈出是否允許,選擇Allow即可。然后在iPhone上打開你要抓包的App,在Charles上就會看到抓包結果:
2.https抓包
Https抓包配置比Http抓包配置麻煩一點點。首先把證書(在壓縮包中的crt文件)安裝到iPhone上(裝證書通過郵件的方式發送到iphone上的郵件應用中,點擊即可自動安裝)。安裝完成以后,其他配置都和http抓包一樣。額外的配置如下(我是最新的3.11版本,配置可能與其他網上3.x版本的配置稍有不同):
2.1 點擊Proxy-->SSL Proxying Settings ,就會出現如下界面:
勾選Enable SSL Proxying,然后點擊 Add 按鈕,按下圖格式進行配置(*號為通配符,表示可以對任意主機的任意端口的請求進行抓包,也可以指定某一主機和端口):
2.3 經過以上步驟,就可以進行Https抓包了。其他操作過程同http抓包。
注意:當你抓包結束后,就要去iPhone里把網絡的HTTP代理關閉,否則可能會造成無法上網的情況。
三、抓包結果詳解
3.1 http抓包結果
如果按照上面的過程配置好后,在手機上使用任意應用請求網絡后(注意一定要用真機才可以),就會得到http請求的抓包結果,如下圖:
左側是顯示結構:Structure是樹狀結構顯示,Sequence是水平結構顯示。兩者基本類似,我以樹狀結構來進行介紹。左側的樹狀結構是我進行網絡請求的url鏈接,每一個層級表示了以“/”隔開的子域名。通過上述的代碼也可以看到我GET請求的url鏈接是:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=18888888888&userId=
右側是詳情頁,其中第一個Overview是概覽。我對一些字段進行介紹:
(1)URL:我進行網絡請求的鏈接;
(2)Status:當前狀態,complete表示請求完成;
(3)Responce Code:返回碼。不同的接口,不同的請求結果,返回碼都不同;
(4)Protocol:使用的協議;
(5)Method:請求方式,如GET請求,POST請求等;
(6)Kept Alive:判斷當前是否正在鏈接(活躍);
(7)Content-Type:發送的內容類型,如這里用的是XML文本,以UTF8的方式發送;
(8)Client Address:客戶端的IP地址;
(9)Remote Address:遠程服務器的IP;
Timing:
(10)Request Start Time:請求開始的時間;
(11)Request End Time:請求結束的時間;
(12)Response Start Time:返回開始的時間;
(13)Response End Time:返回結束的時間;
Size:
(14)Request Header :請求的頭部大小;
(15)Request Header:返回的頭部大小;
(16)Request : 請求發送的大小;
(17)Response:返回數據的大小;
(18)Total:所有數據大小;
(19)Request Compression :請求壓縮;
(20)Response Compression: 返回壓縮;
第二個頁面"Request"是關於請求發送的。下面的Headers,Query String,Raw。
(1)Headers:發送請求的頭部信息;
(2)Query String:發送參數列表;
(3)Raw:發送的原生數據,包括了頭部和參數;
右側的"Response"的是關於所有返回信息的。
(1)Headers:是返回的頭部信息;
(2)Text:返回信息(除去頭部)后的文本;
(3)Hex:返回信息的16進制表示;
(4)XML:我返回的數據是XML。如果你返回的是JSON,這里就會顯示JSON;
(5)XML Text:如果你返回JSON,這里會顯示JSON Text;
(6)Raw:返回的所有原生數據,包括頭部;
"Summary"里面是發送數據的一些簡要信息。
"Chart"是一些簡要信息的圖表表示。
Charles頂部的一些常用的工具欄做一個介紹:
(1)New Session:新建一個會話。也就是在一個新的Charles界面查看網絡情況;
(2)Open Session:打開一個之前保存的會話;
(3)Close the current Session:關閉當前的會話;
(4)Save the current Session:保存當前的會話;
(5)Clear the current Session:清空當前的會話(比較方便,常用);
(6)Find Text in the current session:相當於查找功能;
3.2 https抓包結果
由於目前iOS9更改了對於https網絡的安全機制,所以還需要在iPhone上安裝一個證書,安裝方式如下:
在iPhone的Safari瀏覽器中直接輸入網址:http://www.charlesproxy.com/getssl 。進行安裝Custom Root證書.安裝完成之后可以進入設置-->通用-->描述文件,里面可以看到你所有安裝的證書。到目前為止,對於https抓包,至少已經安裝了兩個證書了,第一個也就是在前面安裝的。
現在打開iPhone的任意一個App,查看抓包結果:
其中http打頭的都是通過http抓包生成的;https打頭的則是通過https抓包生成的。如果你沒有配置好https抓包,那么https前面的是一把鎖,抓包成功的才是顯示藍色小球。
某一個https抓包結果如下:一些關於使用方式、參數的介紹同http抓包。