Charles是一款抓包神器,它是Java開發的跨平台的軟件,不僅可以在Mac上使用,Linux以及Window下都是可以使用的,當然需要安裝JDK,才能運行,他是收費的,需要進行破解.
破解操作:將下載的文件里的Charles.jar 替換掉包內容里的Charles.jar即可
HTTP抓包
http抓包比較簡單,基本上只要打開了charles,然后隨便一個網絡請求,就可以在charles中看到抓取的信息了,如下:
根據抓包可以看出該請求的請求方式、請求地址及cookie信息等,也可以查看接口請求結果返回,如下:
charles 客戶端抓包
1. 獲取charles所有pc的IP地址,可以通過cmd,輸入ipconfig進行查看
2. 設置手機代理,設置wifi-選擇【顯示高級選項】-【代理】選擇為手動,【服務器主機名】為charles所在pc的IP,【服務器端口】為charles默認端口8888
3. 也可以修改端口,找到charles的Proxy-Proxy Settings,可以看到HTTP Proxy的端口默認為:8888
4. 代理設置成功后,charles頁面彈出提示,是否允許charles作為手機的網絡請求代理,如下:
5. iOS/Android設備打開你要抓包的app進行網絡操作
Charles 主要提供兩種查看封包的視圖,分別名為 “Structure” 和 “Sequence”。
-
Structure 視圖將網絡請求按訪問的域名分類。
-
Sequence 視圖將網絡請求按訪問的時間排序
過濾網絡請求
通常情況下,我們需要對網絡請求進行過濾,只監控向指定目錄服務器上發送的請求。對於這種需求,以下幾種辦法:
方法一:在主界面的中部的 Filter 欄中填入需要過濾出來的關鍵字。例如我們的服務器的地址是:http://wwww.besttest.cn
, 那么只需要在 Filter 欄中填入 besttest即可
方法二:在想過濾的網絡請求上右擊,選擇 “Focus”,之后在 Filter 一欄勾選上 Focussed 一項,如下圖所示:
這種方式可以臨時性的,快速地過濾出一些沒有通過關鍵字的一類網絡請求。
模擬慢速網絡
在測試的時候,我們常常需要模擬慢速網絡或者高延遲的網絡,以測試在移動網絡下,應用的表現是否正常。Charles 對此需求提供了很好的支持
在 Charles 的菜單上,選擇 “Proxy”->”Throttle Setting” 項,在之后彈出的對話框中,我們可以勾選上 “Enable Throttling”,並且可以設置 Throttle Preset 的類型。如下圖所示:
如果我們只想模擬指定網站的慢速網絡,可以再勾選上圖中的 “Only for selected hosts” 項,然后在對話框的下半部分設置中增加指定的 hosts 項即可。
網絡設置各項詳細講解:
http://blog.163.com/benita_0/blog/static/250608762013317113129628/ 參考博客
修改網絡請求內容
有些時候為了調試服務器的接口,我們需要反復嘗試不同參數的網絡請求。Charles 可以方便地提供網絡請求的修改和重發功能。只需要在以往的網絡請求上點擊右鍵,選擇 “Edit”,即可創建一個可編輯的網絡請求。如下所示:
我們可以修改該請求的任何信息,包括 URL 地址、端口、參數等,之后點擊 “Execute” 即可發送該修改后的網絡請求(如下圖所示)。Charles 支持我們多次修改和發送該請求,這對於我們和服務器端調試接口非常方便,如下圖所示:
修改服務器返回內容
有些時候我們想讓服務器返回一些指定的內容,方便我們調試一些特殊情況。例如列表頁面為空的情況,數據異常的情況,部分耗時的網絡請求超時的情況等。如果沒有 Charles,要服務器配合構造相應的數據顯得會比較麻煩。這個時候,使用 Charles 相關的功能就可以滿足我們的需求。
-
根據具體的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以達到修改服務器返回內容的目的。這三者在功能上的差異是:
-
Map 功能適合長期地將某一些請求重定向到另一個網絡地址或本地文件。
-
Rewrite 功能適合對網絡請求進行一些正則替換。
-
Breakpoints 功能適合做一些臨時性的修改。
-
Breakpoints 功能類似我們在 Xcode 中設置的斷點一樣,當指定的網絡請求發生時,Charles 會截獲該請求,這個時候,我們可以在 Charles 中臨時修改網絡請求的返回內容。
下圖是我們臨時修改獲取用戶信息的 API,將頁面信息進行了更改,修改完成后點擊 “Execute” 則可以讓網絡請求繼續進行。
需要注意的是,使用 Breakpoints 功能將網絡請求截獲並修改過程中,整個網絡請求的計時並不會暫停,所以長時間的暫停可能導致客戶端的請求超時。