iOS開發工具——網絡封包分析工具Charles

作者?唐巧?發布于 2013年12月9日?|?1?討論

簡介

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

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是通過將自己設置成代理服務器來完成封包截取的,所以使用Charles的第一步是將其設置成系統的代理服務器。

啟動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官網

感謝李永倫對本文的審校。

給InfoQ中文站投稿或者參與內容翻譯工作,請郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ)或者騰訊微博(@InfoQ)關注我們,并與我們的編輯和其他讀者朋友交流。

轉載于:https://www.cnblogs.com/dongweiq/p/5265556.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373474.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373474.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373474.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java Web托管選項流程圖

我經常被問到的一個問題是在何處以及如何托管Java Web應用程序。 可以在帶有嵌入式服務器的Eclipse中創建它很好,但是如何將它帶給人們呢? 長期以來,對于發燒友的程序員一直沒有答案。 只有昂貴和超大型的選擇。 事情最近變了,但這…

查找出系統中大于50k 且小于100k 的文件并刪除。

查找出系統中大于50k 且小于100k 的文件并刪除。 [rootxusx xxx]# ll -lhtotal 624K-rw-r--r-- 1 root root 576K Nov 30 21:39 1.txt-rw-r--r-- 1 root root 48K Nov 30 21:40 2.txt [rootxusx xxx]# find ./ -type f -size 1k -a -size -100k ./2.txt 轉載于:https://www.cnb…

vb.net mysql存儲圖片_怎么讓VB.NET 上傳圖片到SQL 數據庫只保存路徑,圖片保存到文件...

我的前臺代碼dimCoonAsSqlClient.SqlConnectiondimRsAsNewSqlClient.SqlCommandRs.ConnectionCoonRsNewSqlClient.SqlCommand("上傳圖片",Coon)Rs.CommandTypeCommandType.StoredPr...我的前臺代碼 dim Coon As SqlClient.SqlConnection dim Rs As New SqlClient.Sql…

[國嵌攻略][132][串口驅動實現]

如何開發Linux驅動程序 一般情況下都會有現成的驅動程序,不需要從零開始開發驅動程序。所以Linux驅動開發主要分為兩個步驟:1.讀得懂驅動程序;2.寫的了核心功能。 發送中斷處理程序 發送中斷處理函數在/drivers/serial/samsung.c的s3c24xx_se…

使用Regions ADF 11g進行Master Detail CRUD操作

你好 此示例演示了如何使用Regions在表之間創建Master Detail關系。 區域的主要目的是可重用性的概念。 使用區域和有限的任務流,我們可以將頁面重用到許多其他頁面中,以保持相同的功能并采用更簡潔的方法。 下載示例應用程序。 在此示例中,…

[轉] vim自定義配置 和 在ubnetu中安裝vim

Ubuntu 12.04安裝vim和配置 問題: ubuntu默認沒有安裝vim,出現: jygubuntu:~$ vim test.cThe program vim can be found in the following packages: * vim * vim-gnome * vim-tiny * vim-athena * vim-gtk * vim-noxTry: sudo apt-get insta…

win7 mysql php apache myadmin_windows下Apache+mysql+php+phpMyAdmin的安裝及配置 | 學步園

1、下載Apache ( httpd-2.2.25-win32-x86-no_ssl.msi )http://httpd.apache.org/download.cgi#apache24根據提示安裝到路徑(建議自定義路徑),NetWork Domain和Server Name都輸入 localhost(訪問時使用的域名);2、下載mysql (mysql-5.5.34-win32.msi )http://dev.m…

(15) PHP 隨筆---LAMP Linux基本操作 對文件、目錄的操作

◇對目錄的操作: ◇創建目錄: mkdir Xmu //在當前目錄下創建一個名為Xmu的目錄 ◇創建多個級別目錄關系: mkdir -p newdir/newdir/newdir //在當前目錄下創建多個連續目錄,-p的意思是以遞歸的方式 ◇移動目錄(也可以針對…

具有NetBeans,嵌入式GlassFish,JPA和MySQL數據源的Arquillian

這是一個偶然的帖子。 我一直在研究交易CDI觀察者,并嘗試使用嵌入式GlassFish對它進行一些集成測試。 但是令人驚訝的是,這種方法不能很好地工作,我仍在弄清楚,使用普通的嵌入式GlassFish時問題出在哪里。 同時,我轉到…

