iOS开发工具——网络封包分析工具Charles
iOS開發(fā)工具——網(wǎng)絡(luò)封包分析工具Charles
簡介
Charles是在Mac下常用的截取網(wǎng)絡(luò)封包的工具,在做iOS開發(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ò)封包的截取和分析。
Charles是收費(fèi)軟件,可以免費(fèi)試用30天。試用期過后,未付費(fèi)的用戶仍然可以繼續(xù)使用,但是每次使用時(shí)間不能超過30分鐘,并且啟動(dòng)時(shí)將會(huì)有10秒種的延時(shí)。
相關(guān)廠商內(nèi)容
Droid Plugin如何實(shí)現(xiàn)免安裝運(yùn)行第三方插件APK?
在容器時(shí)代,云計(jì)算下一步將如何發(fā)展?
ArchSummit8折優(yōu)惠期,節(jié)省1360元/張!
相關(guān)贊助商
全球架構(gòu)師峰會(huì),12月18-19日,北京·國際會(huì)議中心,8折報(bào)名。
因此,該付費(fèi)方案對(duì)廣大用戶還是相當(dāng)友好的,即使你長期不付費(fèi),也能使用完整的軟件功能。只是當(dāng)你需要長時(shí)間進(jìn)行封包調(diào)試時(shí),會(huì)因?yàn)镃harles強(qiáng)制關(guān)閉而遇到影響。
Charles主要的功能包括:
安裝Charles
去Charles的官方網(wǎng)站(http://www.charlesproxy.com)下載最新版的Charles安裝包,是一個(gè)dmg后綴的文件。打開后將Charles拖到Application目錄 下即完成安裝。
安裝SSL證書
如果你需要截取分析SSL協(xié)議相關(guān)的內(nèi)容。那么需要安裝Charles的CA證書。具體步驟如下:
將Charles設(shè)置成系統(tǒng)代理
之前提到,Charles是通過將自己設(shè)置成代理服務(wù)器來完成封包截取的,所以使用Charles的第一步是將其設(shè)置成系統(tǒng)的代理服務(wù)器。
啟動(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)代理。如下所示:
之后,你就可以看到源源不斷的網(wǎng)絡(luò)請(qǐng)求出現(xiàn)在Charles的界面中。
Charles主界面介紹
Charles主要提供2種查看封包的視圖,分別名為“Structure”和"Sequence"。
大家可以根據(jù)具體的需要在這兩種視圖之前來回切換。
對(duì)于某一個(gè)具體的網(wǎng)絡(luò)請(qǐng)求,你可以查看其詳細(xì)的請(qǐng)求內(nèi)容和響應(yīng)內(nèi)容。如果響應(yīng)內(nèi)容是JSON格式的,那么Charles可以自動(dòng)幫你將JSON內(nèi)容格式化,方便你查看。
過濾網(wǎng)絡(luò)請(qǐng)求
通常情況下,我們需要對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行過濾,只監(jiān)控向指定目錄服務(wù)器上發(fā)送的請(qǐng)求。對(duì)于這種需求,我們有2種辦法。
在主界面的中部的Filter欄中填入需要過濾出來的關(guān)鍵字。例如我們的服務(wù)器的地址是:http://yuantiku.com,那么只需要在Filter欄中填入yuantiku即可。
在Charles的菜單欄選擇"Proxy"->"Recording Settings",然后選擇Include欄,選擇添加一個(gè)項(xiàng)目,然后填入需要監(jiān)控的協(xié)議,主機(jī)地址,端口號(hào)。這樣就可以只截取目標(biāo)網(wǎng)站的封包了。如下圖所示:
通常情況下,我們使用方法1做一些臨時(shí)性的封包過濾,使用方法2做一些經(jī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è)置
首先我們需要獲取Charles運(yùn)行所在電腦的IP地址,打開Terminal,輸入ifconfig en0, 即可獲得該電腦的IP,如下圖所示:
在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,如下圖所示:
設(shè)置好之后,我們打開iPhone上的任意需要網(wǎng)絡(luò)通訊的程序,就可以看到Charles彈出iPhone請(qǐng)求連接的確認(rèn)菜單(如下圖所示),點(diǎn)擊“Allow”即可完成設(shè)置。
截取SSL信息
Charles默認(rèn)并不截取SSL的信息,如果你想對(duì)截取某個(gè)網(wǎng)站上的所有SSL網(wǎng)絡(luò)請(qǐng)求,可以在該請(qǐng)求上右擊,選擇SSL proxy,如下圖所示:
這樣,對(duì)于該Host的所有SSL請(qǐng)求可以被截取到了。
模擬慢速網(wǎng)絡(luò)
在做iPhone開發(fā)的時(shí)候,我們常常需要模擬慢速網(wǎng)絡(luò)或者高延遲的網(wǎng)絡(luò),以測試在移動(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)即可。
修改網(wǎng)絡(luò)請(qǐng)求內(nèi)容
有些時(shí)候?yàn)榱苏{(diào)試服務(wù)器的接口,我們需要反復(fù)嘗試不同參數(shù)的網(wǎng)絡(luò)請(qǐng)求。Charles可以方便地提供網(wǎng)絡(luò)請(qǐng)求的修改和重發(fā)功能。只需要在以往的網(wǎng)絡(luò)請(qǐng)求上點(diǎn)擊右鍵,選擇“Edit”,即可創(chuàng)建一個(gè)可編輯的網(wǎng)絡(luò)請(qǐng)求。如下所示:
我們可以修改該請(qǐng)求的任何信息,包括url地址,端口,參數(shù)等,之后點(diǎn)擊“Execute”即可發(fā)送該修改后的網(wǎng)絡(luò)請(qǐng)求(如下圖所示)。Charles支持我們多次修改和發(fā)送該請(qǐng)求,這對(duì)于我們和服務(wù)器端調(diào)試接口非常方便。
總結(jié)
通過Charles軟件,我們可以很方便地在日常開發(fā)中,截取和調(diào)試網(wǎng)絡(luò)請(qǐng)求內(nèi)容,分析封包協(xié)議以及模擬慢速網(wǎng)絡(luò)。用好Charles可以極大的方便我們對(duì)于帶有網(wǎng)絡(luò)請(qǐng)求的App的開發(fā)和調(diào)試。
參考鏈接:
感謝李永倫對(duì)本文的審校。
給InfoQ中文站投稿或者參與內(nèi)容翻譯工作,請(qǐng)郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ)或者騰訊微博(@InfoQ)關(guān)注我們,并與我們的編輯和其他讀者朋友交流。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的iOS开发工具——网络封包分析工具Charles的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像拼接 SIFT资料合集
- 下一篇: Deep Learning科普帖