一.Charles簡(jiǎn)介
Charles是mac上常用的截取網(wǎng)絡(luò)封包的工具,Charles通過(guò)將自己設(shè)置成系統(tǒng)的網(wǎng)絡(luò)訪問(wèn)代理服務(wù)器,使得所有的網(wǎng)絡(luò)請(qǐng)求都要通過(guò)他來(lái)完成,從而實(shí)現(xiàn)網(wǎng)絡(luò)封包的截取和分析。
Charles是一款收費(fèi)軟件,可以免費(fèi)試用30天,未付費(fèi)的用戶之后仍可試用,但是每次的使用時(shí)間不能超過(guò)30分鐘,并且每次啟動(dòng)將會(huì)大約10秒的延遲。
Charles的主要功能包括:
1.支持SSL代理,可以截取分析SSL的請(qǐng)求。
2.支持流量控制??梢阅7碌退倬W(wǎng)絡(luò),以及等待時(shí)間較長(zhǎng)的請(qǐng)求。
3支持Ajax調(diào)試,可以自動(dòng)將json或者XML數(shù)據(jù)格式化,方便查看
4.支持AMF,可以將flash Remoting或 Flex Remoting信息格式化,方便查看
5.支持重發(fā)網(wǎng)絡(luò)請(qǐng)求,方便后端調(diào)試
6.支持修改網(wǎng)絡(luò)請(qǐng)求參數(shù)
7.支持網(wǎng)絡(luò)請(qǐng)求的截取的動(dòng)態(tài)修改。
8.檢查HTML,CSS,RSS內(nèi)容是否符合W3C標(biāo)準(zhǔn)。
二.Charles安裝和使用
http://www.charlesproxy.com下載各個(gè)版本的Charles安裝包,他就是dmg文件的,打開(kāi)后正產(chǎn)安裝即可。
網(wǎng)上也有老版charles破解版,百度一下就能找到。
SSL證書安裝
如果你需要分析SSL協(xié)議的內(nèi)容,那么你就需要安裝Charles的CA證書:
1.http://www.charlesproxy.com/ssl.zip下載CA證書。
2.解壓zip文件,雙擊.crt文件。
3.從鑰匙串訪問(wèn)中可以看到已經(jīng)添加成功的證書。

將Charles設(shè)置成系統(tǒng)代理
第一次啟動(dòng)Charles后,Charles會(huì)請(qǐng)求你給他設(shè)置系統(tǒng)代理的權(quán)限,你可以輸入登陸密碼以授予Charles該權(quán)限,也可以忽略該請(qǐng)求,然后在需要將Charles設(shè)置成系統(tǒng)代理時(shí),選擇菜單proxy-> macOX來(lái)將Charles設(shè)置check系統(tǒng)代理。

此時(shí)可查看request和response。

過(guò)濾網(wǎng)絡(luò)請(qǐng)求
通常情況下,我們需要對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行過(guò)濾,只監(jiān)控向指定服務(wù)器上發(fā)送的請(qǐng)求,這種需求,我們可以通過(guò)兩種方法來(lái)設(shè)置:
1.在主界面中的Filter欄中填寫需要過(guò)濾出來(lái)的關(guān)鍵字,例如我們服務(wù)器地址是www.baidu.com,則我們只需要在Filter欄中輸入baidu即可。
2.在charles的菜單欄選擇 proxy -> recording setting,然后選擇include欄,選擇添加一個(gè)項(xiàng)目,然后填入需要監(jiān)控的協(xié)議、主機(jī)和端口號(hào)。這樣就可以直接截取目標(biāo)網(wǎng)站的封包了。

通常情況下,我們使用方法1做一些臨時(shí)性的封包過(guò)濾,使用方法2做一些經(jīng)常性的封包過(guò)濾。
使用Charles協(xié)助iOS開(kāi)發(fā)
1.截取iPhone上的網(wǎng)路封包
charles通常用來(lái)存取本地的網(wǎng)絡(luò)封包,但是當(dāng)需要時(shí),我們也可以用它來(lái)截取其他設(shè)備上的網(wǎng)絡(luò)請(qǐng)求
charles設(shè)置
要截取iPhone的網(wǎng)絡(luò)請(qǐng)求,我們首先需要將Charles的代理功能打開(kāi)。在charles的菜單欄選擇proxy -> proxySetting,填入代理端口8888,并且勾選“enalbe transparent http proxying"
就完成了Charles的設(shè)置。

iphone設(shè)置
查看電腦wifi,打開(kāi)terminal,輸入ifconfig.en0

在iPhone上設(shè)置->無(wú)限局域網(wǎng)中,可以看到當(dāng)前WIFi名,通過(guò)單機(jī)右側(cè)的詳情按鈕,可以看到當(dāng)前連接的wifi詳細(xì)信息,包括ip,子網(wǎng)掩碼等。在其最底部有一個(gè)HTTP代理一項(xiàng),我們將其切換為手動(dòng),將電腦的ip地址手動(dòng)填到服務(wù)器欄,將端口設(shè)置為8888.
設(shè)置模擬器網(wǎng)絡(luò)
在Charles 的菜單上,選擇“proxy”-> "throttle setting"項(xiàng),在對(duì)話的彈框中,勾選 “enable throttling”,并且可以設(shè)置 Throttle Preset的類型,如下圖:

如果我們只是想模擬指定網(wǎng)站的網(wǎng)路速度,可以勾選上圖中的“only for selected hosts”項(xiàng),然后在對(duì)話框的下半部分設(shè)置中添加指定的hosts即可。
高級(jí)功能
Charles默認(rèn)并不截取SSL的信息,如果你想截取某個(gè)網(wǎng)站上所有的SSL網(wǎng)絡(luò)請(qǐng)求,可以在該請(qǐng)求上單擊右鍵,選擇“SSL Proxying”

修改網(wǎng)絡(luò)請(qǐng)求的內(nèi)容
有的時(shí)候?yàn)榱苏{(diào)試服務(wù)器的接口,我們需要反復(fù)嘗試不同的參數(shù)請(qǐng)求。charles可以方便地提供網(wǎng)絡(luò)請(qǐng)求的修改和重發(fā)功能。只需要在以往的網(wǎng)路上單機(jī)右鍵,選擇“edit”,即可創(chuàng)建一個(gè)可編輯的網(wǎng)絡(luò)請(qǐng)求。