Charles抓包工具使用詳解
Charles簡介
Mac下常用網路抓包工具,主要功能:
- 1、 抓取http和https請求
- 2、 修改伺服器返回內容
- 3、 修改網路請求
- 4、 模擬弱網路
- 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、 filter從眾多session中直接過濾出需要的session
- 2、 recording setting,直接遮蔽不需要的session只展示對應的請求
- 3、 focused hosts直接把需要的hosts直接歸類[基於樹狀檢視]
備註:部分圖片連結來自網路,如侵權,請聯絡,會及時刪除