1. 程式人生 > >iOS開發系列-Charles

iOS開發系列-Charles

監控 charles bug img option 訪問 代理 在服務器 enc

概述

Charles相當於一個插在服務器和客戶端之間的“過濾器”。當客戶端向服務器發起請求的時候,先到charles進行過濾,然後charles在把最終的數據發送給服務器;
註意:此時charles發給服務器的數據,不一定是客戶端請求的數據;charles在接到客戶端的請求時可以自由的修改數據,甚至可以直接Block客戶端發的請求
服務器接收請求後的返回數據,也會先到charles,經過charles過濾後再發給客戶端;同理:客戶端接收的數據,不一定就是服務器返回的數據,而是charles給的數據;

技術分享圖片

Charles使用

Charles配置

如果想要抓包,第一件事情,就是把charles設置成為本機和服務端之間的”過濾器”;讓所有的網絡請求全部經過charles,這樣就可以捕獲並記錄到你請求的內容和返回數據了。

設置iPhone的HTTP代理

技術分享圖片

啟動 Charles 後,第一次 Charles 會詢問你是否把Charles設置為系統的代理,選擇Allow。這樣就配置完成了。

charles 主界面的介紹

Charles 主要提供兩種查看封包的視圖,分別名為 “Structure” 和 “Sequence”。
– Structure/結構視圖,將網絡請求按訪問的域名分類,比如某個域名下有n個資源請求,那麽所有此域名下的請求都會在這裏做一個詳細的分類;

  • Sequence/序列視圖,將網絡請求按訪問的時間排序,按照你的電腦的發送請求順序進行。
    技術分享圖片

Charles Filter過濾

求多了有些時候會看不過來,對於需要抓取的某個請求,通常情況下,我們需要對網絡請求進行過濾,只監控向指定目錄服務器上發送的請求。對於這種需求,以下幾種辦法:

方案一

Charles 提供了一個簡單的 Filter 功能,可以輸入關鍵字來快速篩選出 URL 中帶指定關鍵字的網絡請求。
在主界面的中部的 Filter 欄中填入需要過濾出來的關鍵字。例如我查看的域名地址
技術分享圖片

方案二

在 Charles 的菜單欄選擇 “Proxy”->”Recording Settings”,然後選擇 Include 欄,選擇添加一個項目,然後填入需要監控的協議,主機地址,端口號。這樣就可以只截取目標網站的封包了;

Charles 網絡環境模擬

在開發中中有些bug需要在網絡慢的場景中復現。我們可以利用Charles控制手機的網速。
在 Charles 的菜單欄選擇 “Proxy”->”Throttle(節流) Settings”,然後勾選 Enable Throttling 選項,選擇添加一個Throttle preset。這樣就可以了;

技術分享圖片

Charles 抓包內容亂碼解決

在安裝的Charles程序右鍵顯示報內容找到Info.plist文件JVMOptions在默認的-Xmx512m後面敲空格 添加-Dfile.encoding=UTF-8

技術分享圖片

對於其它的一些使用方法可參考:http://zhubangbang.com/charlesproxy

iOS開發系列-Charles