Charles 是一個網絡調試的代理工具,類似 Windows 下的 Fildder,這里介紹下幾個常用的調試技巧,使用的版本是 Charles 4。
1、移動端抓包
在移動開發中,經常會遇到在手機上調試的場景,這時候就可以通過 Charles 進行抓包,設置也很簡單:
在菜單欄上選擇 Proxy 》Proxy Settings,勾選 Enable transparent HTTP proxying,代理端口填寫 8888,也可以自定,這樣設置就完成了;
接下來是手機端的設置,以 iPhone 為例:
在 iPhone 的 設置 》無線局域網,選擇當前 WIFI 鏈接的詳情,將底部有HTTP代理切換成手動,然后填上 Charles 所運行電腦的 IP,及端口號:
這時用手機訪問網絡,Charles 會彈出確認對話框,確認即可。
2、模擬移動網絡環境
在菜單欄上選擇,選擇 Proxy 》Throttle Setting,勾選上 Enable Throttling,然后就可以選擇需要模擬的網絡環境了:

3、修改 Request 網絡請求
在調試時我們經常需要改變請求參數,這個功能就很方便,設置方法:
在請求列表中選擇需要修改的請求,在反鍵菜單中選擇 Compose,接下來就可以在下面修改 key,value 了,最后點擊 Execute 發送請求。

除此之外設置斷點也可以修改 Request,這個在下面的第四點中一起介紹。
4、修改 Response 網絡請求
與上條類似,調試時我們也需要對服務端的各種返回做處理,所以可以直接用 Charles 修改 Response 返回,設置有兩個方法實現,一個是臨時設置斷點:
在請求列表中選擇需要修改的請求,反鍵選擇 Breakpoints,然后再次訪問這個接口,這時 Charles 會捕獲到該接口並讓你修改 Request,修改完成后點擊 Execute 會再次讓你修改 Response,這時就可以修改,key,value 了,同樣點擊 Execute 發送請求。

例子中簡單的發送了一個 Ajax 請求,默認返回值為 ret:0,通過添加 Rewrite 規則后,我們可以看到瀏覽器中返回值為 ret:1 了:
另一個方法是設置 Rewrite,如果我們要經常性的修改 Response,那斷點模式就比較繁瑣,設置 Rewrite 即可一勞永逸:
在請求列表中選擇需要修改的請求,在菜單欄上選擇 Tools 》Rewrite,依次添加規則,修改的地址,修改值:

5、網絡映射功能
映射分為 Map Local 和 Map Remote,第一個是將網絡請求映射到本地,而第二個是映射到另一個服務地址,先以 Map Local 為例:
我們在 Charles 中找到一個樣式表文件,反鍵菜單中選擇 Map Local,然后在 Map To 地址中填入本地的一個樣式表:

刷新網頁即可看到原本灰色的背景被改成了橙色,這個方法非常適用調試線上的 Javascript、CSS 文件。
然后在來看看 Map Remote 設置,反鍵菜單中選擇 Map Remote,這里我們把 www.qq.com 映射到本地的一個 Node 服務:

打開 www.qq.com 看到就是 127.0.0.1:3004 服務,這個方法可以用於調試線上的 Ajax 請求接口。