1. 程式人生 > >Charles抓包工具使用詳解

Charles抓包工具使用詳解

Charles簡介

Mac下常用網路抓包工具,主要功能:

  1. 1、 抓取http和https請求
  2. 2、 修改伺服器返回內容
  3. 3、 修改網路請求
  4. 4、 模擬弱網路
  5. 5、對伺服器壓測

一、安裝Charles及基本設定

1、安裝charlesCA證書
1.1 選擇 help | Install Charles CA SSL Certificate

在這裡插入圖片描述
圖1.1.1.1
後會彈出證書資訊,選擇安裝證書,下一步,將證書儲存改為:受信任的根證書頒發機構,下一步
在這裡插入圖片描述
圖1.1.1.2
在這裡插入圖片描述
圖1.1.1.3

1.2證書安裝原理

使用ssl proxy會導致部分客服端請求https返回證書無效等
簡述原理
在這裡插入圖片描述


圖1.1.2.1

具體底層原理可參考
http://www.oschina.net/translate/android-security-implementation-of-self-signed-ssl
選單欄 Proxy->SSL Proxying Settings
勾選Enable SSL Proxying並新增https域名和埠號,支援正則。
在這裡插入圖片描述
圖1.1.2.2

2 charles的基本設定

2.1 charles介面簡介

在這裡插入圖片描述
圖1.2.2.1
在這裡插入圖片描述
圖1.2.2.2
在這裡插入圖片描述
圖1.2.2.3
右鍵各選項作用
在這裡插入圖片描述
圖1.2.2.4

2.2 基本設定
2.2.1【抓包http】

選擇Proxy | Proxy Settings,彈出proxy設定選項卡,勾選Enabling transparent HTTP proxying
在這裡插入圖片描述
圖 1.2.2.5

2.2.2【抓包https】

選擇ssl,勾選Enable SSL Proxying,在Location部份選擇add,按如下圖新增,抓取任意站點(支援正則)、443埠的資料【443埠https】
在這裡插入圖片描述
圖 1.2.2.6

2.2.3【charles設定為系統代理】

在這裡插入圖片描述
圖 1.2.2.7
在這裡插入圖片描述
圖 1.2.2.8
原理:charles是將自己設定為代理伺服器抓包,windows和mac通過上述按鈕設定代理,Mac版設定後第一次需要授權,只需輸入賬號密碼授權即可

3、抓取移動裝置上網路資料

3.1 charles設定

先把Charles上代理功能開啟,見[圖2.2.5],圖中埠設定為任意A,
點選“proxy”->“access control settings”, 圖3.1.1標紅部分,填入0.0.0.0/0為允許任意裝置接入,不新增則會彈出彈窗,手動新增接入裝置見圖3.1.2
在這裡插入圖片描述
圖1.3.1.1
在這裡插入圖片描述
圖1.3.1.2

3.2 移動裝置上設定

無線網開啟後新增IP,及上述設定的埠號A,代理連線後彈出提示彈窗見圖3.1.2,點選allow接入,此時可正常抓取http網路包,抓取https需在瀏覽器中開啟圖3.2.2中4連結下載安裝charles證書。http://charlesproxy.com/getssl
在這裡插入圖片描述
圖1.3.2.1
在這裡插入圖片描述
圖1.3.2.2

二、charles修改伺服器返回內容

1、breakpoint斷點功能

1.1 簡述

該功能對臨時修改request或response非常有效,但修改請求時不會停止計時,可能會導致請求超時等

1.2 步驟

選中加斷點的session後,點選breakpoint,可以通過“proxy”->“breakpoint settings”對斷點進行詳細的編譯。
備註:修改request的請求後續有詳細描述此處不贅述見第三節
在這裡插入圖片描述
圖 2.1.1.1
設定斷點後,重新發送該請求則可對斷點處資料進行修改
在這裡插入圖片描述
圖 2.1.1.2

2、map功能

簡述
Map 有map remote和map local兩種,前者是將對應檔案重定向到對應的遠端伺服器上,後者則是直接把對應檔案重定向到本地,兩者除了重定向檔案位置不同,其它功能一致,都可對js,css,html介面等重定向。重定向設定時,在 Charles 的選單中,選擇 “Tools”->”Map Remote” 或 “Map Local” 即可進入到相應功能的設定頁面。

2.1 Map local

需要重定向的session,右鍵“map local”,見圖2.2.1.1,直接重定向到本地檔案
在這裡插入圖片描述
圖2.2.1.1

2.2 Map Remote

右鍵Map Remote,見圖2.2.1.2,直接重定向到遠端伺服器。
在這裡插入圖片描述
圖2.2.1.2
拓展:
1、 mock資料時,可以利用萬用字元把各種場景匹配進入需要的hosts中見圖2.2.1.3
表示x.elong.com/hotelwxqb/*所有檔案匹配到m.elong.com/hotelfx/對應檔案下,notes筆記中可以清晰看到見圖2.2.2.4
2、若設定中各配置項為空,則表示匹配所有請求。
在這裡插入圖片描述
圖2.2.2.3
在這裡插入圖片描述
圖2.2.2.4
Map to 項中如果匹配項為空,則只替換Map from中的匹配項不為空則
Map to中的值替換對應的 Map from中的值,再加上Map from中的沒匹配的項進行請求
比如:圖2.2.2.3中把Map to 的path值去掉儲存後
訪問的請求為http://m.elong.com/hotelwxqb
ap隱射可以使用的模式匹配符有三種:

  • λ *: 可以匹配0個或者多個字元
  • λ ?: 可以匹配一個字元
  • λ […]: 範圍選擇符,可以匹配範圍中的任意一個字元
    假設Map From配置中的各個項為空,表示匹配所有請求,然後Map To項的配置不同,代表不同含義,下表列出一個簡單例子
    在這裡插入圖片描述

3、rewrite功能

3.1 簡介
在 Charles 的選單中,選擇 “Tools”->”Rewrite”

在這裡插入圖片描述
圖2.3.1.1
點選add為詳細的新增規則,可對請求的各內容進行詳細的匹配
在這裡插入圖片描述
圖2.3.1.2

3.2使用場景

Host:通過charles代理切換訪問的域名或者ip
在這裡插入圖片描述

4、三種功能對比
三者都可達到修改伺服器返回引數的目的,但各自側重點又有不同

Map 功能適合長期地將某一些請求重定向到另一個網路地址或本地檔案。
Rewrite 功能適合對網路請求進行一些正則替換。
Breakpoints 功能適合做一些臨時性的修改。

三、charles修改網路請求

描述
:為了除錯伺服器的介面,我們需要反覆嘗試不同入參的網路請求,charles可以方便提供網路請求的修改和重發功能。
操作方式
:選中想要編輯的請求,右鍵選擇“Edit”,見圖3.1.1則可以對請求的任意資訊如host,埠請求方式等編輯見圖3.1.2,然後點選“execute”放行即可!
在這裡插入圖片描述
圖 3.1.1
在這裡插入圖片描述
圖 3.1.2

四、charles模擬弱網

簡述
在做移動開發的時候,我們常常需要模擬慢速網路或者高延遲的網路,以測試在行動網路下,應用的表現是否正常。Charles 對此需求提供了很好的支援。
在 Charles 的選單上,選擇 “Proxy”->”Throttle Setting” 項,在之後彈出的對話方塊中,我們可以勾選上 “Enable Throttling”,並且可以設定 Throttle Preset 的型別。如下圖為頁面介紹
在這裡插入圖片描述
圖 4.1.1.1
此處不做過多介紹,可參考文件
https://testerhome.com/topics/7384

五、對伺服器做壓力測試

描述:可以用charles的repeat功能測試伺服器的併發處理能力

1、repeat 功能

選中一條session後,直接右鍵,repeat則可以請求單條資料
在這裡插入圖片描述
圖5.1.1

2、Repeat advanced

選中一條session後,右鍵用repeat advanced功能,彈出介面見圖5.2.1

可簡單的模擬對伺服器進行多次請求資料,做簡單的壓測
在這裡插入圖片描述
圖5.2.1
Ps:對於承受力較弱的網站請求次數較多的話會直接壓垮
Repeat:1000 為每個請求延遲多少ms請求

六、過濾網路請求

1、Filter加過濾

Filter中直接過濾需要的關鍵詞,如圖6.1.1
在這裡插入圖片描述
圖6.1.1

2、Recording setting介面

選單欄中,“proxy”—>“recording setting”—>“include”,直接新增協議,主機地址,埠號等
在這裡插入圖片描述
圖6.2.1

3、focussed hosts介面

選單欄中,點選“view”->“focused hosts”

4、三種方式對比

  1. 1、 filter從眾多session中直接過濾出需要的session
  2. 2、 recording setting,直接遮蔽不需要的session只展示對應的請求
  3. 3、 focused hosts直接把需要的hosts直接歸類[基於樹狀檢視]

備註:部分圖片連結來自網路,如侵權,請聯絡,會及時刪除