簡介
Charles是一款代理服務(wù)器,通過成為電腦或者瀏覽器的代理,然后截取請求和請求結(jié)果達(dá)到分析抓包的目的。該軟件是用Java寫的,能夠在Windows,Mac,Linux上使用。開發(fā)iOS都在Mac系統(tǒng)上吧,安裝Charles的時候要先裝好Java環(huán)境。
Charles 是一款收費軟件,未注冊的版本會以 10 秒延遲啟動、每 30 分鐘自動退出的方式折騰用戶,要想順暢地使用,
可以使用在help->Register Charles,輸入注冊碼注冊即可:
? ??Registered Name: https://zhile.io
? ??License Key: 48891cf209c6d32bf4
主要功能
1、抓取 http 和 https 的請求和響應(yīng),這是最常用的。
2、重發(fā)網(wǎng)絡(luò)請求,方便后端調(diào)試。
3、修改網(wǎng)絡(luò)請求參數(shù)(客戶端向服務(wù)器發(fā)送的時候,可以修改后再轉(zhuǎn)發(fā)出去)。
4、網(wǎng)絡(luò)請求的截獲和動態(tài)修改。
5、支持模擬慢速網(wǎng)絡(luò),主要是模仿手機上的2G/3G/4G的訪問流程。
6、支持本地映射和遠(yuǎn)程映射,比如你可以把線上資源映射到本地某個文件夾下,這樣可以方便的處理一些特殊情況下的bug和線上調(diào)試(網(wǎng)絡(luò)的css,js等資源用的是本地代碼,這些你可以本地隨便修改,數(shù)據(jù)之類的都是線上的環(huán)境,方面在線調(diào)試)。
7、可以抓手機端訪問的資源(如果是配置HOST的環(huán)境,手機可以借用host配置進入測試環(huán)境)。
一、安裝配置
1、windows安裝
2、mac安裝
二、代理設(shè)置
(1)查看默認(rèn)端口:Proxy->Proxy Settings ?在這個頁面會看到HTTP Proxy的默認(rèn)端口是8888

2)查看當(dāng)前電腦的ip:
a、windows在cmd控制臺使用命令:ipconfig來查看自己對應(yīng)的ip

b、mac在terminal終端使用命令:ifconfig來查看自己對應(yīng)的ip

(3)手機上設(shè)置代理(記住手機跟電腦要在同一個網(wǎng)絡(luò))

ps:手機連接到Charles時會彈出提示框是否連接,點擊Allow允許即可
(4)設(shè)置Charles SSL代理:Proxy>SSL?Proxying Settings?
?1) Enable SSL Proxying復(fù)選框打上勾
?2) 添加你想要的設(shè)置代理的域名,端口默認(rèn)443

(5)手機下載ssl證書
1)Help->SSL Proxying ->Install Charles Root Certificate on a Mobile Device or Remote Browser,會彈出如下提示框:

2) 手機瀏覽器輸入網(wǎng)址:http://chls.pro/ssl,即可自動下載證書到手機端
三、常用功能使用
1、抓包
? ? 連接上charles后即可攔截http、https的請求。
2、過濾
a、Structure(結(jié)構(gòu)形式)
b、Sequence(按照順序)
方法一:在主界面的中部的?Filter 欄中輸入需要過濾出來的關(guān)鍵字。

方法二:菜單欄選擇?“Proxy”->”Recording Settings”,在彈出的窗口中選擇?Include 欄,再點擊“Add”,在彈出的窗口中輸入需要監(jiān)控的協(xié)議,主機地址,端口號等信息,來添加一個項目。如下圖所示:

方法三:在想過濾的網(wǎng)絡(luò)請求上右擊,選擇?“Focus”,之后在 Filter 一欄勾選上 Focussed 一項,如下圖所示:?

可以臨時性、快速地過濾掉一些沒有通過關(guān)鍵字的網(wǎng)絡(luò)請求。
3、重放
1)適用場景:
? ? 當(dāng)不想在頁面操作,直接驗證開發(fā)改的bug時。
????一般配合斷點來重新請求接口,進行數(shù)據(jù)驗證
2)具體使用:
選中某條訪問的請求,然后直接去點擊菜單欄下方的回放按鈕即可請求。

4、斷點
常用的使用場景:
? ??a、前端做了一些長度或者必填校驗,也想驗證后端接口是否也有對應(yīng)校驗時。
????b、返回一些特定的數(shù)據(jù)來查看前端的顯示是否正確(比如前端某個字段超過4個字后...顯示等)
????c、新增模擬大量數(shù)據(jù)來查看前端顯示是否正確
????d、具體的4xx、5xx錯誤時,前端顯示是否正確
1)添加斷點
斷點一般用于串改接口的請求參數(shù)或者返回的response的具體值。
方法一:選中某個請求,右鍵選中“Breakpoints”,加入斷點

方法二:菜單欄選擇?“Proxy”->”Breakpoint?Settings”,在彈出的窗口中選擇?Include 欄,再點擊“Add”,在彈出的窗口中輸入需要請求類型、host、端口號、path路徑等信息,來添加一個項目。如下圖所示:

2)攔截串改Request請求值

3)攔截串改Response返回的值

5、網(wǎng)絡(luò)環(huán)境模擬
1)適用場景:
????需要進行弱網(wǎng)測試時,可以使用該功能。
2)具體使用:
????菜單欄選擇?“Proxy”->”Throttle Settings”,在彈出的窗口中選擇對應(yīng)的Throttle preset模式來選擇不同類型的限流情況(可定義),勾選“Enable Throttling”啟用。如下圖所示:

6、本地文件映射
1)適用場景:很多時候需要頻繁修改數(shù)據(jù)內(nèi)容,這個時候總聯(lián)系后臺改數(shù)據(jù)庫會比較麻煩,而且數(shù)據(jù)變化也會影響到其他開發(fā)者。這個時候用本地模擬數(shù)據(jù)就可以完美解決。既方便又不影響別人。
如圖為線上抓到的網(wǎng)絡(luò)請求數(shù)據(jù):
1.在本地電腦任意位置新建一個記事本:復(fù)制抓到的數(shù)據(jù)格式粘貼到這里
2.設(shè)置URL使用本地數(shù)據(jù):選中url右鍵 — Map Local — choose 本地記事本路徑
3.再次請求該接口:如下說明配置成功,以后想改數(shù)據(jù)直接在記事本里改就可以了

7、重定向
1)適用場景:對第三方進行聯(lián)調(diào)測試,無法訪問乙方測試環(huán)境,直接訪問乙方正式環(huán)境,設(shè)置請求url重定向指向乙方開發(fā)公網(wǎng)測試環(huán)境,自主與乙方進行交互聯(lián)調(diào)測試。
打開charles,工具欄–tools–map remote settings–勾選允許重定向–點擊add新增?
charles新增重定向頁面輸入攔截url重定向到目的url
至此charles重定向已完成設(shè)置,移動端設(shè)置charles代理,所有符合設(shè)置條件的url重定向目的url;
8、DNS欺騙
1)適用場景:一般的開發(fā)流程中,在上線之前都需要在測試環(huán)境中先行進行驗證,而此時手機客戶端請求的域名是不太容易改變的,可以通過設(shè)置dns方式把域名轉(zhuǎn)發(fā)到測試機上,具體設(shè)置Tools->DNS Spoofing Settings比如要把所有包含xxxxxx.com的域名轉(zhuǎn)到10.0.0.71的服務(wù)器上,其實用修改HOST的方式是可以解決的;
2)操作流程:
