Charles 是在 PC 端經常使用的網絡封包截取工具,在作移動開發時,咱們爲了調試與服務器端的網絡通信協議,經常須要截取網絡封包來分析。除了在作移動開發中調試端口外,Charles 也能夠用於分析第三方應用的通信協議。配合 Charles 的 SSL 功能,Charles 還能夠分析 Https 協議。php
Charles 經過將本身設置成系統的網絡訪問代理服務器,使得全部的網絡訪問請求都經過它來完成,從而實現了網絡封包的截取和分析。css
Charles 是收費軟件,能夠免費試用 30 天。試用期事後,未付費的用戶仍然能夠繼續使用,可是每次使用時間不能超過 30 分鐘,而且啓動時將會有 10 秒種的延時。所以,該付費方案對廣大用戶仍是至關友好的,即便你長期不付費,也能使用完整的軟件功能。只是當你須要長時間進行封包調試時,會由於 Charles 強制關閉而遇到影響。html
Charles 主要的功能包括:web
打開瀏覽器訪問 Charles 官網 ,下載相應系統的 Charles 安裝包,而後安裝便可:後端
Debian
或基於 Red Hat
的 Linux 發行版,這是安裝 Charles 的首選方法。不然,將 tar.gz
文件解壓縮到適當的站點。若是您之前安裝過 Charles 而且正在進行升級;首先確保 Charles 沒有運行,而後安裝或複製在之前安上。經過運行 bin/charles
腳本啓動 Charles。若是使用 Firefox,也能夠下載 Firefox 插件。參考Firefox Add-On瀏覽器
Charles 的主界面視圖以下圖所示: 緩存
Charles 頂部爲菜單導航欄,菜單導航欄下面爲工具導航欄。視圖以下圖所示: 安全
Charles 主要提供兩種查看封包的視圖,分別名爲 Structure
和 Sequence
。服務器
使用時能夠根據具體的須要在這兩種視圖以前來回切換。請求多了有些時候會看不過來,Charles 提供了一個簡單的 Filter
功能,能夠輸入關鍵字來快速篩選出 URL 中帶指定關鍵字的網絡請求。網絡
對於某一個具體的網絡請求,你能夠查看其詳細的請求內容和響應內容。若是請求內容是 POST 的表單,Charles 會自動幫你將表單進行分項顯示。若是響應內容是 JSON 格式的,那麼 Charles 能夠自動幫你將 JSON 內容格式化,方便你查看。若是響應內容是圖片,那麼 Charles 能夠顯示出圖片的預覽。
Charles 的主菜單包括:File
、Edit
、View
、Proxy
、Tools
、Window
、Help
。用的最多的主菜單分別是 Proxy
和 Tools
。
Charles 是一個 HTTP 和 SOCKS 代理服務器。代理請求和響應使 Charles 可以在請求從客戶端傳遞到服務器時檢查和更改請求,以及從服務器傳遞到客戶端時的響應。下面主要介紹 Charles 提供的一些代理功能。Proxy 菜單的視圖以下圖所示:
Proxy 菜單包含如下功能:
Recording Settings 和 Start/Stop Recording 配合使用,在 Start Recording 的狀態下,能夠經過 Recording Settings 配置 Charles 的會話記錄行爲。Recording Settings 的視圖以下圖所示:
Options
、
Include
、
Exclude
三個選項卡:
Include
和 Exclude
選項卡的操做相同,選擇 Add
,而後填入須要監控的Procotol、Host 和 Port等信息,這樣就達到了過濾的目的。以下圖所示:
Focus
,而後其餘的請求就會被放到一個叫
Other Host
的分類裏面,這樣也達到了過濾的目的。
Throttle Settings 和 Start/Stop Throttling 配合使用,在 Start Throttling 的狀態下,能夠經過 Throttle Settings 配置 Charles 的網速模擬配置。Throttle Settings 的視圖以下圖所示:
Only for selected hosts
項,而後在對話框的下半部分設置中增長指定的 hosts 項便可。
Throttle Settings 視圖中的選項含義以下:
Breakpoint Settings 和 Enable/Disable Breakpoints 配合使用,在 Enable Breakpoints 的狀態下,能夠經過 Breakpoint Settings 配置 Charles 的斷點模式。Breakpoint Settings 的視圖以下圖所示:
Add
,而後填入須要監控的Scheme、Procotol、Host 和 Port 等信息,這樣就達到了設置斷點的目的。而後能夠來觀察或者修改請求或者返回的內容,可是在這過程當中須要注意請求的超時時間問題。或者能夠在某個想要設置斷點的請求網址上右擊選擇 Breakpoints 來設置斷點。
反向代理在本地端口上建立 Web 服務器,該端口透明地將請求代理給遠程 Web 服務器。反向代理上的全部請求和響應均可以記錄在 Charles 中。
若是您的客戶端應用程序不支持使用 HTTP 代理,或者您但願避免將其配置爲使用代理,那麼反向代理頗有用。建立原始目標 Web 服務器的反向代理,而後將客戶端應用程序鏈接到本地端口; 反向代理對客戶端應用程序是透明的,使您能夠查看 Charles 之前可能沒法訪問的流量。
有關反向代理的更多信息,請訪問 Reverse proxy
能夠將任何 TCP/IP
或 UDP
端口配置爲使用 Port Forwarding
工具從 Charles 轉發到遠程主機。這樣能夠調試 Charles 中的任何協議。
在 Macromedia Flash 中調試 XMLSocket 鏈接時,這尤爲有用。
還可使用 Charles 做爲 SOCKS 代理,所以無需設置端口轉發。
若是想要抓取電腦端的請求,勾選 Windows Proxy 選項便可;若是隻須要抓取手機請求,則取消勾選這個選項。
Proxy Settings 的視圖以下圖所示:
Enable transparent HTTP proxying
就完成了在 Charles 上的代理設置。
SSL Proxy Settings 的視圖以下圖所示:
Enable SSL proxying
就完成了在 Charles 上的 SSL 代理設置。以後也能夠選擇
Add
,而後填入須要監控的 Host 和 Port 信息,這樣就達到了針對某個域名啓用 SSL 代理的目的。
Access Control Settings 表示訪問控制設置。訪問控制列表肯定誰可使用此 Charles 實例。一般,您在本身的計算機上運行 Charles,而且您只打算本身使用它,所以 localhost 始終包含在訪問控制列表中。也能夠選擇 Add
,而後填入容許訪問的 IP,這樣就達到了容許某個 IP 訪問 Charles 的目的。
External Proxy Settings 表示外部代理設置。可能在網絡上有一個代理服務器,必須使用該代理服務器才能訪問 Internet。在這種狀況下,須要將 Charles 配置爲在嘗試訪問 Internet 時使用現有代理。
能夠配置單獨的代理地址和端口:
若是您有 SOCKS 代理,Charles 將把它用於全部非 HTTP(S) 流量,例如端口轉發。
Web Interface Settings 表示 Web 界面設置。Charles 有一個 Web 界面,可讓您從瀏覽器控制 Charles,或使用 Web 界面做爲 Web 服務使用外部程序。
在 External Proxy Settings 視圖中勾選 Enable the web interface
選項啓用 Web 界面。能夠容許匿名訪問,也能夠配置用戶名和密碼。還能夠經過在配置使用 Charles 做爲其代理的 Web 瀏覽器中訪問 http://control.charles/
來訪問 Web 界面。
Web界面提供對如下功能的訪問:
經過檢查 Web 界面 HTML ,您能夠推導出如何將其用做 Web 服務來自動化 Charles。
Charles 是一個 HTTP 和 SOCKS 代理服務器,全部的請求都會通過 Charles。下面主要介紹 Charles 提供的一些實用工具。Tools 菜單的視圖以下圖所示:
Tools 菜單包含如下功能:
No Caching 工具可防止客戶端應用程序(如 Web 瀏覽器)緩存任何資源。所以,始終向遠程網站發出請求,您始終能夠看到最新版本。
該工具能夠做用於每一個請求(選中 Enable No Caching
便可),也能夠僅對你配置的請求啓用(啓用 No Caching 的同時,請選中 Only for selected locations
)。當用於選定的請求時,可使用簡單但功能強大的模式匹配將工具的效果限制爲指定的主機和路徑。
No Caching 工具經過操縱控制響應緩存的 HTTP 請求頭來防止緩存。從請求中刪除 If-Modified-Since 和 If-None-Match 請求頭,添加 Pragma:no-cache 和 Cache-control:no-cache。從響應中刪除 Expires,Last-Modified 和ETag 請求頭,添加 Expires:0 和 Cache-Control:no-cache。
Block Cookies 工具阻止了 Cookie 的發送和接收。它可用於測試網站,就像在瀏覽器中禁用了 Cookie 同樣。 請注意,網絡爬蟲(例如 Google)一般不支持 Cookie,所以該工具還可用於模擬網絡爬蟲網站的視圖。
該工具能夠做用於每一個請求(選中 Enable Block Cookies
便可),也能夠僅對你配置的請求啓用(啓用 Block Cookies 的同時,請選中 Only for selected locations
)。當用於選定的請求時,可使用簡單但功能強大的模式匹配將工具的效果限制爲指定的主機和路徑。
Block Cookies 工具經過操縱控制響應 Cookies 的 HTTP 請求頭來禁用 Cookies。從請求中移除 Cookie 請求頭,防止 Cookie 值從客戶端應用程序(例如 Web 瀏覽器)發送到遠程服務器。從響應中刪除 Set-Cookie 請求頭,防止請求設置客戶端應用程序從遠程服務器接收的 Cookie。
Map Remote 工具根據配置的映射更改請求站點,以便重新站點透明地提供響應,就好像這是原始請求同樣。
經過此映射,您能夠從另外一個站點提供所有或部分站點。例如:
若是您擁有站點的開發版本而且但願可以經過開發提供的某些請求瀏覽實時站點,則 Map Remote 很是有用。例如,您可能但願從開發服務器提供 css 和 images 目錄。使用 live.com/css/ 等映射到 dev.com/css/ 或 live.com/*.css 到 dev.com 。
/
結尾。Map Remote 工具能夠將 HTTP 請求映射到 HTTPS 目標,反之亦然,所以您能夠將 HTTP 或 HTTPS 站點映射到其對立面。
每一個站點匹配可能包含協議、主機、端口和路徑模式,以匹配特定的 URL。站點可能包括通配符。當您向此工具添加新站點時,可能會找到有關建立站點匹配的更多幫助。
Map Local 工具使您可使用本地文件,就像它們是遠程網站的一部分同樣。您能夠在本地開發文件,並像在線上同樣測試它們。本地文件的內容將返回給客戶端,就像它是正常的遠程響應同樣。
Map Local 能夠大大加快開發和測試速度,不然您必須將文件上傳到網站以測試結果。使用 Map Local,您能夠在開發環境中安全地進行測試。
動態文件(例如包含服務器端腳本的文件)不會由 Map Local 執行,所以若是文件中有任何腳本,腳本將按原樣返回到瀏覽器,這可能不是預期的結果。若是您想使用動態文件,就好像它們是遠程網站的一部分同樣,請參閱 Map Remote 工具。
當請求與 Map Local 映射匹配時,它會檢查與路徑匹配的本地文件。它不包括查詢字符串(若是有)。若是在本地找到所請求的文件,則將其做爲響應返回,就好像它是從遠程站點加載的同樣,所以它對客戶端是透明的。若是在本地找不到所請求的文件,那麼該請求會像日常同樣由網站提供,返回由真正的服務器提供的數據。
每一個站點匹配可能包含協議、主機、端口和路徑模式,以匹配特定的 URL。站點可能包括通配符。當您向此工具添加新站點時,可能會找到有關建立站點匹配的更多幫助。
Rewrite 工具容許建立請求和響應在經過 Charles 時修改他們的規則。如:添加或更改頭信息、搜索和替換響應內容中的某些文本等。
重寫集能夠單獨激活和停用。每一個集合包含站點和規則的列表。這些站點選擇規則將要運行的請求和響應。
每一個規則都描述了一次重寫操做。規則可能會影響請求URL的 Header,正文或部份內容;它能夠根據請求或響應來操做;它能夠定義搜索、替換或者僅替換樣式重寫。
每一個站點匹配可能包含協議、主機、端口和路徑模式,以匹配特定的 URL。站點可能包括通配符。當您向此工具添加新站點時,可能會找到有關建立站點匹配的更多幫助。
當重寫操做未按預期工做時,重寫工具可能難以調試。若是您遇到問題,請嘗試添加一個很是基本的規則,例如添加明顯頭信息的規則,以便您能夠查看規則是否與請求徹底匹配。同時打開錯誤日誌中的調試,以獲取從 Charles 中的 Window 菜單訪問的錯誤日誌中打印的一些調試信息。
Black List 工具容許輸入應該被阻止的域名。當 Web 瀏覽器嘗試從被列入黑名單的域名請求任何頁面時,該請求將被 Charles 阻止。您還能夠輸入通配符來阻止其子域名。
Black List 工具容許輸入僅僅被容許的域名。Black List 工具將阻止除被列入白名單的域名以外的全部請求。
白名單工具用於僅容許指定的域名;黑名單工具,用於僅屏蔽指定的域名。
若是一個請求與「黑名單」和「白名單」都匹配,則該請求會被阻止。
DNS Spoofing 工具容許經過將本身的主機名指定給遠程地址映射來欺騙 DNS 查找。 當請求經過 Charles 時,您的 DNS 映射將優先。
Charles 包含配置的域名到 IP 地址映射的列表。當針對列出的域名發出請求時,Spoof DNS 插件會發現欺騙 IP 將請求重定向到該地址。主機HTTP標頭保持不變,所以就像您的 DNS 服務器返回欺騙性 IP同樣。
虛擬主機是指單個IP地址上有多個站點,Web 服務器根據瀏覽器中鍵入的名稱肯定要請求的站點。更準確地說,它查看請求中發送的主機頭。
若是沒有爲您的站點設置 DNS,那麼您一般沒法測試它,由於您不能只輸入 IP 地址,由於服務器沒法獲取名稱,所以沒法將請求與網站。使用 DNS 欺騙工具來克服此問題。
Mirror 工具會在瀏覽指定站點時,把接收到的響應內容克隆一份,並保存在磁盤上指定的路徑下。
保存文件的路徑會與瀏覽站點的目錄結構相同,而且 Charles 會爲主機名建立一個根目錄。文件名從 URL 導出並轉換爲適合的數據進行保存。查詢字符串包含在文件名中。若是收到相同 URL 的兩個響應,則後面一個文件會覆蓋前面的同名文件,所以保存在鏡像中在的響應內容將始終爲最新的。
能夠爲每一個請求啓用該工具,也能夠僅爲指定站點啓用該工具。當用於選定的站點時,可使用簡單但功能強大的模式匹配將工具的效果限制爲指定的主機和/或路徑。
若是爲請求啓用鏡像工具,它將致使任何壓縮或編碼的響應被解碼。所以,若是服務器提供了壓縮響應,Charles 將在傳遞給客戶端以前對其進行解壓縮,這一般不會產生任何影響。可是若是您已經構建了本身的客戶端,或者客戶端但願獲得壓縮響應,此時將會產生影響。使用 web 瀏覽器則沒有任何影響。
Auto Save 工具會按設定的時間間隔自動保存和清除記錄會話。
若是您讓 Charles 長時間監控網絡活動,並但願將記錄分解爲可管理的單元,或者避免因數據量過大而可能出現的內存不足狀況,這將很是有用。
輸入以分鐘爲單位的保存間隔以及保存會話文件的目錄。您能夠選擇是否在每次運行 Charles 時啓動 Auto Save
工具,不然在 Charles 啓動時將始終禁用 Auto Save
工具。
會話文件的名稱中保存時間戳,格式爲 yyyyMMddHHmm
,即年月日時分,以便按字母順序排序時,它們以正確的順序顯示。
Client Process 工具顯示負責發出每一個請求的本地客戶端進程的名稱。客戶端進程一般是您的 Web 瀏覽器(例如 firefox.exe),但客戶端進程工具能夠幫助您發現許多可能未知的 HTTP 客戶端。
客戶端進程名稱顯示在每一個請求的 Notes
區域中。
若是您能夠在 Charles 中看到不肯定原始進程的請求,則客戶端進程工具頗有用。 它僅適用於在運行 Charles 的計算機上發出的請求。
在 Charles 接受每一個鏈接以前,該工具將引入一個短暫的延遲。 延遲一般不明顯或不顯著。
能夠爲每一個請求啓用該工具,也能夠僅爲指定站點啓用該工具。當用於選定的站點時,可使用簡單但功能強大的模式匹配將工具的效果限制爲指定的主機和/或路徑。
Compose 工具容許在原有的請求基礎上修改。
Repeat 工具容許選擇一個請求並重復它。Charles 將請求從新發送到服務器,並將響應顯示爲新請求。若是您正在進行後端更改並但願在瀏覽器(或其餘客戶機)中重複請求的狀況下測試這些更改,那麼這將很是有用。特別是若是從新建立請求須要花費一些精力,例如在遊戲中得到分數,這將節省大量精力。
重複請求是在 Charles 內部完成的,所以沒法在瀏覽器或其餘客戶端中查看響應,響應只能在 Charles 中查看。
Repeat Advanced 工具擴展了 Repeat 工具,提供了迭代次數和併發數的選項。這對於負載測試很是有用。
Validate 工具容許 Charles 經過將它們發送到 W3C HTML 驗證器、W3C CSS 驗證器和 W3C Feed 驗證器來驗證記錄的響應。
驗證報告在 Charles 中顯示,其中包含與響應源中相應行相關聯的任何警告或錯誤(雙擊錯誤消息中的行號能夠切換到源視圖)。
由於 Charles 測試它記錄的響應,因此它能夠測試不易測試的場景,例如在提交表單後呈現錯誤消息。
驗證後,能夠從驗證結果中選擇響應並 Repeat
,重複原始請求,而後從新驗證結果。
Publish Gist 工具能夠將將所選請求和響應做爲要點發布。默認狀況下,這個要點將匿名發佈,這意味着你將沒法作到 刪除它。能夠在 Tools
菜單的 Publish Gist Settings
中受權 Charles 使用您的 GitHub 賬戶進行發佈。
Import/Export 工具容許導入/導出 Charles 的 Proxy
、Tools
、Preferences
等設置。
Profiles 包含全部配置設置的完整副本。
每次更改當前設置時,系統都會更新當前活動的配置文件,當您更改活動配置文件時,全部設置都將恢復爲上次使用該配置文件時的狀態。
請注意,若是導入已保存的配置,則會覆蓋當前配置文件的設置。建議使用導入/導出來備份或建立當前配置和配置文件的快照,以維護多個並行工做區。
Charles 會自動配置瀏覽器和工具的代理設置,因此說打開工具直接就已是抓包狀態了。只須要保證一下幾點便可:
手機抓包的原理,和 PC 相似,手機經過把網絡委託給 Charles 進行代理與服務端進行對話。具體步驟以下:
使手機和電腦在一個局域網內,不必定非要是一個 IP 段,只要是在同一個路由器下便可。
電腦端配置:
8888
,不用修改),勾選 Enable transparent HTTP proxying
。手機端配置:
ipconfig
查看本機的 IP 地址。設置好以後,咱們打開手機上的任意須要網絡請求的程序,就能夠看到 Charles 彈出手機請求鏈接的確認菜單(只有首次彈出),點擊 Allow 便可完成設置。
完成以上步驟,就能夠進行抓包了。
HTTPS 的抓包須要在 HTTP 抓包基礎上再進行設置。須要完成一下步驟:
Enable SSL proxying
。https://zhile.io
48891cf209c6d32bf4
註冊碼來自於網絡,註冊碼 Windows 和 Mac 通用。