Charles 抓包工具
Charles 簡介
Charles 是在 PC 端常用的網(wǎng)絡(luò)封包截取工具,在做移動開發(fā)時,我們?yōu)榱苏{(diào)試與服務(wù)器端的網(wǎng)絡(luò)通訊協(xié)議,常常需要截取網(wǎng)絡(luò)封包來分析。除了在做移動開發(fā)中調(diào)試端口外,Charles 也可以用于分析第三方應(yīng)用的通訊協(xié)議。配合 Charles 的 SSL 功能,Charles 還可以分析 Https 協(xié)議。
Charles 通過將自己設(shè)置成系統(tǒng)的網(wǎng)絡(luò)訪問代理服務(wù)器,使得所有的網(wǎng)絡(luò)訪問請求都通過它來完成,從而實(shí)現(xiàn)了網(wǎng)絡(luò)封包的截取和分析。
Charles 是收費(fèi)軟件,可以免費(fèi)試用 30 天。試用期過后,未付費(fèi)的用戶仍然可以繼續(xù)使用,但是每次使用時間不能超過 30 分鐘,并且啟動時將會有 10 秒種的延時。因此,該付費(fèi)方案對廣大用戶還是相當(dāng)友好的,即使你長期不付費(fèi),也能使用完整的軟件功能。只是當(dāng)你需要長時間進(jìn)行封包調(diào)試時,會因?yàn)?Charles 強(qiáng)制關(guān)閉而遇到影響。
Charles 主要的功能包括:
截取 Http 和 Https 網(wǎng)絡(luò)封包。
支持重發(fā)網(wǎng)絡(luò)請求,方便后端調(diào)試。
支持修改網(wǎng)絡(luò)請求參數(shù)。
支持網(wǎng)絡(luò)請求的截獲并動態(tài)修改。
支持模擬慢速網(wǎng)絡(luò)。
下載安裝 Charles
https://www.charlesproxy.com/latest-release/download.doCharles 支持的操作系統(tǒng)包括:
Windows 64 bit(msi)
Windows 32 bit(msi)
macOS(dmg)
Linux 64 bit(tar.gz)
Linux 32 bit(tar.gz)
打開瀏覽器訪問 Charles 官網(wǎng) ,下載相應(yīng)系統(tǒng)的 Charles 安裝包,然后安裝即可:
Windows: 運(yùn)行安裝應(yīng)用程序以在程序菜單中安裝 Charles。
Mac OS X: 通過雙擊解壓縮下載文件,然后將 Charles 應(yīng)用程序復(fù)制到 Applications 目錄中。
Linux: Charles 擁有 APT 和 YUM 存儲庫,如果你有基于 Debian 或基于 Red Hat 的 Linux 發(fā)行版,這是安裝 Charles 的首選方法。否則,將 tar.gz 文件解壓縮到適當(dāng)?shù)恼军c(diǎn)。如果您以前安裝過 Charles 并且正在進(jìn)行升級;首先確保 Charles 沒有運(yùn)行,然后安裝或復(fù)制在以前安上。通過運(yùn)行 bin/charles 腳本啟動 Charles。
如果使用 Firefox,也可以下載 Firefox 插件。參考Firefox Add-On
Charles 主界面介紹
工具導(dǎo)航欄
Charles 頂部為菜單導(dǎo)航欄,菜單導(dǎo)航欄下面為工具導(dǎo)航欄。
工具導(dǎo)航欄中提供了幾種常用工具:
:清除捕獲到的所有請求
:紅點(diǎn)狀態(tài)說明正在捕獲請求,灰色狀態(tài)說明目前沒有捕獲請求。
:灰色狀態(tài)說明是沒有開啟網(wǎng)速節(jié)流,綠色狀態(tài)說明開啟了網(wǎng)速節(jié)流。
:灰色狀態(tài)說明是沒有開啟斷點(diǎn),紅色狀態(tài)說明開啟了斷點(diǎn)。
:編輯修改請求,點(diǎn)擊之后可以修改請求的內(nèi)容。
:重復(fù)發(fā)送請求,點(diǎn)擊之后選中的請求會被再次發(fā)送。
:驗(yàn)證選中的請求的響應(yīng)。
:常用功能,包含了 Tools 菜單中的常用功能。
:常用設(shè)置,包含了 Proxy 菜單中的常用設(shè)置。
主界面視圖
Charles 主要提供兩種查看封包的視圖,分別名為 Structure 和 Sequence。
Structure:此視圖將網(wǎng)絡(luò)請求按訪問的域名分類。
Sequence:此視圖將網(wǎng)絡(luò)請求按訪問的時間排序。
使用時可以根據(jù)具體的需要在這兩種視圖之前來回切換。請求多了有些時候會看不過來,Charles 提供了一個簡單的 Filter 功能,可以輸入關(guān)鍵字來快速篩選出 URL 中帶指定關(guān)鍵字的網(wǎng)絡(luò)請求。
對于某一個具體的網(wǎng)絡(luò)請求,你可以查看其詳細(xì)的請求內(nèi)容和響應(yīng)內(nèi)容。如果請求內(nèi)容是 POST 的表單,Charles 會自動幫你將表單進(jìn)行分項(xiàng)顯示。如果響應(yīng)內(nèi)容是 JSON 格式的,那么 Charles 可以自動幫你將 JSON 內(nèi)容格式化,方便你查看。如果響應(yīng)內(nèi)容是圖片,那么 Charles 可以顯示出圖片的預(yù)覽。
Charles 菜單介紹
Charles 的主菜單包括:File、Edit、View、Proxy、Tools、Window、Help。用的最多的主菜單分別是 Proxy 和 Tools。
Proxy 菜單
Charles 是一個 HTTP 和 SOCKS 代理服務(wù)器。代理請求和響應(yīng)使 Charles 能夠在請求從客戶端傳遞到服務(wù)器時檢查和更改請求,以及從服務(wù)器傳遞到客戶端時的響應(yīng)。下面主要介紹 Charles 提供的一些代理功能。Proxy 菜單的視圖如下圖所示:

Proxy 菜單包含以下功能:
Start/Stop Recording:開始/停止記錄會話。
Start/Stop Throttling:開始/停止節(jié)流。
Enable/Disable Breakpoints:開啟/關(guān)閉斷點(diǎn)模式。
Recording Settings:記錄會話設(shè)置。
Throttle Settings:節(jié)流設(shè)置。
Breakpoint Settings:斷點(diǎn)設(shè)置。
Reverse Proxies Settings:反向代理設(shè)置。
Port Forwarding Settings:端口轉(zhuǎn)發(fā)。
Windows Proxy:記錄計(jì)算機(jī)上的所有請求。
Proxy Settings:代理設(shè)置。
SSL Proxying Settings:SSL 代理設(shè)置。
Access Control Settings:訪問控制設(shè)置。
External Proxy Settings:外部代理設(shè)置。
Web Interface Settings:Web 界面設(shè)置。
Recording Settings(記錄會話設(shè)置)
Recording Settings 和 Start/Stop Recording 配合使用,在 Start Recording 的狀態(tài)下,可以通過 Recording Settings 配置 Charles 的會話記錄行為。Recording Settings 的視圖如下圖所示:

Recording Settings 有Options、Include、Exclude三個選項(xiàng)卡:
Options:通過 Recording Size Limits 限制記錄數(shù)據(jù)的大小。當(dāng) Charles 記錄時,請求、響應(yīng)頭和響應(yīng)體存儲在內(nèi)存中,或?qū)懭氪疟P上的臨時文件。有時,內(nèi)存中的數(shù)據(jù)量可能會變得太多,Charles 會通知您并停止錄制。在這種情況下,您應(yīng)該清除 Charles 會話以釋放內(nèi)存,然后再次開始錄制。在錄制設(shè)置中,您可以限制 Charles 將記錄的最大大小; 這根本不會影響你的瀏覽,Charles 僅會停止錄制。
Include:只有與配置的地址匹配的請求才會被錄制。
Exclude:只有與配置的地址匹配的請求將不會被錄制。
Include 和 Exclude 選項(xiàng)卡的操作相同,選擇 Add,然后填入需要監(jiān)控的Procotol、Host 和 Port等信息,這樣就達(dá)到了過濾的目的。如下圖所示:

還有一種方法就是在一個請求網(wǎng)址上右擊選擇Focus,然后其他的請求就會被放到一個叫Other Host的分類里面,這樣也達(dá)到了過濾的目的。
Throttle Settings(節(jié)流設(shè)置)
Throttle Settings 和 Start/Stop Throttling 配合使用,在 Start Throttling 的狀態(tài)下,可以通過 Throttle Settings 配置 Charles 的網(wǎng)速模擬配置。Throttle Settings 的視圖如下圖所示:

