前言:
Charles是在 Mac 下常用的網絡封包截取工具,在做移動開發時,我們為了調試與服務器端的網絡通訊協議,常常需要截取網絡封包來分析。
一、主界面介紹?



二、網頁抓包
啟動 Charles 后,需要將 Charles 設置成系統代理,選擇菜單中的 “Proxy” –> “macOS Proxy” 來將 Charles 設置成系統代理。如下所示:

這樣你會發現,你通過瀏覽器請求的網址都會出現在這里。點擊某一個網址后,你會發現右邊會出現這個網址請求的大概信息,點擊具體的請求后會出現request和response等信息。如下圖:

三、手機抓包
Charles 上的設置:
要截取 iPhone 上的網絡請求,我們首先需要將 Charles 的代理功能打開。在 Charles 的菜單欄上選擇 “Proxy”–>“Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的設置。如下圖所示:

iPhone 上的設置:
首先我們需要獲取 Charles 運行所在電腦的 IP 地址,Charles 的頂部菜單的 “Help”–>“Local IP Address”,即可在彈出的對話框中看到 IP 地址,如下圖所示:

在 iPhone 的 “ 設置 ”–>“ 無線局域網 ” 中,可以看到當前連接的 wifi 名,通過點擊右邊的詳情鍵,可以看到當前連接上的 wifi 的詳細信息,包括 IP 地址,子網掩碼等信息。在其最底部有「HTTP 代理」一項,我們將其切換成手動,然后填上 Charles 運行所在的電腦的 IP,以及端口號 8888,如下圖所示:

當然如果要抓取iPhone設備上的HTTPS請求,需要在iPhone上也安裝一個證書,在手機瀏覽器輸入這個網址:http://charlesproxy.com/getssl?,點擊安裝即可。
四、過濾
在 Charles 的菜單欄選擇 Proxy->Recording Settings,然后選擇 Include 欄,選擇Add,然后填入需要監控的協議,主機地址,端口號,這樣就達到了過濾的目的。如下圖:

還有一種方法就是在一個網址上右擊,選擇Focus,然后其他的請求就會被放到Other Hosts的文件夾里面,這樣也達到了過濾的目的。


五、模擬慢速網絡
有時候在測試的時候我們想要模擬一下網絡慢的情況,這時候Charles他是可以幫助到你的,在Proxy->Throttle Setting,然后選擇Enable Throttling,在Throttle Preset下選擇網絡類型即可,具體設置你可以自行拿捏。

如果我們只想模擬指定網站的慢速網絡,可以再勾選上圖中的 “Only for selected hosts” 項,然后在對話框的下半部分設置中增加指定的 hosts 項即可。
六、修改網絡請求
有些時候為了調試服務器的接口,我們需要反復嘗試不同參數的網絡請求。Charles 可以方便地提供網絡請求的修改和重發功能。只需要選中以往的網絡請求,工具欄中點擊 “Edit”,即可創建一個可編輯的網絡請求。如下所示:

七、給服務器做壓力測試
我們可以使用 Charles 的 Repeat 功能來簡單地測試服務器的并發處理能力,方法如下:
我們在想打壓的網絡請求上(POST 或 GET 請求均可)右擊,然后選擇 「Repeat Advanced」菜單項,如下所示:

接著我們就可以在彈出的對話框中,選擇打壓的并發線程數以及打壓次數,確定之后,即可開始打壓。
八、斷點
在Charles發起一個請求的時候,我們是可以給某個請求打一個斷點的,然后來觀察或者修改請求或者返回的內容,但是在這過程中要注意請求的超時時間。
要針對某一個請求設置斷點,只需要在這個請求網址右擊選擇Breakpoints,然后點擊斷點按鈕,就可以斷點某一個請求了。

以上