Charles-mac抓包工具簡介

摘自:http://www.51ste.com/share/det-402.html

一、前言

我們經(jīng)常在工作中使用到各種工具去對網(wǎng)絡(luò)請求進行攔截。抓包的工具有很多,適用于不同的平臺和場景,例如:Charles、Fiddler、Wireshark等等,在windows下,使用Fiddler就非常的方便,但是它的缺陷在于沒有Mac的版本,這讓使用mac的人員就十分苦惱。那么今天就其中一款抓包工具, Charles 進行講解,Charles 是一款全平臺的抓包工具,所以可以在 Mac 下使用。

二、Charles

1、什么是Charles

Charles 是一款比較常用的全平臺的網(wǎng)絡(luò)封包截取工具,而我們在做移動開發(fā)的時候,我們?yōu)榱苏{(diào)試、測試、分析等目的,經(jīng)常需要與服務(wù)端的網(wǎng)絡(luò)通訊協(xié)議打交道。Charles 可以幫我們截取網(wǎng)絡(luò)數(shù)據(jù)包來進行分析。

Charles 通過將軟件本身設(shè)置成系統(tǒng)的網(wǎng)絡(luò)訪問代理服務(wù)器,使得所有的網(wǎng)絡(luò)請求都會走一遍 Charles 代理,從而 Charles 可以截取經(jīng)過它的請求,然后我們就可以對其進行網(wǎng)絡(luò)包的分析。

Charles 是一款收費的軟件,可以提供 30 天的免費試用體驗。試用期過后,為付費的用戶,仍然可以繼續(xù)使用,但是每次使用時間不能超過 30 分鐘,并且啟動時將會有 10s 的延遲。所以如果只是偶爾使用一下,可以考慮一直使用免費版本,如果長期依賴抓包的話,可以選擇付費或者其他你能想到的辦法來解決 Charles License 的問題。

Charles 的功能非常強大,具體的還是以官方文檔為準,這里只是介紹一下開發(fā)和測試在工作中會用到的功能:

截取Http和Https網(wǎng)絡(luò)包。

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

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

支持網(wǎng)絡(luò)請求的截取以及動態(tài)修改請求響應(yīng)結(jié)果。

支持模擬限流網(wǎng)絡(luò)。

官網(wǎng):https://www.charlesproxy.com

這里使用的次新版,v4.2.5 進行講解,和舊版本相比,有一些界面的修改和增加了一下新的功能,整體來說都差不多。

2、Charles的基本界面

打開Charles之后,在主頁面中,提供了兩種查看網(wǎng)絡(luò)包的視圖方式,分別是『Structure』和『Sequence』。

1、Structure 視圖

Structure 視圖將網(wǎng)絡(luò)請求按請求的域名進行分類,將同域名的請求進行分類。

可以看到,Structure 視圖模式下,所有的請求是以域名進行分類顯示的,可以讓我們更關(guān)注同域名下的請求,當然這里都被折疊起來了,當此域名下有接口鏈接被請求了,會閃一下,這樣就可以讓我們發(fā)現(xiàn)哪些域名下的數(shù)據(jù)正在被請求。

2、Sequence 視圖

Sequence 視圖模式下,會將所有的網(wǎng)絡(luò)請求都按照訪問的時間從上到下進行排序。

和 Structure 一樣,該有的區(qū)域都有,很直觀的顯示了當前的請求鏈接、請求數(shù)據(jù)、響應(yīng)數(shù)據(jù)等情況。因為這里是按請求的先后順序進行有序的排列,Charles 同時也提供了一個過濾請求的地方,可以通過它來簡單的過濾我們需要的請求再進行查看。

在實際使用過程中,通常根據(jù)具體的需要在這兩種視圖之間來回切換。而對于某一個具體的網(wǎng)絡(luò)請求,Charles 也提供了詳細的請求內(nèi)容和響應(yīng)內(nèi)容,將發(fā)送的數(shù)據(jù)和顯示的數(shù)據(jù)均顯示出來,對于一些常見的數(shù)據(jù)格式, Charles 還提供了一些格式化的操作,例如 JSON 內(nèi)容,可以切換到 JSON 標簽下,它會按照 JSON 的格式進行格式化,方便我們閱讀和查看,而圖片的請求也會在 Charles 中顯示縮略圖的預(yù)覽。

三、截取移動設(shè)備的網(wǎng)絡(luò)封包

Charles 通常本身是可以直接截取本機上的網(wǎng)絡(luò)封包的,但是在現(xiàn)在互聯(lián)網(wǎng)公司來說,大部分使用到抓包的場景都是需要去抓一些移動設(shè)備上的網(wǎng)絡(luò)請求,例如:iPhone、Android 設(shè)備等,下面就以 iPhone 為例子,講解如何通過 Charles 抓取移動設(shè)備上的網(wǎng)絡(luò)封包。

1、Charles對應(yīng)設(shè)置

既然 Charles 是做了一個本地代理,所以需要將代理功能打開,并設(shè)置一個固定的端口。默認情況下,端口號為:8888 。

可以通過菜單欄:proxy → Proxy Settings ,進行查看當前或者修改當前代理端口,并且保證 Enable transparent HTTP proxying 被勾選。

2、iPhone上的設(shè)置

如果像在移動設(shè)備上指向 Charles 配置的代理,還需要知道本機的 IP 地址。一般來說,我們都知道在 Ternimal 中使用 ifconfig 命令,也可查到當前的 IP 地址。而 Charles 也提供了可視化的方式來查看當前本機的 IP 地址。

通過頂部菜單:Help → Local IP Address ,即可查看到當前設(shè)備的 IP 地址。

知道當前代理設(shè)備的 IP 地址之后,還需要在 iPhone 上設(shè)置 WIFI 的 HTTP 代理。注意這里的前提是,iPhone 和 Charles 代理設(shè)備鏈接的是同一網(wǎng)絡(luò)。

在iPhone中,通過 設(shè)置 → 無線局域網(wǎng) ,查看當前鏈接的 WIFI 點擊最右邊的感嘆號,進入當前 WIFI 的細節(jié)配置頁面,在最下面的 HTTP 代理中,選擇「手動」,然后填寫 Charles 代理機器的 IP 和 端口。

設(shè)置好之后,在 iPhone 上打開任意需要聯(lián)網(wǎng)的 App ,就可以看到 Charles 中彈出iPhone 請求鏈接的確認菜單,點擊“Allow”即可完成設(shè)置。

3、截取Https的網(wǎng)絡(luò)封包

在現(xiàn)在這個全網(wǎng)皆Https的環(huán)境下,一個App使用Https 是非常常見的。而正常情況下,Charles 是不能截取Https的網(wǎng)絡(luò)包的,這涉及到 Https 的證書問題。

但是可以在 Charles 中,通過一些簡單的配置,使其安裝 Charles 的 CA 證書。

具體步驟如下:

①在 Mac 上安裝 CA 證書。通過頂部菜單選擇:Help → SSL Proxying →? ? ?Install Charles Root Certificate,來安裝 CA 證書。

②iPhone 中,通過訪問 http://charesproxy.com/getssl來下載安裝 Charlse 的 CA 證書。

③在需要截取Https的請求上,選擇 Enable SSL Proxying。

完成上面的步驟之后,就可以在 Charles 中,截取到 iPhone 設(shè)備上的 Https 請求了。

在這個配置的過程中,可能會出現(xiàn)一些問題,可能按照步驟依然抓取不了 Https 的網(wǎng)絡(luò)包。主要的原因在于: CA 證書需要被 MacOS 信任。

Charles 的 CA 證書,需要被 MaxOS 信任,安裝好證書之后,通常會彈出『鑰匙串訪問』的窗口等待確認,當發(fā)現(xiàn)剛才安裝的 Charles 證書右下角有各 x 號,表示當前證書并不被 MacOS 信任。

需要選中這個 CA 證書,并指定為信任即可,在這個過程中,需要輸入密碼進行授權(quán)。

這樣,我們就可以抓取iPhone手機上的請求了,當然該工具還有著很多強大的功能,大家可以根據(jù)需要前去查找。

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

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

  • 簡介 Charles 是在 Mac 下常用的網(wǎng)絡(luò)封包截取工具,在做 移動開發(fā)時,我們?yōu)榱苏{(diào)試與服務(wù)器端的網(wǎng)絡(luò)通訊協(xié)...
    faunjoe閱讀 818評論 0 0
  • 有一個人做了一個這樣的小實驗,她把兩朵玫瑰花分別放在了兩個瓶子里同樣的照顧,唯一不同的是,她常常對A玫瑰說:...
    wspg閱讀 524評論 0 2

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