iOS開發系列-Charles
概述
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