一.Charles說明
Charles是HTTP代理/ HTTP監視器/反向代理,使開發人員或測試人員可以查看其計算機與Internet之間的所有HTTP和SSL/ HTTPS通信。 這包括請求,響應和HTTP標頭(其中包含cookie和緩存信息)。 Charles是用Java寫的,能夠在Windows,Mac,Linux上使用。安裝Charles的時候要先裝好Java環境。
二.Charles主要功能
-
截取Http 和 Https 網絡封包。 -
支持重發網絡請求,方便后端調試。 -
支持修改網絡請求參數。 -
支持網絡請求的截獲並動態修改。 -
支持模擬慢速網絡。
三.下載安裝
-
官方下載地址:https://www.charlesproxy.com/download/ -
下載地址:因避免鏈接失效,請在公眾號內回復【charles安裝包】獲取 -
破解工具下載地址:因避免鏈接失效,請在公眾號內回復【charles破解工具】獲取
四.破解步驟
注:僅限個人交流使用,切勿用於商業用途 將下載的charles.jar覆蓋到Charles的lib目錄下即可 查看是否破解成功,點擊charles菜單Help->About Charles,如下圖所示
五.電腦端安裝證書
對於HTTPS協議的數據,我們要在電腦端和手機端安裝證書,否則會看到返回的數據都是亂碼。
六. 手機端抓包設置
確保安裝Charles的電腦和你的手機在同一局域網內,因為Charles只是一個代理,需要將手機的代理指向 PC 機,不能互相訪問是不行的。
1.啟動charles。
2.在PC端使用cmd命令打開命令行窗口輸入ipconfig,獲取本機IP地址。 3.在手機端(以Android為例)的wifi代理設置那里去進行相關的配置設置。
4.長按wifi名稱,點擊“修改網絡”,勾選“顯示高級選項”,點擊代理,選擇手動,服務器主機名輸入PC機IP地址,如127.0.0.1,服務器端口(charles的默認設置):8888,點擊保存。
5.配置完成,charles會彈出與手機鏈接提示框,選擇allow
6.安裝手機端證書,在手機上打開網址 http://www.charlesproxy.com/getssl 安裝 Charles SSL 證書。 注意,同一個手機對應不同電腦上的Charles都要分別下載證書進行認證,因為手機的證書是和電腦端的Charles一一配對的。


注意:iOS系統,需要在設置→通用→關於本機→證書信任設置里面啟用完全信任Charles證書
7.Charles工具欄選擇Proxy-> SSL Proxying Settings,彈出SSL Proxying Settings選項卡,勾選Enable SSL Proxying,在Location部份選擇add,按如下圖添加,抓取任意站點、443端口的數據。
8.打開手機應用即可進行抓包操作。
七.Charles相關功能介紹
1.界面介紹
-
Filter:過濾,可以輸入關鍵字來快速篩選出 URL 中帶指定關鍵字的網絡請求。 -
Overview:查看這次請求的詳細內容,例如耗時詳細列車了請求開始時間、結束時間,響應開始時間、結束時間,總耗時、DNS耗時、網絡延時等。對於Size也詳細列出了請求頭大小、響應頭大小、壓縮比例等內容。 -
URL:進行網絡請求的鏈接; -
Status:當前狀態,complete表示請求完成; -
Responce Code:返回碼。不同的接口,不同的請求結果,返回碼都不同; -
Protocol:使用的協議; -
Method:請求方式,如GET請求,POST請求等; -
Kept Alive:判斷當前是否正在鏈接(活躍); -
Content-Type:發送的內容類型,如這里用的是XML文本,以UTF8的方式發送; -
Client Address:客戶端的IP地址; -
Remote Address:遠程服務器的IP;
Timing:
-
Request Start Time:請求開始的時間; -
Request End Time:請求結束的時間; -
Response Start Time:返回開始的時間; -
Response End Time : 返回結束的時間; -
Duration : 總時間;
Size:
-
Request:請求發送的大小; -
Response:返回數據的大小; -
Total:所有數據大小; -
Request : 查看請求內容(底下的Headers,Query String,Cookies,Raw。) -
Headers:發送請求的頭部信息; -
Query String : 發送參數列表; -
Cookies: 瀏覽器緩存; -
Raw:發送的原生數據,包括了頭部和參數; -
Reponse : 查看響應內容 -
Headers:是返回的頭部信息; -
Text:返回信息(除去頭部)后的文本; -
Hex:返回信息的16進制表示; -
XML:我返回的數據是XML。如果你返回的是JSON,這里就會顯示JSON; -
XML Text:如果你返回JSON,這里會顯示JSON Text; -
Raw:返回的所有原生數據,包括頭部; -
Summary: 查看發送數據的一些簡要信息(主機,狀態碼,數據的類型,header和body大下,加載時間,總時間) -
Chart: Summary中簡要信息以圖表形式展示 -
Notes: 其他信息
(1)菜單欄:Proxy
從上到下依次為:開始/停止捕捉會話,開始/停止SSL代理,開始/停止模擬網絡環境,啟用/禁用斷點,記錄會話設置,SSL代理設置,節流設置,斷點設置,反向代理設置,端口轉發,記錄計算機上的所有請求,代理設置,訪問控制設置,外部代理設置,Web界面設置
(2)菜單欄:Tools No Caching Settings:禁用緩存設置。 Block Cookies Settings:禁用 Cookie設置。 Map Remote Settings:遠程映射設置,Map Local Settings:本地映射設置。 使用本機/其它服務器文件代替正常的response,作為長期response重定向功能使用 Compose:構造一條新的請求 Repeat:重復發包,Repeat Advanced:高級重復發包 重發請求,可以用於簡單的壓力測試 Rewrite Settings:重寫設置 動態修改request/response信息,不過他改變的只是部份信息,比如:主機地址(Host),返回狀態碼(response status),返回信息內容(body)等
(2)工具欄
從左到右依次為:清空抓取的請求數據,開始/停止抓取,開始/停止SSL代理,開始/停止模擬網絡環境,啟用/禁用斷點功能,根據所選請求創建一個新的請求,重復選擇請求,驗證選擇的響應,工具,設置
顯示模式 會話的兩種視圖模式為Structure,Sequence以及對應的Requet,Response面板組成 (1)Structure視圖,樹狀結構顯示,可以很清晰的看到請求的數據結構,而且是以域名划分請求信息的,可以很清晰的去分析和處理數據。
(2)Sequence視圖,水平結構顯示,可以看到全部請求,這里的結果以數據請求的順序來顯示,最新的請求顯示在最下面
如果不習慣Sequence默認的上下視圖,可以修改為類似Fiddler的左右視圖模式:Edit->Preferences->Viewers選擇Sequence view layout為Tall即可;
更改后的界面如下圖:
八.常見問題
Request和Response亂碼,首先要確保證書安裝成功,其次再看以下兩種方法。
方法一:修改根目錄下Charles.ini的配置文件,vmarg.5=-Dfile.encoding=UTF-8
方法二:Tools -> Rewrite… ->Add