hmcl手機版下載_最新HMCL下載地址

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓[16:49:27][AWT-EventQueue-0/ERROR]---- Hello Minecraft! Crash Report ----Version: 2.3.1Time: 2016-7-14Thread: Thread[AWT-EventQueue-0,6,main]Advice:無建議。Content:java.lang.IllegalStateException: Buffers have not…

為什么我會在2012年的新企業Java項目中使用Java EE而不是Spring

這個問題經常出現。 我的新項目也在2011年11月發布。 在這個新的Enterprise Java項目中,我將使用Java EE(JEE)代替Spring框架。 我知道:關于此主題的文章,博客和論壇討論都可以找到。 為什么還需要一個? 因…

jsp mysql 音樂網站_Maven+JSP+SSM+Mysql實現的音樂網站

項目簡介本系統基于MavenJSPSSMMysql實現的音樂網站。主要實現的功能有音樂播放、下載、上傳等幾個模塊。難度等級:中等技術棧編輯器Eclipse Version: 2020-03 (4.15.0)前端技術基礎:htmlcssJavaScript框架:JQueryBootstrap后端技術SpringSpr…

遙感影像濾波處理軟件 — timesat3.2

最近因為要做遙感影像的濾波處理,經過女神推薦,決定用Timesat,可是該軟件3.1版本只適合xp系統以及2011的matlab,后來在官網上找到了最新的3.2版本。支持64位操作系統以及2014的matlab。大家可以直接上官網(http://www.…

持久化API(JPA)系列(三)實體Bean的開發技術-建立與數據庫的連接

在EJB 2.x中。EJB有3種類型的Bean。各自是會話Bean(Session Bean)、消息驅動Bean(Message-Driven Bean)和實體Bean(Entity Bean)。 隨著EJB 3的推出,EJB2.x中的實體Bean逐漸被JPA規范所替代&…

WebSphere Classloader內存泄漏預防

解決應用程序類加載器泄漏 應用領域 傾向于: 使用應用程序類加載器中的Runnable實現啟動新線程。 即使JEE編程模型不支持此功能,客戶也經常直接創建新線程或通過使用間接創建它們 計時器 客戶必須確保在停止相應的應用程序(或WAR模塊&…

airflow sql_alchemy_conn mysql_airflow使用mysql數據庫,LocalExecutor并發調度

mysql-airflow在mysql上執行create database airflow; —— 創建數據庫GRANT all privileges on airflow.* TO airflow% IDENTIFIED BY 123456; —— 將數據庫airflow的所有權限授權airflow用戶,密碼123456且該用戶可在任何IP段登錄操作FLUSH PRIVILEGES; —— 刷新…

【SAP業務模式】之ICS(四):組織單元的配置

SAP的ICS業務后臺配置主要有以下幾個配置點: 1、組織單元的配置(公司代碼、銷售組織、工廠、采購組織等); 2、主數據的部分; 3、訂單和開票的定價過程; 4、開票輸出類型; 5、公司間發票的配置&a…

poj-2478 Farey Sequence(dp,歐拉函數)

題目鏈接&#xff1a; Farey Sequence Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 14230 Accepted: 5624Description The Farey Sequence Fn for any integer n with n > 2 is the set of irreducible rational numbers a/b with 0 < a < b < n a…

Twitter4j和Esper:在Twitter上跟蹤用戶情緒

對于復雜事件處理和Twitter API的新手&#xff0c;我希望這是一個簡短的教程&#xff0c;可以幫助他們Swift起步。 管理大數據并從中挖掘有用的信息是當前技術中最熱門的討論主題。 來自Twitter&#xff0c;Facebook和Linkedin等社交網絡的半結構化數據的爆炸式增長使Hadoop&am…

webase crud查看所有表_Laravel-Gii 可視化代碼生成工具 CRUD +GUI

Laravel-Gii 可視化代碼生成工具 CRUD GUI適用于快速B端后臺開發&#xff0c;根據MySQL的表結構生成對應的Model、Observer、Controller、View、Route等相關項目文件[TOC]注意因為是解析MySQL的表結構&#xff0c;并且根據字段生成模板&#xff0c;所以目前生成的Model類時只支…