charles相當於一個插在服務器和客戶端之間的“過濾器”;
當客戶端向服務器發起請求的時候,先到charles進行過濾,然后charles在把最終的數據發送給服務器;
注意:此時charles發給服務器的數據,不一定是客戶端請求的數據;charles在接到客戶端的請求時可以自由的修改數據,甚至可以直接Block客戶端發的請求;
服務器接收請求后的返回數據,也會先到charles,經過charles過濾后再發給客戶端;
同理:客戶端接收的數據,不一定就是服務器返回的數據,而是charles給的數據;
正因為上面的原理,所以charles能實現的功能,對前端開發者來說非常有吸引力,相當於請求和響應都可控的,而且charles為了控制更加方面,提供很多簡潔的操作
1.下載安裝
2.設置代理
點擊“代理-代理設置”,設置一個端口
手機連接wifi后,配置該wifi代理為手動,代理主機輸入本機電腦的ip和此端口,就可以正常抓包
3.設置抓取特定ip
方法一:在 Charles 的菜單欄選擇 “Proxy”->”Recording Settings”,然后選擇 Include 欄,選擇添加一個項目,然后填入需要監控的協議,主機地址,端口號。這樣就可以只截取目標網站的封包了;
方法二:在主界面的中部的 Filter 欄中填入需要過濾出來的關鍵字。
4.模擬接口發送請求
先新建一個JSON文件,取名 test.json,輸入一個簡單的測試數組
[
“hello”,
“world”
]
打開Charles,Tools - Map Local
5.charles重復發送一個網絡請求&同時發送N次
重發網絡請求的目的:后端調試的過程中,一直在客戶端進行點點點比較麻煩,此時直接發送請求比較方便查看調試后的結果(方便后端調試)
1.重復發送一個請求(有兩種方法)
(1)選定該請求,右鍵選擇repeat,則會將請求重新發送一遍
(2)選定該請求,直接點擊導航欄上面的重復按鈕,下圖所示
2.讓請求同時發送N次
目的是判斷多次發送請求時,服務器的響應時間如何。
右鍵選中該請求,repeat下面還有一個Repeat Advanced選項,其實該選項也是重復發送請求的一種,可以同時發送多個請求。點擊ok之后會回到主頁面可觀察到請求被發送了10次。
6.撰寫請求
可以修改、增加、刪除參數名、參數值,請求頭等等
7.斷點--可以看到 修改過后的請求返回是什么效果,達到測試的目的。
Breakpoints 功能類似我們在 Xcode 中設置的斷點一樣,當指定的網絡請求發生時,Charles 會截獲該請求,這個時候,我們可以在 Charles 中臨時修改網絡請求的返回內容。
對要打斷點的接口右鍵,選擇【Breakpoints】
在工具欄可以查看打上斷點的url
雙擊此url,修改查詢為*,設置可修改請求和響應
點擊ok, 重新再跑一下接口。 當跑到設置斷點的接口時,網頁會暫停,這個時候Charles進入breakpoints
點擊Edit Request 修改請求參數。這里根據你要測試的數據來修改
修改好參數后,點擊Execute (執行)。 另外 Abort (中止), Cancel (取消)
點擊執行后,來到返回的頁面,這個時候在Charles可以查看返回的數據。也可以對其進行修改,好了之后 點擊 Execute
8.模擬慢速網絡
選擇 “Proxy”->”Throttle Setting” (節流設置)項,在之后彈出的對話框中,我們可以勾選上 “Enable Throttling”,並且可以設置 Throttle Preset 的類型。如下圖所示: