IT 工具 Charles抓包

【IT 工具 Charles抓包】

簡介

Charles是什么?

為什么是Charles?

為什么要用抓包工具?大家在平常移動App調(diào)試測試中是如何進行抓包的?

在我們做開發(fā)與測試的過程中,總免不了碰到網(wǎng)絡(luò)問題,特別是重后臺的產(chǎn)品,這個時候我們往往的處理方法是抓個網(wǎng)絡(luò)包,看看到底應(yīng)用發(fā)送和接收了些什么鬼.....這個時候Charles上場了;Charles是一款屌的不行的截包工具,好用到?jīng)]朋友。

那么Charles屌在哪里呢???主要特點如下:

1.支持SSL代理,可以截取分析SSL的請求

2.支持流量控制。可以模擬慢速網(wǎng)絡(luò)(2G,3G),以及等待時間較長的請求。

3.支持AJAX調(diào)試。可以自動把JSON或者XML數(shù)據(jù)格式化,方便查看。

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

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

6.支持網(wǎng)絡(luò)請求的截取和動態(tài)修改。

7.最重要的一個優(yōu)點就是有不同平臺的版本(Mac,Windows、Linux)即學一個打遍天下。

Charles基本工作原理

charles是通過網(wǎng)絡(luò)代理來進行抓包的,下面先了解一下http代理的原理:

1.普通http請求過程

一般情況下的HTTP請求與響應(yīng)


2.加入了Charles的HTTP代理的請求與響應(yīng)過程

中間的代理服務(wù)器就是Charles


使用

Charles的下載與安裝過程

1.官網(wǎng)下載地址:

http://www.charlesproxy.com/download/

2.Mac下安裝:

是一個安裝包是一個dmg后綴的文件。打開后將Charles拖到Application目錄下即完成安裝。

在Mac下你打開Launchpad即可看到一個像花瓶一樣的Charles程序圖標


3.Windows下安裝:

下載后直接雙擊根據(jù)安裝向?qū)б徊揭徊桨惭b即可

Http抓包操作步驟

Step 1:開啟Charleshttp代理;
Step 2:手機端Wifi添加代理;
Step 3:開啟Charles錄制功能;
Step 4:啟動應(yīng)用開始抓包;
Step 5:分析抓取的數(shù)據(jù)包。

Step 1: 開啟Charleshttp代理

設(shè)置Charles代理

第一次啟動默認會開啟本機的系統(tǒng)代理,因為我們只是監(jiān)控移動端的所以將此選去除(去掉選項前面的小鉤)


激活http代理功能

Step 2: 手機端Wifi添加代理

Android手機:

  1. 在手機端打開你的Wifi設(shè)置然后長按已經(jīng)連接的Wifi在彈出來的菜單中選擇【修改網(wǎng)絡(luò)】

  2. 溝上[顯示高級]選項--【手動】

  3. 輸入代理服務(wù)器的IP與端口
    IP即安裝了Charles的電腦IP地址,端口就是前面一步設(shè)置Charles時所設(shè)置的端口。

注意:手機所連接Wifi要與電腦在同一個LAN(局域網(wǎng))

Genymotion:

Charles默認是不監(jiān)聽Genymotion模擬器的網(wǎng)絡(luò)動態(tài)的。

需要進行以下設(shè)置:

  1. 打開你的Genymotion模擬器
  2. 設(shè)置 -> Wifi -> 長按你的當前的網(wǎng)絡(luò)連接
  3. 選擇 “修改網(wǎng)絡(luò)”
  4. 勾選 “顯示高級選項”
  5. 選擇 “代理設(shè)置 -> 手動”
  6. 設(shè)置你的代理服務(wù)器為: 10.0.3.2 (這是Genymotion為本機準備的特殊端口)
  7. 把端口設(shè)置為: 8888
  8. 保存
  9. 打開飛行模式再關(guān)閉飛行模式,方可起效

AVD:

Android自帶模擬器

  1. 查看本機IP(Help -> Local IP Address)
    注意:必須從這里看,不能直接查本機IP
    .

  2. 打開模擬器的代理設(shè)定界面,把代理IP和端口設(shè)置好

    .

iOS手機:

  1. 點擊你所連接的wifi
  2. 輸入代理服務(wù)器的IP與端口
    IP即安裝了Charles的電腦IP地址,端口就是前面一步設(shè)置Charles時所設(shè)置的端口。

注意:手機所連接Wifi要與電腦在同一個LAN(局域網(wǎng))


Step 3:開啟Charles錄制功能

  1. 當手機連接上代理后Charles會彈出相應(yīng)的提示框,點擊Allow即可。(有時候不會有彈窗)
  2. 點擊工具欄上的開始錄制按鈕,即啟動了Charles的抓包功能了。


Step 4:啟動應(yīng)用開始抓包

  1. 在手機上操作相應(yīng)的App進行抓包。
  2. 在Charles的主界面上就可看到相應(yīng)的請求內(nèi)容。


Step 5:分析抓取的數(shù)據(jù)包

  1. Charles 主要提供兩種查看封包的視圖,分別名為 “Structure”和 “Sequence”:
    Structure 視圖將網(wǎng)絡(luò)請求按訪問的域名分類;
    Sequence 視圖將網(wǎng)絡(luò)請求按訪問的時間排序。

  2. 大家可以根據(jù)具體的需要在這兩種視圖之前來回切換。請求多了有些時候會看不過來,Charles提供了一個簡單的Filter功能,可以輸入關(guān)鍵字來快速篩選出URL 中帶指定關(guān)鍵字的網(wǎng)絡(luò)請求。

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

Https抓包操作步驟

Step 1:了解一下https的基本原理;
Step 2:在手機端安裝SSL證書;
Step 3:激活Charles的SSL代理;
Step 4:將指定的URL請求開啟SSL代理功能
Step 5:其他步驟與Http抓包相同

Step 1:了解一下https的基本原理;

HTTPS其實是有兩部分組成:HTTP+ SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務(wù)端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)。具體是如何進行加密,解密,驗證的,且看下圖解說


詳細說明,請參考:

http://blog.csdn.net/clh604/article/details/22179907

Step 2:在手機端安裝SSL證書

  1. 將證書文件從Charles導出

    .
  2. 然后通過adb或者其他工具將其復制到手機的SD卡中。

  3. 將證書文件導入Android手機
    在手機的設(shè)置界面找到【安全】---》【從內(nèi)部存儲設(shè)備或SD卡安裝】----》選擇SD卡上的證書---》彈出設(shè)置證書名對話框,輸入一個易記的名字,然后根據(jù)提示進行導入即可

    .
  1. 將證書文件導入iOS手機
    1.在iPhone手機上打開Safari瀏覽器,然后在地址欄中輸入www.charlesproxy.com/getssl
    2.稍后會彈出安裝描述文件提示,點擊右上角的【安裝】按鈕進行證書安裝即可
    .

Step 3:激活Charles的SSL代理

1.選擇【Proxy】--->【SSL Proxying Settings..】設(shè)置。
2.在彈出來的對話框中溝選【Enable SSL Proxying】


Step 4:將指定的URL請求開啟SSL代理功能

1.選擇抓取的https鏈接,然后右鍵選擇【Enable SSL Proxying】。
2.如果不激活SSL代理,所有https請求都是亂碼無法查看。


再次請求這個Https時,其請求內(nèi)容已經(jīng)一目了然了


通過映射修改返回報文

Charles中有兩種修改映射的方法Map LocalMap Remote,兩種方法各有不同的用處。

本地映射Map Local

其實這種方法很好理解,就是修改映射方式讓請求去讀取我們本地的文件并返回,具體操作如下:

右鍵需要修改的URL-->點擊Map Local