勾選 Enable Throttling 啟用網(wǎng)速模擬配置,在 Throttle Preset 下選擇網(wǎng)絡(luò)類型即可,具體設(shè)置可以根據(jù)實(shí)際情況自行設(shè)置。如果只想模擬指定網(wǎng)站的慢速網(wǎng)絡(luò),可以再勾選上圖中的Only for selected hosts項(xiàng),然后在對話框的下半部分設(shè)置中增加指定的 hosts 項(xiàng)即可。
Throttle Settings 視圖中的選項(xiàng)含義如下:
Bandwidth:帶寬
Utilistation:利用百分比
Round-trip:往返延遲
MTU:字節(jié)
Breakpoint Settings(斷點(diǎn)設(shè)置)
Breakpoint Settings 和 Enable/Disable Breakpoints 配合使用,在 Enable Breakpoints 的狀態(tài)下,可以通過 Breakpoint Settings 配置 Charles 的斷點(diǎn)模式。Breakpoint Settings 的視圖如下圖所示:

勾選 Enable Breakpoints 啟用斷點(diǎn)模式,選擇Add,然后填入需要監(jiān)控的Scheme、Procotol、Host 和 Port 等信息,這樣就達(dá)到了設(shè)置斷點(diǎn)的目的。然后可以來觀察或者修改請求或者返回的內(nèi)容,但是在這過程中需要注意請求的超時時間問題。或者可以在某個想要設(shè)置斷點(diǎn)的請求網(wǎng)址上右擊選擇 Breakpoints 來設(shè)置斷點(diǎn)。
Reverse Proxies Settings(反向代理設(shè)置)
反向代理在本地端口上創(chuàng)建 Web 服務(wù)器,該端口透明地將請求代理給遠(yuǎn)程 Web 服務(wù)器。反向代理上的所有請求和響應(yīng)都可以記錄在 Charles 中。
如果您的客戶端應(yīng)用程序不支持使用 HTTP 代理,或者您希望避免將其配置為使用代理,那么反向代理很有用。創(chuàng)建原始目標(biāo) Web 服務(wù)器的反向代理,然后將客戶端應(yīng)用程序連接到本地端口;反向代理對客戶端應(yīng)用程序是透明的,使您可以查看 Charles 以前可能無法訪問的流量。
有關(guān)反向代理的更多信息,請?jiān)L問 Reverse proxy
Port Forwarding Settings(端口轉(zhuǎn)發(fā))
可以將任何 TCP/IP 或 UDP 端口配置為使用 Port Forwarding 工具從 Charles 轉(zhuǎn)發(fā)到遠(yuǎn)程主機(jī)。這樣可以調(diào)試 Charles 中的任何協(xié)議。
在 Macromedia Flash 中調(diào)試 XMLSocket 連接時,這尤其有用。
還可以使用 Charles 作為 SOCKS 代理,因此無需設(shè)置端口轉(zhuǎn)發(fā)。
Windows Proxy(記錄計(jì)算機(jī)上的所有請求)
如果想要抓取電腦端的請求,勾選 Windows Proxy 選項(xiàng)即可;如果只需要抓取手機(jī)請求,則取消勾選這個選項(xiàng)。
Proxy Settings(代理設(shè)置)
Proxy Settings 的視圖如下圖所示:

代理端口默認(rèn)為 8888(可以修改),并且勾上Enable transparent HTTP proxying就完成了在 Charles 上的代理設(shè)置。
SSL Proxy Settings(SSL 代理設(shè)置)
SSL Proxy Settings 的視圖如下圖所示:

