抓包工具Charles實戰(zhàn)

1、簡介

通過將自己設置為系統(tǒng)的網(wǎng)絡訪問代理服務器,使得所有的網(wǎng)絡訪問都通過他來完成,從而實現(xiàn)了網(wǎng)絡封包的截取和分析。除了在做移動開發(fā)中調(diào)試端口外,Charles 也可以用于分析第三方應用的通訊協(xié)議。配合 Charles 的 SSL 功能,Charles 還可以分析 Https 協(xié)議。

Charles的功能

????①截取Http 和 Https網(wǎng)絡封包。

????②支持重發(fā)網(wǎng)絡請求,方便后端調(diào)試。

????③支持修改網(wǎng)絡請求參數(shù)。

????④支持網(wǎng)絡請求的截獲并動態(tài)修改。

????⑤支持模擬慢速網(wǎng)絡。

2、如何安裝 Charles

百度云4.2版本

MAC破解:將Charles.app 拖到 應用程序 文件夾;復制charles.jar 到 /Applications/Charles.app/Contents/Java/

windows破解:msi程序安裝后,charles.jar替換到Charles/lib目錄下

3、將 Charles 設置成系統(tǒng)代理

這個是你抓包的前提,設置方法:Proxy---->Windows Proxy? 點擊勾選上即可

需要注意的是,Chrome和Firfox瀏覽器默認不使用系統(tǒng)代理,帶來的問題是,你通過Chrome和Firfox瀏覽器發(fā)出去的請求,無法被Charles截取。解決辦法,手動設置Chrome和Firfox的代理服務器為系統(tǒng)的代理服務器,或者直接將代理服務器地址設成127.0.0.1:8888。

為什么是8888?可不可以更改?全在Proxy---->Proxy Settings進行設置。

4、Charles 主界面介紹

Charles提供兩種查看封包的視圖:Structure和Sequence。

4.1 Structure ——將網(wǎng)絡請求按照域名進行分類

對于某一個具體的網(wǎng)絡請求,你可以查看其詳細的請求內(nèi)容和響應內(nèi)容。如果請求內(nèi)容是 POST 的表單,Charles 會自動幫你將表單進行分項顯示。如果響應內(nèi)容是 JSON 格式的,那么 Charles 可以自動幫你將 JSON 內(nèi)容格式化,方便你查看。如果響應內(nèi)容是圖片,那么 Charles 可以顯示出圖片的預覽。

4.2 Sequence——將網(wǎng)絡請求按照時間進行排序

提供簡單的Filter功能

5、過濾網(wǎng)絡請求

三種方法:一種是Filter內(nèi)填寫需要過濾出來的關(guān)鍵字;另一種方法是Proxy---->Recording Settings ---->Include----->Add,填寫具體內(nèi)容進行過濾。

6、截取 iPhone 上的網(wǎng)絡封包

Charles 通常用來截取本地上的網(wǎng)絡封包,但是當我們需要時,我們也可以用來截取其它設備上的網(wǎng)絡請求。下面我就以 iPhone 為例,講解如何進行相應操作。

????①Charles上的設置:

打開Charles的代理功能,具體操作? Proxy--->Proxy Settings? ,填寫端口默認就好,勾選Enable transparent HTTP proxying,完成Charles的代理功能。

????②iPhone上的設置:

首先我們需要獲取 Charles 運行所在電腦的 IP 地址,Charles 的頂部菜單的 “Help”–>“Local IP Address”,即可在彈出的對話框中看到 IP 地址,如下圖所示:

????然后,設置iPhone的代理服務器,手機和Charles需要連接同一個無線,在手機上填寫Charles的IP地址和端口。

????設置好之后,打開需要聯(lián)網(wǎng)的程序,Charles就會彈出一個窗口,iPhone 請求連接Charles的確認菜單,點擊Allow就好。

7、截取 Https 通訊信息

????①截取電腦端的Https信息:

安裝證書:?“Help” –> “SSL Proxying” –> “Install Charles Root Certificate”。根據(jù)提示,一路點擊下一步,最后提示“導入成功”。windows中win+R輸入命令certmgr.msc,可以在中級證書頒發(fā)機構(gòu)中--->證書查看安裝的證書。

此時證書是不信任的,也就是會出現(xiàn)你用IE或者Chrome打開百度都會提示這不是一個私密連接或者證書不被信任,還需要一步把不信任變成信任。打開IE瀏覽器—>工具—>Internet選項—>內(nèi)容—>證書—>把中級證書頒發(fā)機構(gòu)中的charles證書導出來—>再把導出來的證書導入到受信任的根證書頒發(fā)機構(gòu)中。就是先從中級證書頒發(fā)機構(gòu)中找到你剛才安裝的證書,將其導出(默認選擇就好)再導入到受信任的根證書頒發(fā)機構(gòu)中。當然這個導出導入也可以通過win+R輸入命令certmgr.msc中完成。

還有一步,如果還不能獲取https內(nèi)容,那么右擊--->選擇SSL Proxying Enable。

????②截取手機端的Https信息:

安裝證書:如果我們需要在 iOS 或 Android 機器上截取 Https 協(xié)議的通訊內(nèi)容,還需要在手機上安裝相應的證書。點擊 Charles 的頂部菜單,選擇 “Help” –> “SSL Proxying” –> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后就可以看到 Charles 彈出的簡單的安裝教程。如下圖所示:

按照我們之前說的教程,在設備上設置好 Charles 為代理后,在手機瀏覽器中訪問地址:chls.pro/ssl,即可打開證書安裝的界面,安裝完證書后,就可以截取手機上的 Https 通訊內(nèi)容了。不過同樣需要注意,默認情況下 Charles 并不做截取,你還需要在要截取的網(wǎng)絡請求上右擊,選擇 SSL proxy 菜單項。

8、模擬慢速網(wǎng)絡

在 Charles 的菜單上,選擇 “Proxy”–>“Throttle Setting” 項,在之后彈出的對話框中,我們可以勾選上 “Enable Throttling”,并且可以設置 Throttle Preset 的類型。

9、修改網(wǎng)絡請求內(nèi)容

有些時候為了調(diào)試服務器的接口,我們需要反復嘗試不同參數(shù)的網(wǎng)絡請求。Charles 可以方便地提供網(wǎng)絡請求的修改和重發(fā)功能。只需要在以往的網(wǎng)絡請求上點擊右鍵,選擇 “Edit”,即可創(chuàng)建一個可編輯的網(wǎng)絡請求。

10、給服務器做壓力測試

我們可以使用 Charles 的 Repeat 功能來簡單地測試服務器的并發(fā)處理能力,方法如下:我們在想打壓的網(wǎng)絡請求上(POST 或 GET 請求均可)右擊,然后選擇 「Repeat Advanced」菜單項,接著我們就可以在彈出的對話框中,選擇打壓的并發(fā)線程數(shù)以及打壓次數(shù),確定之后,即可開始打壓。

11、修改服務器返回內(nèi)容

有些時候我們想讓服務器返回一些指定的內(nèi)容,方便我們調(diào)試一些特殊情況。例如列表頁面為空的情況,數(shù)據(jù)異常的情況,部分耗時的網(wǎng)絡請求超時的情況等。如果沒有 Charles,要服務器配合構(gòu)造相應的數(shù)據(jù)顯得會比較麻煩。這個時候,使用 Charles 相關(guān)的功能就可以滿足我們的需求。根據(jù)具體的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以達到修改服務器返回內(nèi)容的目的。

三者在功能上的差異:

Map 功能適合長期地將某一些請求重定向到另一個網(wǎng)絡地址或本地文件。

Rewrite 功能適合對網(wǎng)絡請求進行一些正則替換。

Breakpoints 功能適合做一些臨時性的修改。

Map功能:

Charles 的 Map 功能分 Map Remote 和 Map Local 兩種,顧名思義,Map Remote 是將指定的網(wǎng)絡請求重定向到另一個網(wǎng)址請求地址,Map Local 是將指定的網(wǎng)絡請求重定向到本地文件。

Rewrite功能:

Rewrite 功能功能適合對某一類網(wǎng)絡請求進行一些正則替換,以達到修改結(jié)果的目的。

Breakpoints功能:

Breakpoints 功能類似我們在 Xcode 中設置的斷點一樣,當指定的網(wǎng)絡請求發(fā)生時,Charles 會截獲該請求,這個時候,我們可以在 Charles 中臨時修改網(wǎng)絡請求的返回內(nèi)容。

12、總結(jié)

通過 Charles 軟件,我們可以很方便地在日常開發(fā)中,截取和調(diào)試網(wǎng)絡請求內(nèi)容,分析封包協(xié)議以及模擬慢速網(wǎng)絡。用好 Charles 可以極大的方便我們對于帶有網(wǎng)絡請求的 App 的開發(fā)和調(diào)試。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)鍵詞:Charles macOS 一、Charles *Charles是常用的網(wǎng)絡封包截取工具,在做移動開...
    Jeff_9021閱讀 698評論 0 0
  • Charles是在 Mac 下常用的網(wǎng)絡封包截取工具,在做移動開發(fā)時,我們?yōu)榱苏{(diào)試與服務器端的網(wǎng)絡通訊協(xié)議,常常需...
    Coder_LRT閱讀 937評論 0 0
  • 1、工具介紹 Charles是一款在Mac下常用的數(shù)據(jù)包截取工具,在做移動開發(fā)時,為了調(diào)試移動端與服務端的網(wǎng)絡通訊...
    栗子_2019閱讀 8,732評論 0 2
  • 前言 更多內(nèi)容,請訪問我的 個人博客。 簡介 Charles 是收費軟件,可以免費試用 30 天。試用期過后,未付...
    潘高PG閱讀 1,088評論 0 1
  • 一、前言 Charles是一個Web代理服務器(HTTP代理 / HTTP監(jiān)視器),是一個常用的網(wǎng)絡封包截取工具,...
    SherlockShi閱讀 2,271評論 5 10

友情鏈接更多精彩內(nèi)容