1、Charles簡介css
1.Charles是一款代理服務器,經過成爲電腦或者瀏覽器的代理,然後截取請求和請求結果達到抓包目的。前端
2.Charles是用Java寫的,可以在Windows,Mac,Linux上使用。json
3.Charles支持抓取http、https協議的請求,不支持socket。windows
4.Charles會自動配置IE瀏覽器和工具的代理設置,打開工具就已是抓包狀態。後端
5.Charles可以讓開發者查看全部網絡和機器之間的HTTP流量狀況,包括請求、響應、HTTP頭信息(包含cookies和緩存等),能夠檢查HTML、CSS和RSS內容是否標準,用於網頁的開發和調試等。瀏覽器
2、Charles主要用途緩存
1.支持SSL(Secure Sockets Layer 安全套件層)代理,能夠截取分析SSL請求。安全
2.支持流量控制,能夠模擬慢速網絡以及等待時間(Latency)較長的請求。服務器
3.支持重發網絡請求,方便後端調試。微信
4.支持修改網絡請求參數(客戶端向服務器發送時,能夠修改後再轉發出去)。
5.支持網絡請求的截獲並動態修改。
6.支持AJAX調試,能夠自動將json或xml數據格式化,方便查看。
7.支持AMF調試,能夠將Flash Remoting 或 Flex Remoting信息格式化,方便查看。
8.檢查HTML、CSS和RSS內容是否符合W3C標準。
9.支持模擬慢速網絡,主要是模仿手機2G/3G/4G 的訪問流程。
10.支持本地映射和遠程映射,好比能夠把線上資源映射到本地某個文件夾下,這樣能夠處理一些特殊狀況下的 bug 和線上調試(網絡的 css,js 等資源用的是本地代碼,可本地隨便修改,數據之類是線上環境,方便在線調試);
11.能夠抓手機端訪問的資源(若是是配置 HOST 的環境,手機能夠借用 host 配置進入測試環境)。
3、Charles原理
注意:此時 Charles 發給服務器的數據,不必定是客戶端請求的數據;Charles 在接到客戶端的請求時能夠自由的修改數據,甚至能夠直接 Block 客戶端發的請求。
服務器接收請求後的返回數據,也會先到Charles,通過Charles過濾後再發給客戶端。同理,客戶端接收的數據,不必定就是服務器返回的數據,而是Charles給的數據;正由於上面的原理,因此Charles能實現的功能,對前端開發者來講很是有吸引力,至關於請求和響應均可控,並且Charles爲了控制更加方面,提供了不少簡潔的操做。
3、Charles經常使用功能
1.過濾網絡請求
2.模擬慢速網絡
3.修改網絡請求內容
4.給服務器作壓力測試
4、Charles破解安裝
相對於Wireshark,Fiddler,HttpWatch等抓包工具,Charles更加簡單明瞭。
Charles 是收費軟件,能夠免費試用 30 天。試用期事後,未付費的用戶仍然能夠繼續使用,可是每次使用時間不能超過 30 分鐘,而且啓動時將會有 10 秒種的延時。所以,該付費方案對用戶算至關友好的,即便長期不付費,也能使用完整的軟件功能。只是當須要長時間進行封包調試時,會由於 Charles 強制關閉而遇到影響。
(目前最新版本是 V4.5.4 ,CharlesV4.5.4安裝包及對應破解補丁jar包下載可在ITester軟件測試小棧後臺回覆「Charles」獲取。)
破解安裝步驟:
1.安裝Charles前先裝好Java環境;
2.點擊charles-proxy-4.5.4.msi執行安裝,若安裝後提示the error code is 2503。
解決辦法:打開任務管理器 ->文件->運行新任務-> 輸入【程序安裝全路徑+後綴名】->勾選「以系統管理權限建立此任務」,如圖所示:
3.破解Charles:下載安裝Charles後,將破解補丁jar包粘貼到charles的lib文件下,而後將原來命名爲charles.jar文件替換掉便可;
macOS:/Applications/Charles.app/Contents/Java/charles.jar
Windows: C:\Program Files\Charles\lib\charles.jar(默認安裝在C盤,不然找到本身安裝的對應目錄)
5、Charles抓包配置
將 Charles 設置成系統代理:選擇菜單中的 「Proxy」 -> 「Mac OS X Proxy/windows proxy」 來將 Charles 設置成系統代理。
6、Charles經常使用功能介紹
一般狀況下,咱們須要對網絡請求進行過濾,只監控向指定目錄服務器上發送的請求。對於這種需求,有如下幾種辦法:
方法一:在主界面的中部的 Filter 欄中填入須要過濾出來的關鍵字。例如微信公衆平臺的地址是:https://mp.weixin.qq.com , 那麼只須要在 Filter 欄中填入weixin 便可。
方法二:在 Charles 的菜單欄選擇 「Proxy」–>「Recording Settings」,而後選擇 Include 欄,選擇添加一個項目,而後填入須要監控的協議,主機地址,端口號。這樣就能夠只截取目標網站的封包了。以下圖所示:
一般狀況下,咱們使用方法一:作一些臨時性的封包過濾,使用方法二:作一些常常性的封包過濾。
方法三:在想過濾的網絡請求上右擊,選擇 「Focus」,以後在 Filter 一欄勾選上 Focussed 一項。
在作移動開發的時候,咱們經常須要模擬慢速網絡或者高延遲的網絡,以測試在移動網絡下,應用的表現是否正常,Charles 對此提供了很好的支持。
在 Charles 的菜單上,選擇 「Proxy」–>「Throttle Setting」 項,在以後彈出的對話框中,咱們能夠勾選上 「Enable Throttling」,而且能夠設置 Throttle Preset 的類型。以下圖所示:
若是咱們只想模擬指定網站的慢速網絡,能夠再勾選上圖中的 「Only for selected hosts」 項,而後在對話框的下半部分設置中增長指定的 hosts 項便可。
有些時候爲了調試服務器的接口,咱們須要反覆嘗試不一樣參數的網絡請求。Charles 能夠方便地提供網絡請求的修改和重發功能。
1.在相應的網絡請求上點擊右鍵,選擇 「Breakpoints」;
2.從新執行這個請求;
3.點擊edit,編輯請求,點擊execute;
4.進入編輯響應頁面,點擊execute。
5.查看手機端響應結果。
注意:compose也能達到相同效果,但僅針對當前這次請求。而打了斷點,每次發送這個請求,都會要求去編輯。
咱們可使用 Charles 的 Repeat 功能來簡單地測試服務器的併發處理能力,方法以下:
咱們在想打壓的網絡請求上(POST 或 GET 請求都可)右擊,而後選擇 「Repeat Advanced」菜單項,以下所示:
能夠發現該請求的處理時間,是隨着迭代次數的增長和併發數的增長而增長的。
想要獲取相關資料和軟件 ?
Q羣:727998947