點Choose,選擇本地json文件,下次請求返回報文就會變成選擇的json文件

設(shè)置完映射之后每次該請求都會從設(shè)置的本地文件中讀取并返回數(shù)據(jù),我們可以隨心所欲的修改保存的報文達到調(diào)試接口的目的。
另外如果在開發(fā)初期,客戶端和服務(wù)器端已經(jīng)定義好了接口,但是服務(wù)器端還沒有部署好環(huán)境。我們也可以通過這個方法把定義好的報文保存到本地,通過修改映射的方式來進行初步開發(fā)。

取消Map Local

Tools-->Map Local


可以勾選Enable Map Local,全局控制是否映射;
也可點Add和Remove,添加和去除需要映射的URL;


遠程映射Map Remote

修改遠程映射是通過修改請求的HOST來實現(xiàn)的,可以將請求切換到不同的環(huán)境(例如當前的包是正式環(huán)境,你想看看測試環(huán)境的修改有沒有生效,可以不用再打一個測試環(huán)境的包,通過修改遠程映射快速實現(xiàn)。也省的改手機的HOST的了)。

選中要修改的請求-->右鍵-->Map Remote 在Map To 欄中填寫要映射到的地址的一些參數(shù)。


通過斷點修改請求與響應(yīng)的內(nèi)容

除了修改映射的方法,通過設(shè)置斷點也可以實現(xiàn)想要的效果。和我們在IDE上設(shè)置斷點一樣,在斷點處會進入調(diào)試模式,請求會暫時中斷,這是我們可以進行一些自定義的操作。

Step 1:設(shè)置Charless斷點。
Step 2:對指定的URL開啟斷點功能。
Step 3:編輯請求與響應(yīng)的內(nèi)容。

Step 1:設(shè)置Charless斷點

選擇【Breakpoint Settings…】--->勾選【Enable Breakpoints】來激活斷點功能


Step 2:對指定的URL開啟斷點功能

1.選擇一個URL鏈接-à右鍵開啟菜單---》選擇【Breakpoints】即可開啟此請求的斷點。
2.這樣Charles會遇到此請求時會彈出中斷對話框


Step 3:編輯請求與響應(yīng)的內(nèi)容

a.編輯請求內(nèi)容

在中斷對話框中,用戶可以點擊Edit Request來編輯請求的內(nèi)容,編輯完成后然后點擊【Execute】發(fā)出去這個請求給服務(wù)端


b.編輯服務(wù)器響應(yīng)的內(nèi)容

在【Edit Request】對話中點擊【Execute】發(fā)出請求后,服務(wù)端返回來數(shù)據(jù)后,用戶點擊【Edit Response】可對響應(yīng)內(nèi)容進行編輯完成后然后點擊【Execute】發(fā)出去這個數(shù)據(jù)給客戶端


總結(jié)

上面的方法可以用來修改一般的網(wǎng)絡(luò)請求,但如果數(shù)據(jù)做了加密處理看不到明文那用處就不大了。
需要注意一點:通過斷點的方式會存在一定的問題。數(shù)據(jù)被攔截后,客戶端的請求超時時長是不會停止計算的,如果沒在設(shè)置的超時時間內(nèi)返回數(shù)據(jù)本次請求也就按失敗處理了。

弱網(wǎng)模擬

1.菜單中選擇【Proxy】--->【Throttle Settings..】-à激活【Enable Throttling】。

2.在Throttle Configuration設(shè)置弱網(wǎng)的參數(shù)。

3.以下是各種網(wǎng)制式的速率參考文檔:

移動網(wǎng)絡(luò)制式與網(wǎng)速的參考文檔

弱網(wǎng)模擬設(shè)置

引用:

★★★移動應(yīng)用抓包調(diào)試利器Charles
Android開發(fā)利器 - Charles + Genymotion 調(diào)試網(wǎng)絡(luò)應(yīng)用程序
android emulator + charles抓包
Charles--修改返回報文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。