日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Charles抓包

發(fā)布時間:2025/4/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Charles抓包 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
首發(fā)于 樊浩柏科學院

Charles 是在 Mac 下常用的截取網(wǎng)絡封包的工具(Win 環(huán)境也已支持),在移動端開發(fā)過程中,我們常需要截取網(wǎng)絡包分析服務端的通訊協(xié)議。Charles 將自己設置成系統(tǒng)的網(wǎng)絡訪問代理服務器,不僅可以提供 SSL 代理,還支持流量的控制、支持重發(fā)網(wǎng)絡請求、支持修改網(wǎng)絡請求參數(shù)、支持網(wǎng)絡響應截獲并動態(tài)修改。

安裝Charles

從 Charles 的 官方網(wǎng)站 下載最新的安裝包,下載晚完成安裝即可。

Charles 是付費軟件,當然免費狀態(tài)也可以使用??梢允褂萌缦滦畔⑼瓿勺?#xff1a;

Registered Name: https://zhile.io License Key: 48891cf209c6d32bf4

如果注冊失敗,可以嘗試 這種方法。

設置成系統(tǒng)代理服務器

由于 Charles 是通過將自己設置成代理服務器來完成封包截取的,所以第一步是需要將 Charles 設置成系統(tǒng)的代理服務器。

啟動 Charles 后,菜單中的 “Proxy” -> “Windos Proxy(或者Mac OS X Proxy)”, 來將 Charles 設置成系統(tǒng)代理。如下所示:

配置后,就可以在界面中看到截取的網(wǎng)絡請求。但是,Chrome 和 Firefox 瀏覽器默認并不使用系統(tǒng)的代理服務器設置, 所以需要將 Chrome 和 Firefox 設置成使用系統(tǒng)的代理服務器,或者直接設置成地址127.0.0.1:8888。

如果 Chrome 已安裝了 Host Switch Plus 插件,則需要暫時關閉。

過濾網(wǎng)絡請求

一般情況下,我們只需要監(jiān)聽指定服務器上發(fā)送的請求,可以使用如下辦法解決:

  • 方式1:在主界面 “Sequence” -> “Filter” 欄位置輸入需要過濾的關鍵字即可。例如輸入fanhaobai,則過濾輸出只包含 fanhaobai 信息的請求。
  • 方式2:在 Charles 的菜單欄選擇 “Proxy” -> ”Recording Settings”,并選擇 Include 欄,添加一條永久過濾規(guī)則,主要填入需要截取網(wǎng)站的協(xié)議、主機地址、端口號。

  • 方式3:右擊需要過濾的網(wǎng)絡請求,選擇 “Focus” 選項即可。

方式 1 和方式 3 可以快速地過濾臨時性網(wǎng)絡請求,使用方式 2 過濾永久性網(wǎng)絡請求。

截取移動設備網(wǎng)絡包

Charles 除了可以截取本地的網(wǎng)絡包,作為代理服務器后,同樣可以截取移動設備的網(wǎng)絡請求包。

設置Charles

截取移動設備網(wǎng)絡包時,需要先將 Charles 的代理功能打開。在 Charles 的菜單欄上選擇 “Proxy” -> ”Proxy Settings”,填入默認代理端口 8888,且勾選 “Enable transparent HTTP proxying” 就完成了設置。如下圖所示:

iPhone

首先,通過 Charles 的頂部菜單的 “Help” -> ”Local IP Address” 獲取本地電腦的 IP 地址,例如我的本機電腦為192.168.1.102。

在 iPhone 的 ”設置“ -> ”無線局域網(wǎng)“ 中,對當前局域網(wǎng)連接設置 HTTP 代理(端口默認為 8888),如下圖:

設置完成后,打開 iPhone 的任意程序,在 Charles 就可以彈出連接確認窗口,點擊 ”Allow” 即可。

Android

在 Android 上操作同 iPhone,只是某些系統(tǒng)設置方式不一致而已。

截取 Https 包

如果需要截取并分析 Https 協(xié)議信息,需要安裝 Charles 的 CA 證書。

本地通信信息

點擊 Charles 的頂部菜單,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,即可完成證書的安裝。如下圖所示:

建議將證書安裝在 ”受信任的根證書頒發(fā)機構“ 存儲區(qū)。

特別說明,即使安裝完證書后,Charles 默認是不會截取 Https 網(wǎng)絡通訊的信息。對于需要截取分析站點 Https 請求,可以右擊請求記錄,選擇 SSL proxy 即可,如圖所示:

移動設備的通信信息

如果在 iPhone 或 Android 機器上截取 Https 協(xié)議的通訊內容,需要手機上安裝相應的證書。點擊 Charles 的頂部菜單,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后按照 Charles 的提示的安裝教程安裝即可。如下圖所示:

