[轉] iOS開發工具——網路封包分析工具Charles

來源:互聯網
上載者:User

標籤:切換   mac   超過   預設   select   檢查   強制   structure   對話方塊   

簡介

Charles是在Mac下常用的截取網路封包的工具,在做iOS開發時,我們為了調試與伺服器端的網路通訊協議,常常需要截取網路封包來分析。Charles通過將自己設定成系統的網路訪問Proxy 伺服器,使得所有的網路訪問請求都通過它來完成,從而實現了網路封包的截取和分析。

Charles是收費軟體,可以免費試用30天。試用期過後,未付費的使用者仍然可以繼續使用,但是每次使用時間不能超過30分鐘,並且啟動時將會有10秒種的延時。

 

因此,該付費方案對廣大使用者還是相當友好的,即使你長期不付費,也能使用完整的軟體功能。只是當你需要長時間進行封包調試時,會因為Charles強制關閉而遇到影響。

Charles主要的功能包括:

  1. 支援SSL代理。可以截取分析SSL的請求。
  2. 支援流量控制。可以類比慢速網路以及等待時間(latency)較長的請求。
  3. 支援AJAX調試。可以自動將json或xml資料格式化,方便查看。
  4. 支援AMF調試。可以將Flash Remoting 或 Flex Remoting資訊格式化,方便查看。
  5. 支援重髮網絡請求,方便後端調試。
  6. 支援修改網路請求參數。
  7. 支援網路請求的截獲並動態修改。
  8. 檢查HTML,CSS和RSS內容是否符合W3C標準。
安裝Charles

去Charles的官方網站(http://www.charlesproxy.com)下載最新版的Charles安裝包,是一個dmg尾碼的檔案。開啟後將Charles拖到Application目錄 下即完成安裝。

安裝SSL認證 

如果你需要截取分析SSL協議相關的內容。那麼需要安裝Charles的CA認證。具體步驟如下:

  1. 去 http://www.charlesproxy.com/ssl.zip 下載CA認證檔案。
  2. 解壓該zip檔案後,雙擊其中的.crt檔案,這時候在彈出的菜單中選擇“總是信任”,如下所示:

  3. 從鑰匙串訪問中即可看到添加成功的認證。如下所示:

 將Charles設定成系統代理程式

之前提到,Charles是通過將自己設定成Proxy 伺服器來完成封包截取的,所以使用Charles的第一步是將其設定成系統的Proxy 伺服器。

啟動Charles後,第一次Charles會請求你給它設定系統代理程式的許可權。你可以輸入登入密碼授予Charles該許可權。你也可以忽略該請求,然後在需要將Charles設定成系統代理程式時,選擇菜單中的 "Proxy" -> "Mac OS X Proxy"來將Charles設定成系統代理程式。如下所示:

之後,你就可以看到源源不斷的網路請求出現在Charles的介面中。

Charles主介面介紹

Charles主要提供2種查看封包的視圖,分別名為“Structure”和"Sequence"。

  1. Structure視圖將網路請求按訪問的網域名稱分類。
  2. Sequence視圖將網路請求按訪問的時間排序。

大家可以根據具體的需要在這兩種視圖之前來回切換。

對於某一個具體的網路請求,你可以查看其詳細的請求內容和響應內容。如果響應內容是JSON格式的,那麼Charles可以自動幫你將JSON內容格式化,方便你查看。

過濾網路請求

通常情況下,我們需要對網路請求進行過濾,只監控向指定目錄伺服器上發送的請求。對於這種需求,我們有2種辦法。

  1. 在主介面的中部的Filter欄中填入需要過濾出來的關鍵字。例如我們的伺服器的地址是:http://yuantiku.com,那麼只需要在Filter欄中填入yuantiku即可。

  2. 在Charles的功能表列選擇"Proxy"->"Recording Settings",然後選擇Include欄,選擇添加一個項目,然後填入需要監控的協議,主機地址,連接埠號碼。這樣就可以只截取目標網站的封包了。如所示:

通常情況下,我們使用方法1做一些臨時性的封包過濾,使用方法2做一些經常性的封包過濾。

截取iPhone上的網路封包

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

Charles上的設定

要截取iPhone上的網路請求,我們首先需要將Charles的代理功能開啟。在Charles的功能表列上選擇“Proxy”->"Proxy Settings",填入代理連接埠8888,並且勾上"Enable transparent HTTP proxying" 就完成了在Charles上的設定。如所示:

iPhone上的設定

首先我們需要擷取Charles運行所在電腦的IP地址,開啟Terminal,輸入ifconfig en0, 即可獲得該電腦的IP,如所示:

在iPhone的 “設定”->“無線區域網路“中,可以看到當前串連的wifi名,通過點擊右邊的詳情鍵,可以看到當前串連上的wifi的詳細資料,包括IP地址,子網路遮罩等資訊。在其最底部有“HTTP代理”一項,我們將其切換成手動,然後填上Charles運行所在的電腦的IP,以及連接埠號碼8888,如所示:

設定好之後,我們開啟iPhone上的任意需要網路通訊的程式,就可以看到Charles彈出iPhone請求串連的確認菜單(如所示),點擊“Allow”即可完成設定。

截取SSL資訊

Charles預設並不截取SSL的資訊,如果你想對截取某個網站上的所有SSL網路請求,可以在該請求上右擊,選擇SSL proxy,如所示:

這樣,對於該Host的所有SSL請求可以被截取到了。

類比慢速網路

在做iPhone開發的時候,我們常常需要類比慢速網路或者高延遲的網路,以測試在移動網路下,應用的表現是否正常。Charles對此需求提供了很好的支援。

在Charles的菜單上,選擇"Proxy"->"Throttle Setting"項,在之後彈出的對話方塊中,我們可以勾選上“Enable Throttling”,並且可以設定Throttle Preset的類型。如所示:

如果我們只想類比指定網站的慢速網路,可以再勾選中的"Only for selected hosts"項,然後在對話方塊的下半部分設定中增加指定的hosts項即可。

修改網路請求內容

有些時候為了調試伺服器的介面,我們需要反覆嘗試不同參數的網路請求。Charles可以方便地提供網路請求的修改和重發功能。只需要在以往的網路請求上點擊右鍵,選擇“Edit”,即可建立一個可編輯的網路請求。如下所示:

我們可以修改該請求的任何資訊,包括url地址,連接埠,參數等,之後點擊“Execute”即可發送該修改後的網路請求(如所示)。Charles支援我們多次修改和發送該請求,這對於我們和伺服器端調試介面非常方便。

總結

通過Charles軟體,我們可以很方便地在日常開發中,截取和調試網路請求內容,分析封包協議以及類比慢速網路。用好Charles可以極大的方便我們對於帶有網路請求的App的開發和調試。

參考連結:

  1. Charles主要的功能列表
  2. Charles官網

[轉] iOS開發工具——網路封包分析工具Charles

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.