背景
Charles 是一個 HTTP 和 SOCKS 代理服務器。代理請求和響應使 Charles 能夠在請求從客户端傳遞到服務器時檢查和更改請求,以及從服務器傳遞到客户端時的響應。
抓包
PC端抓包
1、選擇菜單中的Proxy -> Mac OS X Proxy
2、確保 Charles 處於 Start Recording 狀態。
移動端抓包
1、手機和電腦在同一個網絡:
2、電腦關掉防火牆,打開 Charles 的代理:Proxy -> Proxy Settings 彈窗,填入代理端口(端口默認為 8888,不用修改),勾選 Enable transparent HTTP proxying。
wifi裏找到代理,選擇手動,填寫IP地址,端口8888
HTTPS抓包
pc端證書下載安裝:
Help -> SSL Proxying -> Install Charles Root Certificate
方式一:直接下載
方式二:如果下載不了,去官方下載
證書信任
移動端證書下載安裝:
Help -> SSL Proxying - Install Charles Root Certificate on a Mobile Device。然後會彈出下面的提示。
手機瀏覽器輸入:chls.pro/ssl
- 下載後打開手機設置-通用-描述文件與設備管理,選擇配置描述文件,選擇信任即可,看到已驗證就行。
- 最後手機設置-通用-關於手機-證書信任設置,選擇開就可以使用HTTPS抓包了。
注意:手機和電腦的證書的版本需要對應。
你手機本來就有1個是舊版本的,但是電腦連得是新版本,也要重新下載。
為什麼要安裝證書
如果是HTTP請求,因為數據本身沒有加密,所以請求內容和返回結果是直接展示的。
但HTTPS對數據進行了加密處理,所以Charles面對客户端,把自己偽裝成服務器,對服務器把自己偽裝成客户端。
- Charles攔截客户端的請求,偽裝成客户端向服務器進行請求,服務器向“客户端”(實際上是Charles)返回服務器的CA證書;
- Charles攔截服務器的響應,獲取服務器證書公鑰,然後自己製作一張證書,將服務器證書替換後發送給客户端。(這一步,Charles拿到了服務器證書的公鑰);
- 客户端接收到“服務器”(實際上是Charles)的證書後,生成一個對稱密鑰,用Charles的公鑰加密,發送給“服務器”(Charles);
- Charles攔截客户端的響應,用自己的私鑰解密對稱密鑰,然後用服務器證書公鑰加密,發送給服務器。(這一步,Charles拿到了對稱密鑰);
- 服務器用自己的私鑰解密對稱密鑰,向“客户端”(Charles)發送響應;
- Charles攔截服務器的響應,替換成自己的證書後發送給客户端;
- 當然,如果用户不選擇信任安裝Charles的CA證書,Charles也無法獲取請求內容。還有一種,如果客户端內置了本身的CA證書,這時如果Charles把自己的證書發送給客户端,客户端會發現與程序內的證書不一致,不予通過,此時Charles也是無法獲取信息的。
基礎設置
工具導航欄
Charles 頂部為菜單導航欄,菜單導航欄下面為工具導航欄。視圖如下圖所示:
- 清除捕獲到的所有請求
- 紅點狀態説明正在捕獲請求,灰色狀態説明目前沒有捕獲請求。
- 灰色狀態説明是沒有開啓網速節流,綠色狀態説明開啓了網速節流。
- 灰色狀態説明是沒有開啓斷點,紅色狀態説明開啓了斷點。
- 編輯修改請求,點擊之後可以修改請求的內容。
- 重複發送請求,點擊之後選中的請求會被再次發送。
- 驗證選中的請求的響應。
- 常用功能,包含了 Tools 菜單中的常用功能。
- 常用設置,包含了 Proxy 菜單中的常用設置。
structure 按照域名劃分
sequence 按時間排序
太多了可以看工具欄底下按照Filter篩選
使用指南
Proxy
Proxy 菜單包含以下功能:
- Start/Stop Recording:開始/停止記錄會話。
- Start/Stop Throttling:開始/停止節流。
- Enable/Disable Breakpoints:開啓/關閉斷點模式。
- Recording Settings:記錄會話設置。
- Throttle Settings:節流設置。
- Breakpoint Settings:斷點設置。
- Reverse Proxies Settings:反向代理設置。
- Port Forwarding Settings:端口轉發。
- Windows Proxy:記錄計算機上的所有請求。
- Proxy Settings:代理設置。
- SSL Proxying Settings:SSL 代理設置。
- Access Control Settings:訪問控制設置。
- External Proxy Settings:外部代理設置。
- Web Interface Settings:Web 界面設置。
Recording Settings(記錄會話設置)
Recording Settings 有 Options、Include、Exclude 三個選項卡:
Options:通過 Recording Size Limits 限制記錄數據的大小。當 Charles 記錄時,請求、響應頭和響應體存儲在內存中,或寫入磁盤上的臨時文件。有時,內存中的數據量可能會變得太多,Charles 會通知您並停止錄製。在這種情況下,您應該清除 Charles 會話以釋放內存,然後再次開始錄製。在錄製設置中,您可以限制 Charles 將記錄的最大大小; 這根本不會影響你的瀏覽,Charles 僅會停止錄製。
Include:只有與配置的地址匹配的請求才會被錄製。
Exclude:只有與配置的地址匹配的請求將不會被錄製。
或者用Focus進行快速過濾
Throttle Settings(節流設置)
模擬弱網環境
Bandwidth:帶寬
Utilistation:利用百分比
Round-trip:往返延遲
MTU:字節
Breakpoint Settings(斷點設置)
Windows Proxy(記錄計算機上的所有請求)
抓取電腦的請求,勾選 Windows Proxy,如果只需要抓取移動端請求,則取消勾選這個選項。
Proxy Settings(代理設置)
設置代理默認端口號
SSL Proxy Settings(SSL 代理設置)
勾上 Enable SSL proxying 就完成了在 Charles 上的 SSL 代理設置。之後也可以選擇 Add,然後填入需要監控的 Host 和 Port 信息,這樣就達到了針對某個域名啓用 SSL 代理的目的。
Tools
Tools 菜單包含以下功能:
- No Caching Settings:禁用緩存設置。
- Block Cookies Settings:禁用 Cookie設置。
- Map Remote Settings:遠程映射設置。
- Map Local Settings:本地映射設置。
- Rewrite Settings:重寫設置。
- Black List Settings:黑名單設置。
- White List Settings:白名單設置。
- DNS Spoofing Settings:DNS 欺騙設置。
- Mirror Settings:鏡像設置。
- Auto Save Settings:自動保存設置。
- Client Process Settings:客户端進程設置。
- Compose:編輯修改。
- Repeat:重複發包。
- Repeat Advanced:高級重複發包。
- Validate:驗證。
- Publish Gist:發佈要點。
- Import/Export Settings:導入/導出設置。
- Profiles:配置文件。
- Publish Gist Settings:發佈要點設置。
Map映射:
Map Remote Settings:遠程映射設置。
Map Local Settings:本地映射設置。
Charles 的 Map 功能分 Map Remote 和 Map Local 兩種,顧名思義,Map Remote 是將指定的網絡請求重定向到另一個網址請求地址,Map Local 是將指定的網絡請求重定向到本地文件。
Map Remote Settings使用:
圖示,將所有 www.csc.com 的請求重定向到了 www.www.csc.com
(有些比較複雜的網絡請求),可以將請求結構保存到本地,然後再使用Map Local Settings(本地映射)的文件。
Rewrite
Rewrite功能適合對某一類網絡請求進行一些正則替換,以達到修改結果的目的。
可以重寫接口所有元素的內容:header、host、url、path、query param、response status、body。
Charles功能總結
- 截取 Http 和 Https 網絡封包。
- 支持重發網絡請求,方便後端調試。
- 支持修改網絡請求參數。
- 支持網絡請求的截獲並動態修改。
- 支持模擬慢速網絡。
- Structure 視圖將網絡請求按訪問的域名分類。
- Sequence 視圖將網絡請求按訪問的時間排序。
- Map 功能適合長期地將某一些請求重定向到另一個網絡地址或本地文件。
- Rewrite 功能適合對網絡請求進行一些正則替換。
- Breakpoints 功能適合做一些臨時性的修改。