博客 / 詳情

返回

Charles使用教程

背景

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
方式一:直接下載
image.png

方式二:如果下載不了,去官方下載

證書信任
image.png

移動端證書下載安裝:
Help -> SSL Proxying - Install Charles Root Certificate on a Mobile Device。然後會彈出下面的提示。

image-20220727105400854

image-20220727105215977

手機瀏覽器輸入:chls.pro/ssl

  1. 下載後打開手機設置-通用-描述文件與設備管理,選擇配置描述文件,選擇信任即可,看到已驗證就行。
  2. 最後手機設置-通用-關於手機-證書信任設置,選擇開就可以使用HTTPS抓包了。

注意:手機和電腦的證書的版本需要對應。
你手機本來就有1個是舊版本的,但是電腦連得是新版本,也要重新下載。

為什麼要安裝證書

如果是HTTP請求,因為數據本身沒有加密,所以請求內容和返回結果是直接展示的。
但HTTPS對數據進行了加密處理,所以Charles面對客户端,把自己偽裝成服務器,對服務器把自己偽裝成客户端。

  • Charles攔截客户端的請求,偽裝成客户端向服務器進行請求,服務器向“客户端”(實際上是Charles)返回服務器的CA證書;
  • Charles攔截服務器的響應,獲取服務器證書公鑰,然後自己製作一張證書,將服務器證書替換後發送給客户端。(這一步,Charles拿到了服務器證書的公鑰);
  • 客户端接收到“服務器”(實際上是Charles)的證書後,生成一個對稱密鑰,用Charles的公鑰加密,發送給“服務器”(Charles);
  • Charles攔截客户端的響應,用自己的私鑰解密對稱密鑰,然後用服務器證書公鑰加密,發送給服務器。(這一步,Charles拿到了對稱密鑰);
  • 服務器用自己的私鑰解密對稱密鑰,向“客户端”(Charles)發送響應;
  • Charles攔截服務器的響應,替換成自己的證書後發送給客户端;
  • 當然,如果用户不選擇信任安裝Charles的CA證書,Charles也無法獲取請求內容。還有一種,如果客户端內置了本身的CA證書,這時如果Charles把自己的證書發送給客户端,客户端會發現與程序內的證書不一致,不予通過,此時Charles也是無法獲取信息的。

基礎設置

工具導航欄
Charles 頂部為菜單導航欄,菜單導航欄下面為工具導航欄。視圖如下圖所示:
image.png

  • 清除捕獲到的所有請求
  • 紅點狀態説明正在捕獲請求,灰色狀態説明目前沒有捕獲請求。
  • 灰色狀態説明是沒有開啓網速節流,綠色狀態説明開啓了網速節流。
  • 灰色狀態説明是沒有開啓斷點,紅色狀態説明開啓了斷點。
  • 編輯修改請求,點擊之後可以修改請求的內容。
  • 重複發送請求,點擊之後選中的請求會被再次發送。
  • 驗證選中的請求的響應。
  • 常用功能,包含了 Tools 菜單中的常用功能。
  • 常用設置,包含了 Proxy 菜單中的常用設置。

image.png
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:只有與配置的地址匹配的請求將不會被錄製。

image.png
image.png

或者用Focus進行快速過濾
image.png

Throttle Settings(節流設置)

模擬弱網環境
image.png
Bandwidth:帶寬
Utilistation:利用百分比
Round-trip:往返延遲
MTU:字節

Breakpoint Settings(斷點設置)
Windows Proxy(記錄計算機上的所有請求)

抓取電腦的請求,勾選 Windows Proxy,如果只需要抓取移動端請求,則取消勾選這個選項。

Proxy Settings(代理設置)

設置代理默認端口號
image.pngSSL Proxy Settings(SSL 代理設置)

勾上 Enable SSL proxying 就完成了在 Charles 上的 SSL 代理設置。之後也可以選擇 Add,然後填入需要監控的 Host 和 Port 信息,這樣就達到了針對某個域名啓用 SSL 代理的目的。
image.png

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
image.png

(有些比較複雜的網絡請求),可以將請求結構保存到本地,然後再使用Map Local Settings(本地映射)的文件。

Rewrite

Rewrite功能適合對某一類網絡請求進行一些正則替換,以達到修改結果的目的。
可以重寫接口所有元素的內容:header、host、url、path、query param、response status、body。

Charles功能總結

  • 截取 Http 和 Https 網絡封包。
  • 支持重發網絡請求,方便後端調試。
  • 支持修改網絡請求參數。
  • 支持網絡請求的截獲並動態修改。
  • 支持模擬慢速網絡。
  • Structure 視圖將網絡請求按訪問的域名分類。
  • Sequence 視圖將網絡請求按訪問的時間排序。
  • Map 功能適合長期地將某一些請求重定向到另一個網絡地址或本地文件。
  • Rewrite 功能適合對網絡請求進行一些正則替換。
  • Breakpoints 功能適合做一些臨時性的修改。
user avatar yaofly 頭像 coderleo 頭像 columsys 頭像 ailim 頭像 gaoming13 頭像 pugongyingxiangyanghua 頭像 waweb 頭像 frontoldman 頭像 musicfe 頭像 fehaha 頭像 user_ze46ouik 頭像 cipchk 頭像
14 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.