本文的內(nèi)容主要包括:
- Charles 的簡介
- 將 Charles 設(shè)置成系統(tǒng)代理
- 過濾網(wǎng)絡(luò)請(qǐng)求
- 截取 iPhone 上的網(wǎng)絡(luò)封包
- 截取 Https 通訊信息
- 模擬慢速網(wǎng)絡(luò)
Charles 的簡介
Charles 是在 Mac 下常用的網(wǎng)絡(luò)封包截取工具梦碗,在做移動(dòng)開發(fā)時(shí),我們?yōu)榱苏{(diào)試與服務(wù)器端的網(wǎng)絡(luò)通訊協(xié)議蓖救,常常需要截取網(wǎng)絡(luò)封包來分析洪规。
Charles 通過將自己設(shè)置成系統(tǒng)的網(wǎng)絡(luò)訪問代理服務(wù)器,使得所有的網(wǎng)絡(luò)訪問請(qǐng)求都通過它來完成循捺,從而實(shí)現(xiàn)了網(wǎng)絡(luò)封包的截取和分析斩例。
除了在做移動(dòng)開發(fā)中調(diào)試端口外,Charles 也可以用于分析第三方應(yīng)用的通訊協(xié)議从橘。配合 Charles 的 SSL 功能念赶,Charles 還可以分析 Https 協(xié)議础钠。
附:可以去Charles 的官方網(wǎng)站下載最新版本,Charles破解
將 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” -> “Mac OS X Proxy” 來將 Charles 設(shè)置成系統(tǒng)代理。如下所示:
??翻具,你在Safari上進(jìn)行的網(wǎng)絡(luò)請(qǐng)求出現(xiàn)在 Charles 的界面中了履怯。
注:Chrome 和 Firefox 瀏覽器默認(rèn)并不使用系統(tǒng)的代理服務(wù)器設(shè)置,而 Charles 是通過將自己設(shè)置成代理服務(wù)器來完成封包截取的裆泳,所以在默認(rèn)情況下無法截取 Chrome 和 Firefox 瀏覽器的網(wǎng)絡(luò)通訊內(nèi)容叹洲。如果你需要截取的話,在 Chrome 中設(shè)置成使用系統(tǒng)的代理服務(wù)器設(shè)置即可工禾,或者直接將代理服務(wù)器設(shè)置成 127.0.0.1:8888 也可達(dá)到相同效果运提。
過濾網(wǎng)絡(luò)請(qǐng)求
- 方法一:在主界面的中部的 Filter 欄中填入需要過濾出來的關(guān)鍵字。例如http://www.reibang.com , 那么只需要在 Filter 欄中填入 www.jianshu 即可闻葵。
- 方法二:在 Charles 的菜單欄選擇 “Proxy”->”Recording Settings”民泵,然后選擇 Include 欄,選擇添加一個(gè)項(xiàng)目槽畔,然后填入需要監(jiān)控的協(xié)議栈妆,主機(jī)地址,端口號(hào)厢钧。這樣就可以只截取目標(biāo)網(wǎng)站的封包了鳞尔。如下圖所示:
通常情況下,我們使用方法一做一些臨時(shí)性的封包過濾早直,使用方法二做一些經(jīng)常性的封包過濾寥假。 - 方法三:在想過濾的網(wǎng)絡(luò)請(qǐng)求上右擊,選擇 “Focus”霞扬,之后在 Filter 一欄勾選上 Focussed 一項(xiàng)糕韧,如下圖所示:
這種方式可以臨時(shí)性的,快速地過濾出一些沒有通過關(guān)鍵字的一類網(wǎng)絡(luò)請(qǐng)求喻圃。
截取 iPhone 上的網(wǎng)絡(luò)封包
Charles 通常用來截取本地上的網(wǎng)絡(luò)封包萤彩,但是當(dāng)我們需要時(shí),我們也可以用來截取其它設(shè)備上的網(wǎng)絡(luò)請(qǐng)求级及。下面我就以 iPhone 為例乒疏,講解如何進(jìn)行相應(yīng)操作。
-
Charles 上的設(shè)置
要截取 iPhone 上的網(wǎng)絡(luò)請(qǐng)求饮焦,我們首先需要將 Charles 的代理功能打開怕吴。在 Charles 的菜單欄上選擇 “Proxy”->”Proxy Settings”窍侧,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的設(shè)置转绷。如下圖所示:
-
iPhone 上的設(shè)置
1.首先我們需要獲取 Charles 運(yùn)行所在電腦的 IP 地址伟件,Charles 的頂部菜單的 “Help”->”Local IP Address”,即可在彈出的對(duì)話框中看到 IP 地址议经,如下圖所示:
2.在 iPhone 的 “ 設(shè)置 “->” 無線局域網(wǎng) “ 中斧账,可以看到當(dāng)前連接的 wifi 名,通過點(diǎn)擊右邊的詳情鍵煞肾,可以看到當(dāng)前連接上的 wifi 的詳細(xì)信息咧织,包括 IP 地址,子網(wǎng)掩碼等信息籍救。在其最底部有「HTTP 代理」一項(xiàng)习绢,我們將其切換成手動(dòng),然后填上 Charles 運(yùn)行所在的電腦的 IP蝙昙,以及端口號(hào) 8888闪萄,如下圖所示:
3.設(shè)置好之后,我們打開 iPhone 上的任意需要網(wǎng)絡(luò)通訊的程序奇颠,就可以看到 Charles 彈出 iPhone 請(qǐng)求連接的確認(rèn)菜單败去,點(diǎn)擊 “Allow” 即可完成設(shè)置。
截取 Https 通訊信息
安裝證書
如果你需要截取分析 Https 協(xié)議相關(guān)的內(nèi)容烈拒。那么需要安裝 Charles 的 CA 證書圆裕。具體步驟如下。-
首先我們需要在 Mac 電腦上安裝證書荆几。點(diǎn)擊 Charles 的頂部菜單葫辐,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,然后輸入系統(tǒng)的帳號(hào)密碼伴郁,即可在 KeyChain 看到添加好的證書。如下圖所示:
需要注意的是蛋叼,即使是安裝完證書之后焊傅,Charles 默認(rèn)也并不截取 Https 網(wǎng)絡(luò)通訊的信息,如果你想對(duì)截取某個(gè)網(wǎng)站上的所有 Https 網(wǎng)絡(luò)請(qǐng)求狈涮,需要選擇 SSL proxy狐胎,官網(wǎng)提示如下:
Choosing hosts to SSL Proxy
You must specifically identify the host names you want to enable SSL Proxying on. The list is in the Proxy Settings, SSL tab. You can also right-click on a host name in the structure view and turn on or off SSL Proxying.
After adding a host name to the SSL Proxying list you may need to restart Charles for existing browser sessions to change.
If you want to SSL Proxy all host names then enter * into the host names list in the SSL Proxying Settings.
這樣,對(duì)于該 Host 的所有 SSL 請(qǐng)求可以被截取到了歌馍。
截取移動(dòng)設(shè)備中的 Https 通訊信息
-
如果我們需要在 iOS 或 Android 機(jī)器上截取 Https 協(xié)議的通訊內(nèi)容握巢,還需要在手機(jī)上安裝相應(yīng)的證書。點(diǎn)擊 Charles 的頂部菜單松却,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”暴浦,然后就可以看到 Charles 彈出的簡單的安裝教程溅话。如下圖所示:
- 按照我們之前說的教程,在設(shè)備上設(shè)置好 Charles 為代理后歌焦,在手機(jī)瀏覽器中訪問地址:http://charlesproxy.com/getssl, 即可打開證書安裝的界面飞几,安裝完證書后,就可以截取手機(jī)上的 Https 通訊內(nèi)容了独撇。不過同樣需要注意屑墨,默認(rèn)情況下 Charles 并不做截取,你還需要在要截取的網(wǎng)絡(luò)請(qǐng)求上右擊纷铣,選擇 SSL proxy 菜單項(xiàng)卵史。
模擬慢速網(wǎng)絡(luò)
-
在做移動(dòng)開發(fā)的時(shí)候,我們常常需要模擬慢速網(wǎng)絡(luò)或者高延遲的網(wǎng)絡(luò)搜立,以測(cè)試在移動(dòng)網(wǎng)絡(luò)下以躯,應(yīng)用的表現(xiàn)是否正常。Charles 對(duì)此需求提供了很好的支持儒拂。
在 Charles 的菜單上寸潦,選擇 “Proxy”->”Throttle Setting” 項(xiàng),在之后彈出的對(duì)話框中社痛,我們可以勾選上 “Enable Throttling”见转,并且可以設(shè)置 Throttle Preset 的類型。如下圖所示:
- 如果我們只想模擬指定網(wǎng)站的慢速網(wǎng)絡(luò)蒜哀,可以再勾選上圖中的 “Only for selected hosts” 項(xiàng)斩箫,然后在對(duì)話框的下半部分設(shè)置中增加指定的 hosts 項(xiàng)即可。