在上述 截取移動設備網(wǎng)絡包 為手機設置好代理后,手機瀏覽器中訪問地址http://chls.pro/ssl,即可打開證書安裝的界面。安裝完證書后,就可以截取手機上的 Https 通訊內容了。注意,同樣需要在要截取的網(wǎng)絡請求上右擊,選擇 SSL proxy 菜單項。

如果 SSL proxy 后出現(xiàn)如下錯誤:

可將證書設置為信任即可,例如 iPhone 下 “設置” -> “通用” -> “關于本機” -> “證書信任設置” 下:

模擬慢請求

在做 App 開發(fā)調試時,經(jīng)常需要模擬慢請求或者高延遲網(wǎng)絡,以測試應用在網(wǎng)絡異常情況變現(xiàn)是否正常,而這使用 Charles 就輕松幫我們完成。

在 Charles 的菜單上,選擇 “Proxy” -> ”Throttle Setting” 項,在彈出的窗口中,可以勾選上 “Enable Throttling”,并且可以設置 Throttle Preset 的類型。如下圖所示:

當然可以通過 “Only for selected hosts” 項,只模擬指定站點的慢請求。

修改請求內容

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

我們可以修改該請求的任何信息,包括 URL 地址、端口、參數(shù)等,之后點擊 “Execute” 即可發(fā)送該修改后的網(wǎng)絡請求。Charles 支持我們多次修改和發(fā)送該請求,這對于我們和服務器端調試接口非常方便,如下圖所示:

修改響應內容

有候為方便我們調試一些特殊情況,需要服務器返回一些特定的響應內容。例如數(shù)據(jù)為空或者數(shù)據(jù)異常的情況,部分耗時的網(wǎng)絡請求超時的情況等。通常讓服務端配合,構造相應的數(shù)據(jù)顯得會比較麻煩,這個時候,使用 Charles 就可以滿足我們的需求。

根據(jù)不同的場景需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以達到修改服務器返回內容的目的。這三者在功能上的差異是:

  • Map 功能適合長期地將某一些請求重定向到另一個網(wǎng)絡地址或本地文件。
  • Rewrite 功能適合對網(wǎng)絡請求進行一些正則替換。
  • Breakpoints 功能適合做一些臨時性的修改。

Map功能

Charles 的 Map 功能分 Map Remote 和 Map Local 兩種。Map Remote 是將指定的網(wǎng)絡請求重定向到另一個網(wǎng)址請求地址,而 Map Local 是將指定的網(wǎng)絡請求重定向到本地文件。在 Charles 的菜單中,選擇 “Tools” -> ”Map Remote” 或 “Map Local” ,即可進入到相應功能的設置頁面。

對于 Map Remote 功能(選中 Enable Map Remote),我們需要填寫網(wǎng)絡重定向的源地址和目的地址,對于其他非必需字段可以留空。下圖是一個示例,我將測試環(huán)境t.fanhaobai.com的請求重定向到了生產環(huán)境www.fanhaobai.com。

對于 Map Local 功能(選中 Enable Map Local),我們需要填寫的重定向的源地址和本地的目標文件。對于有一些復雜的網(wǎng)絡請求結果,我們可以先使用 Charles 提供的 “Save Response…” 功能,將請求結果保存到本地并稍加修改,成為我們的目標映射文件。

Rewrite功能

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

例如,將服務端返回的www.fanhaobai.com全部替換為www.baidu.com,如下:

將響應中的www.fanhaobai.com全部替換為www.baidu.com。于是在 “Tools” -> "Rewrite" 下配置如下的規(guī)則:

選中 “Enable Rewrite” 啟用 Rewrite 功能 ,響應如下:

Breakpoints功能

上面提供的 Rewrite 功能最適合做批量和長期的替換,但是很多時候,我們只是想臨時修改一次網(wǎng)絡請求結果,這個時候,我們最好使用 Breakpoints 功能。

在需要打斷點的請求上右擊并選擇 “Breakpoints”,重新請求該地址,可以發(fā)現(xiàn)客戶端被掛起,Charles 操作界面如下:

此時可以修改請求信息,但這里只修改響應信息,故點擊 “Execute” 后選擇 “Edit Response” 項,修改 title 為fanhaobai.com,如下:

繼續(xù)點擊 “Execute” ,可看見響應的 title 已經(jīng)變?yōu)閒anhaobai.com。

壓力測試

我們可以使用 Charles 的 Repeat 功能來簡單地測試服務器的并發(fā)處理能力。在想壓測的網(wǎng)絡請求上右擊,然后選擇 "Repeat Advanced” 項,如下所示:

這樣我們就可以在上圖的對話框中,選擇壓測的并發(fā)線程數(shù)以及壓測次數(shù),確定之后,即可開始壓力測試了。

反向代理

Charles 的反向代理功能允許我們將本地的端口映射到遠程的另一個端口上。

總結

以上是生活随笔為你收集整理的使用Charles抓包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。