勾上Enable SSL proxying就完成了在 Charles 上的 SSL 代理設(shè)置。之后也可以選擇Add,然后填入需要監(jiān)控的 Host 和 Port 信息,這樣就達(dá)到了針對某個域名啟用 SSL 代理的目的。
Access Control Settings(訪問控制設(shè)置)
Access Control Settings 表示訪問控制設(shè)置。訪問控制列表確定誰可以使用此 Charles 實(shí)例。通常,您在自己的計(jì)算機(jī)上運(yùn)行 Charles,并且您只打算自己使用它,因此 localhost 始終包含在訪問控制列表中。也可以選擇 Add,然后填入允許訪問的 IP,這樣就達(dá)到了允許某個 IP 訪問 Charles 的目的。
External Proxy Settings(外部代理設(shè)置)
External Proxy Settings 表示外部代理設(shè)置。可能在網(wǎng)絡(luò)上有一個代理服務(wù)器,必須使用該代理服務(wù)器才能訪問 Internet。在這種情況下,需要將 Charles 配置為在嘗試訪問 Internet 時使用現(xiàn)有代理。
可以配置單獨(dú)的代理地址和端口:
HTTP
HTTPS
SOCKS
如果您有 SOCKS 代理,Charles 將把它用于所有非 HTTP(S) 流量,例如端口轉(zhuǎn)發(fā)。
Web Interface Settings(Web 界面設(shè)置)
Web Interface Settings 表示 Web 界面設(shè)置。Charles 有一個 Web 界面,可以讓您從瀏覽器控制 Charles,或使用 Web 界面作為 Web 服務(wù)使用外部程序。
在 External Proxy Settings 視圖中勾選 Enable the web interface 選項(xiàng)啟用 Web 界面。可以允許匿名訪問,也可以配置用戶名和密碼。還可以通過在配置使用 Charles 作為其代理的 Web 瀏覽器中訪問 http://control.charles/ 來訪問 Web 界面。
Web界面提供對以下功能的訪問:
節(jié)流控制
激活或停用任何已配置的限制預(yù)設(shè)
錄音控制
開始和停止會話錄制
工具
激活和停用工具
會話控制
清除當(dāng)前會話
以任何支持的格式導(dǎo)出當(dāng)前會話
以 Charles 的本機(jī)會話格式下載當(dāng)前會話
退出查爾斯
通過檢查 Web 界面 HTML ,您可以推導(dǎo)出如何將其用作 Web 服務(wù)來自動化 Charles。
Tools 菜單
Charles 是一個 HTTP 和 SOCKS 代理服務(wù)器,所有的請求都會經(jīng)過 Charles。下面主要介紹 Charles 提供的一些實(shí)用工具。Tools 菜單的視圖如下圖所示:

Tools 菜單包含以下功能:
No Caching Settings:禁用緩存設(shè)置。
Block Cookies Settings:禁用 Cookie設(shè)置。
Map Remote Settings:遠(yuǎn)程映射設(shè)置。
Map Local Settings:本地映射設(shè)置。
Rewrite Settings:重寫設(shè)置。
Black List Settings:黑名單設(shè)置。
White List Settings:白名單設(shè)置。
DNS Spoofing Settings:DNS 欺騙設(shè)置。
Mirror Settings:鏡像設(shè)置。
Auto Save Settings:自動保存設(shè)置。
Client Process Settings:客戶端進(jìn)程設(shè)置。
Compose:編輯修改。
Repeat:重復(fù)發(fā)包。
Repeat Advanced:高級重復(fù)發(fā)包。
Validate:驗(yàn)證。
Publish Gist:發(fā)布要點(diǎn)。
Import/Export Settings:導(dǎo)入/導(dǎo)出設(shè)置。
Profiles:配置文件。
Publish Gist Settings:發(fā)布要點(diǎn)設(shè)置。
No Caching Settings(禁用緩存)
No Caching 工具可防止客戶端應(yīng)用程序(如 Web 瀏覽器)緩存任何資源。因此,始終向遠(yuǎn)程網(wǎng)站發(fā)出請求,您始終可以看到最新版本。
適用范圍
該工具可以作用于每個請求(選中 Enable No Caching 即可),也可以僅對你配置的請求啟用(啟用 No Caching 的同時,請選中 Only for selected locations)。當(dāng)用于選定的請求時,可以使用簡單但功能強(qiáng)大的模式匹配將工具的效果限制為指定的主機(jī)和路徑。
工作原理
No Caching 工具通過操縱控制響應(yīng)緩存的 HTTP 請求頭來防止緩存。從請求中刪除 If-Modified-Since 和 If-None-Match 請求頭,添加 Pragma:no-cache 和 Cache-control:no-cache。從響應(yīng)中刪除 Expires,Last-Modified 和ETag 請求頭,添加 Expires:0 和 Cache-Control:no-cache。
Block Cookies Settings(禁用 Cookie)
Block Cookies 工具阻止了 Cookie 的發(fā)送和接收。它可用于測試網(wǎng)站,就像在瀏覽器中禁用了 Cookie 一樣。請注意,網(wǎng)絡(luò)爬蟲(例如 Google)通常不支持 Cookie,因此該工具還可用于模擬網(wǎng)絡(luò)爬蟲網(wǎng)站的視圖。
適用范圍
該工具可以作用于每個請求(選中 Enable Block Cookies 即可),也可以僅對你配置的請求啟用(啟用 Block Cookies 的同時,請選中 Only for selected locations)。當(dāng)用于選定的請求時,可以使用簡單但功能強(qiáng)大的模式匹配將工具的效果限制為指定的主機(jī)和路徑。
工作原理
Block Cookies 工具通過操縱控制響應(yīng) Cookies 的 HTTP 請求頭來禁用 Cookies。從請求中移除 Cookie 請求頭,防止 Cookie 值從客戶端應(yīng)用程序(例如 Web 瀏覽器)發(fā)送到遠(yuǎn)程服務(wù)器。從響應(yīng)中刪除 Set-Cookie 請求頭,防止請求設(shè)置客戶端應(yīng)用程序從遠(yuǎn)程服務(wù)器接收的 Cookie。
Map Remote Settings(遠(yuǎn)程映射)
Map Remote 工具根據(jù)配置的映射更改請求站點(diǎn),以便從新站點(diǎn)透明地提供響應(yīng),就好像這是原始請求一樣。
通過此映射,您可以從另一個站點(diǎn)提供全部或部分站點(diǎn)。例如:
可以把 xk72.com/charles/ 映射到 localhost/charlesdev/ 來為 xk72.com 提供一個子目錄;
可以把 xk72.com/*.php 這種指定后綴的所有文件映射到 localhost/charlesdev/。
使用建議
如果您擁有站點(diǎn)的開發(fā)版本并且希望能夠通過開發(fā)提供的某些請求瀏覽實(shí)時站點(diǎn),則 Map Remote 非常有用。例如,您可能希望從開發(fā)服務(wù)器提供 css 和 images 目錄。使用 live.com/css/ 等映射到 dev.com/css/ 或 live.com/*.css 到 dev.com 。
映射類型
可以將目錄映射到目錄,如 xk72.com/charles/ 映射到 localhost/charlesdev/;
可以將文件映射到文件,如 xk72.com/charles/download.php 映射到 abc.com/testing/test.html;
可以將帶有文件模式的目錄映射到目錄,如 xk72.com/charles/*.php 到 localhost/charlesdev/;
如果在目標(biāo)映射中未指定路徑,則 URL 的路徑部分將不會更改。如果要映射到根目錄,請?jiān)谀繕?biāo)路徑字段中已 / 結(jié)尾。
HTTPS
Map Remote 工具可以將 HTTP 請求映射到 HTTPS 目標(biāo),反之亦然,因此您可以將 HTTP 或 HTTPS 站點(diǎn)映射到其對立面。
站點(diǎn)匹配
每個站點(diǎn)匹配可能包含協(xié)議、主機(jī)、端口和路徑模式,以匹配特定的 URL。站點(diǎn)可能包括通配符。當(dāng)您向此工具添加新站點(diǎn)時,可能會找到有關(guān)創(chuàng)建站點(diǎn)匹配的更多幫助。
Map Local Settings(本地映射)
Map Local 工具使您可以使用本地文件,就像它們是遠(yuǎn)程網(wǎng)站的一部分一樣。您可以在本地開發(fā)文件,并像在線上一樣測試它們。本地文件的內(nèi)容將返回給客戶端,就像它是正常的遠(yuǎn)程響應(yīng)一樣。
Map Local 可以大大加快開發(fā)和測試速度,否則您必須將文件上傳到網(wǎng)站以測試結(jié)果。使用 Map Local,您可以在開發(fā)環(huán)境中安全地進(jìn)行測試。
動態(tài)文件
動態(tài)文件(例如包含服務(wù)器端腳本的文件)不會由 Map Local 執(zhí)行,因此如果文件中有任何腳本,腳本將按原樣返回到瀏覽器,這可能不是預(yù)期的結(jié)果。如果您想使用動態(tài)文件,就好像它們是遠(yuǎn)程網(wǎng)站的一部分一樣,請參閱 Map Remote 工具。
工作原理
當(dāng)請求與 Map Local 映射匹配時,它會檢查與路徑匹配的本地文件。它不包括查詢字符串(如果有)。如果在本地找到所請求的文件,則將其作為響應(yīng)返回,就好像它是從遠(yuǎn)程站點(diǎn)加載的一樣,因此它對客戶端是透明的。如果在本地找不到所請求的文件,那么該請求會像平常一樣由網(wǎng)站提供,返回由真正的服務(wù)器提供的數(shù)據(jù)。
站點(diǎn)匹配
每個站點(diǎn)匹配可能包含協(xié)議、主機(jī)、端口和路徑模式,以匹配特定的 URL。站點(diǎn)可能包括通配符。當(dāng)您向此工具添加新站點(diǎn)時,可能會找到有關(guān)創(chuàng)建站點(diǎn)匹配的更多幫助。
Rewrite Settings(重寫)
Rewrite 工具允許創(chuàng)建請求和響應(yīng)在通過 Charles 時修改他們的規(guī)則。如:添加或更改頭信息、搜索和替換響應(yīng)內(nèi)容中的某些文本等。
重寫集
重寫集可以單獨(dú)激活和停用。每個集合包含站點(diǎn)和規(guī)則的列表。這些站點(diǎn)選擇規(guī)則將要運(yùn)行的請求和響應(yīng)。
重寫規(guī)則
每個規(guī)則都描述了一次重寫操作。規(guī)則可能會影響請求URL的 Header,正文或部分內(nèi)容;它可以根據(jù)請求或響應(yīng)來操作;它可以定義搜索、替換或者僅替換樣式重寫。
站點(diǎn)匹配
每個站點(diǎn)匹配可能包含協(xié)議、主機(jī)、端口和路徑模式,以匹配特定的 URL。站點(diǎn)可能包括通配符。當(dāng)您向此工具添加新站點(diǎn)時,可能會找到有關(guān)創(chuàng)建站點(diǎn)匹配的更多幫助。
調(diào)試
當(dāng)重寫操作未按預(yù)期工作時,重寫工具可能難以調(diào)試。如果您遇到問題,請嘗試添加一個非常基本的規(guī)則,例如添加明顯頭信息的規(guī)則,以便您可以查看規(guī)則是否與請求完全匹配。同時打開錯誤日志中的調(diào)試,以獲取從 Charles 中的 Window 菜單訪問的錯誤日志中打印的一些調(diào)試信息。
Black List Settings(黑名單)
Black List 工具允許輸入應(yīng)該被阻止的域名。當(dāng) Web 瀏覽器嘗試從被列入黑名單的域名請求任何頁面時,該請求將被 Charles 阻止。您還可以輸入通配符來阻止其子域名。
White List Settings(白名單)
Black List 工具允許輸入僅僅被允許的域名。Black List 工具將阻止除被列入白名單的域名之外的所有請求。
白名單工具用于僅允許指定的域名;黑名單工具,用于僅屏蔽指定的域名。
如果一個請求與“黑名單”和“白名單”都匹配,則該請求會被阻止。
DNS Spoofing Settings(DNS 欺騙)
DNS Spoofing 工具允許通過將自己的主機(jī)名指定給遠(yuǎn)程地址映射來欺騙 DNS 查找。當(dāng)請求通過 Charles 時,您的 DNS 映射將優(yōu)先。
Charles 包含配置的域名到 IP 地址映射的列表。當(dāng)針對列出的域名發(fā)出請求時,Spoof DNS 插件會發(fā)現(xiàn)欺騙 IP 將請求重定向到該地址。主機(jī)HTTP標(biāo)頭保持不變,因此就像您的 DNS 服務(wù)器返回欺騙性 IP一樣。
虛擬主機(jī)
虛擬主機(jī)是指單個IP地址上有多個站點(diǎn),Web 服務(wù)器根據(jù)瀏覽器中鍵入的名稱確定要請求的站點(diǎn)。更準(zhǔn)確地說,它查看請求中發(fā)送的主機(jī)頭。
如果沒有為您的站點(diǎn)設(shè)置 DNS,那么您通常無法測試它,因?yàn)槟荒苤惠斎?IP 地址,因?yàn)榉?wù)器無法獲取名稱,因此無法將請求與網(wǎng)站。使用 DNS 欺騙工具來克服此問題。
Mirror Settings(鏡像)
Mirror 工具會在瀏覽指定站點(diǎn)時,把接收到的響應(yīng)內(nèi)容克隆一份,并保存在磁盤上指定的路徑下。
保存文件的路徑會與瀏覽站點(diǎn)的目錄結(jié)構(gòu)相同,并且 Charles 會為主機(jī)名創(chuàng)建一個根目錄。文件名從 URL 導(dǎo)出并轉(zhuǎn)換為適合的數(shù)據(jù)進(jìn)行保存。查詢字符串包含在文件名中。如果收到相同 URL 的兩個響應(yīng),則后面一個文件會覆蓋前面的同名文件,因此保存在鏡像中在的響應(yīng)內(nèi)容將始終為最新的。
選定站點(diǎn)
可以為每個請求啟用該工具,也可以僅為指定站點(diǎn)啟用該工具。當(dāng)用于選定的站點(diǎn)時,可以使用簡單但功能強(qiáng)大的模式匹配將工具的效果限制為指定的主機(jī)和/或路徑。
副作用
如果為請求啟用鏡像工具,它將導(dǎo)致任何壓縮或編碼的響應(yīng)被解碼。因此,如果服務(wù)器提供了壓縮響應(yīng),Charles 將在傳遞給客戶端之前對其進(jìn)行解壓縮,這通常不會產(chǎn)生任何影響。但是如果您已經(jīng)構(gòu)建了自己的客戶端,或者客戶端希望得到壓縮響應(yīng),此時將會產(chǎn)生影響。使用 web 瀏覽器則沒有任何影響。
Auto Save Settings(自動保存)
Auto Save 工具會按設(shè)定的時間間隔自動保存和清除記錄會話。
如果您讓 Charles 長時間監(jiān)控網(wǎng)絡(luò)活動,并希望將記錄分解為可管理的單元,或者避免因數(shù)據(jù)量過大而可能出現(xiàn)的內(nèi)存不足情況,這將非常有用。
輸入以分鐘為單位的保存間隔以及保存會話文件的目錄。您可以選擇是否在每次運(yùn)行 Charles 時啟動 Auto Save 工具,否則在 Charles 啟動時將始終禁用 Auto Save 工具。
會話文件的名稱中保存時間戳,格式為 yyyyMMddHHmm,即年月日時分,以便按字母順序排序時,它們以正確的順序顯示。
Client Process Settings(客戶端進(jìn)程)
Client Process 工具顯示負(fù)責(zé)發(fā)出每個請求的本地客戶端進(jìn)程的名稱。客戶端進(jìn)程通常是您的 Web 瀏覽器(例如 firefox.exe),但客戶端進(jìn)程工具可以幫助您發(fā)現(xiàn)許多可能未知的 HTTP 客戶端。
客戶端進(jìn)程名稱顯示在每個請求的 Notes 區(qū)域中。
如果您可以在 Charles 中看到不確定原始進(jìn)程的請求,則客戶端進(jìn)程工具很有用。它僅適用于在運(yùn)行 Charles 的計(jì)算機(jī)上發(fā)出的請求。
在 Charles 接受每個連接之前,該工具將引入一個短暫的延遲。延遲通常不明顯或不顯著。
選定站點(diǎn)
可以為每個請求啟用該工具,也可以僅為指定站點(diǎn)啟用該工具。當(dāng)用于選定的站點(diǎn)時,可以使用簡單但功能強(qiáng)大的模式匹配將工具的效果限制為指定的主機(jī)和/或路徑。
Compose(編輯修改)
Compose 工具允許在原有的請求基礎(chǔ)上修改。
Repeat(重復(fù))
Repeat 工具允許選擇一個請求并重復(fù)它。Charles 將請求重新發(fā)送到服務(wù)器,并將響應(yīng)顯示為新請求。如果您正在進(jìn)行后端更改并希望在瀏覽器(或其他客戶機(jī))中重復(fù)請求的情況下測試這些更改,那么這將非常有用。特別是如果重新創(chuàng)建請求需要花費(fèi)一些精力,例如在游戲中獲得分?jǐn)?shù),這將節(jié)省大量精力。
重復(fù)請求是在 Charles 內(nèi)部完成的,因此無法在瀏覽器或其他客戶端中查看響應(yīng),響應(yīng)只能在 Charles 中查看。
Repeat Advanced(高級重復(fù))
Repeat Advanced 工具擴(kuò)展了 Repeat 工具,提供了迭代次數(shù)和并發(fā)數(shù)的選項(xiàng)。這對于負(fù)載測試非常有用。
Validate(驗(yàn)證)
Validate 工具允許 Charles 通過將它們發(fā)送到 W3C HTML 驗(yàn)證器、W3C CSS 驗(yàn)證器和 W3C Feed 驗(yàn)證器來驗(yàn)證記錄的響應(yīng)。
驗(yàn)證報(bào)告在 Charles 中顯示,其中包含與響應(yīng)源中相應(yīng)行相關(guān)聯(lián)的任何警告或錯誤(雙擊錯誤消息中的行號可以切換到源視圖)。
因?yàn)?Charles 測試它記錄的響應(yīng),所以它可以測試不易測試的場景,例如在提交表單后呈現(xiàn)錯誤消息。
重新驗(yàn)證
驗(yàn)證后,可以從驗(yàn)證結(jié)果中選擇響應(yīng)并 Repeat,重復(fù)原始請求,然后重新驗(yàn)證結(jié)果。
Publish Gist(發(fā)布要點(diǎn))
Publish Gist 工具可以將將所選請求和響應(yīng)作為要點(diǎn)發(fā)布。默認(rèn)情況下,這個要點(diǎn)將匿名發(fā)布,這意味著你將無法做到
刪除它。可以在 Tools 菜單的 Publish Gist Settings 中授權(quán) Charles 使用您的 GitHub 帳戶進(jìn)行發(fā)布。
Import/Export Settings(導(dǎo)入/導(dǎo)出)
Import/Export 工具允許導(dǎo)入/導(dǎo)出 Charles 的 Proxy、Tools、Preferences 等設(shè)置。
Profiles(配置)
Profiles 包含所有配置設(shè)置的完整副本。
每次更改當(dāng)前設(shè)置時,系統(tǒng)都會更新當(dāng)前活動的配置文件,當(dāng)您更改活動配置文件時,所有設(shè)置都將恢復(fù)為上次使用該配置文件時的狀態(tài)。
請注意,如果導(dǎo)入已保存的配置,則會覆蓋當(dāng)前配置文件的設(shè)置。建議使用導(dǎo)入/導(dǎo)出來備份或創(chuàng)建當(dāng)前配置和配置文件的快照,以維護(hù)多個并行工作區(qū)。
Charles 使用教程
通過 Charles 進(jìn)行 PC 端抓包
Charles 會自動配置瀏覽器和工具的代理設(shè)置,所以說打開工具直接就已經(jīng)是抓包狀態(tài)了。只需要保證一下幾點(diǎn)即可:
確保 Charles 處于 Start Recording 狀態(tài)。
勾選 Proxy | Windows Proxy 和 Proxy | Mozilla FireFox Proxy。
通過 Charles 進(jìn)行移動端抓包
手機(jī)抓包的原理,和 PC 類似,手機(jī)通過把網(wǎng)絡(luò)委托給 Charles 進(jìn)行代理與服務(wù)端進(jìn)行對話。具體步驟如下:
使手機(jī)和電腦在一個局域網(wǎng)內(nèi),不一定非要是一個 IP 段,只要是在同一個路由器下即可。
電腦端配置:
關(guān)掉電腦端的防火墻(這點(diǎn)很重要)。
打開 Charles 的代理功能:通過主菜單打開 Proxy | Proxy Settings 彈窗,填入代理端口(端口默認(rèn)為 8888,不用修改),勾選 Enable transparent HTTP proxying。
如果不需要抓取電腦上的請求,可以取消勾選 Proxy | Windows Proxy 和 Proxy | Mozilla FireFox Proxy。
手機(jī)端配置:通過 Charles 的主菜單 Help | Local IP Address 或者通過命令行工具輸入 ipconfig 查看本機(jī)的 IP 地址。設(shè)置代理:打開手機(jī)端的 WIFI 代理設(shè)置,輸入電腦 IP 和 Charles 的代理端口。
設(shè)置好之后,我們打開手機(jī)上的任意需要網(wǎng)絡(luò)請求的程序,就可以看到 Charles 彈出手機(jī)請求連接的確認(rèn)菜單(只有首次彈出),點(diǎn)擊 Allow 即可完成設(shè)置。
完成以上步驟,就可以進(jìn)行抓包了。
通過 Charles 進(jìn)行 HTTPS 抓包
HTTPS 的抓包需要在 HTTP 抓包基礎(chǔ)上再進(jìn)行設(shè)置。需要完成一下步驟:
完成 HTTP 抓包配置。
電腦端安裝 Charles 證書:通過 Charles 的主菜單 Help | SSL Proxying | Install Charles Root Certificate 安裝證書。
設(shè)置 SSL 代理:通過主菜單打開 Proxy | SSL Proxy Settings 彈窗,勾選 Enable SSL proxying。
移動端安裝 Charles 證書:通過 Charles 的主菜單 Help | SSL Proxying | Install Charles Root Certificate on a Mobile Device or Remote Browser 安裝證書。
設(shè)置好之后,我們打開手機(jī)上的任意需要網(wǎng)絡(luò)請求的程序,就可以看到 Charles 彈出手機(jī)請求連接的確認(rèn)菜單(只有首次彈出),點(diǎn)擊 Allow 即可完成設(shè)置。
完成以上步驟,就可以進(jìn)行 HTTPS 抓包了。
Charles License
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
注冊碼來自于網(wǎng)絡(luò),注冊碼 Windows 和 Mac 通用。
source: //henleylee.github.io/posts/2018/da575840.html
喜歡,在看
