前言
Charles是mac上一款比較好用的抓包工具,那么我們什么情況下需要用到抓包工具呢?比如我想查看一個接口請求的參數、返回值,還有移動設備上的http/https請求。
Charles是一個HTTP代理服務器,HTTP監視器,反轉代理服務器,當瀏覽器連接Charles的代理訪問互聯網時,Charles可以監控瀏覽器發送和接收的所有數據。它允許一個開發者查看所有連接互聯網的HTTP通信,這些包括request, response和HTTP headers (包含cookies與caching信息)。
主要功能
-
支持SSL代理。可以截取分析SSL的請求。
-
支持流量控制。可以模擬慢速網絡以及等待時間(latency)較長的請求。
-
支持AJAX調試。可以自動將json或xml數據格式化,方便查看。
-
支持AMF調試。可以將Flash Remoting 或 Flex Remoting信息格式化,方便查看。
-
支持重發網絡請求,方便后端調試。
-
支持修改網絡請求參數。
-
支持網絡請求的截獲並動態修改。
-
檢查HTML,CSS和RSS內容是否符合W3C標准。
一、安裝charles for mac
官網:https://www.charlesproxy.com/latest-release/download.do
下載好后,解壓,將安裝包拖到應用程序里,雙擊進行安裝,打開Charles后會看到提示還有30天使用期限
沒關系我們可以使用激活碼!
二、激活charles
Charles激活碼:
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
參考:https://blog.csdn.net/qq_25821067/article/details/79848589
激活碼使用步驟:
選擇菜單---> help---> register..... ---->輸入賬號和key提交破解成功就可以正常使用啦!
三、基本使用方法
1、抓瀏覽器網頁http請求 —— 配置網頁代理
其實瀏覽器的請求一般用瀏覽器的開發者工具就可以,當然charles也可以做到,使用方法呢,也很簡單
將你鏈接的網絡,配置網頁代理,注意地址為你本機的ip地址,可以通過,ifconfig查看,
我的是這個樣子,然后打開網頁,charles就會彈出彈窗提示你,是否allow哈哈。當然allow,搞定,當當當,可以愉快的抓請求了
⚠️如果mac按照上述步驟無法抓包,那么我們還需要設置一個地方 ------》macOS Proxy,charles設置成系統代理,抓取http請求,但是現在只能抓取到http的請求,抓取不到https的請求(https都是🔐和unknow)
2、抓移動端數據包http請求 ———— 配置移動端代理
-
手機和電腦連接同一網絡
-
獲取電腦ip、端口:在電腦上打開charles,設置代理端口並勾選啟用透明的http代理,安裝證書,查看電腦的ip地址-------> ifconfig
-
在手機上配置代理,手機的網絡里,找到鏈接的wifi,添加代理,將手機的服務器和端口設置為電腦ip和電腦端口
-
保存后,charles會彈出彈窗提示allow,同意,又可以愉快的抓包了
1)獲取Mac IP
手機連接與Mac相同的無線網內,查看當前Mac IP地址
PS:也可直接option+wifi查看
2)設置PC端代理端口號
設置端口號如:8888(也可更改,手機設置代理輸入一致即可)
安裝證書
3)設置手機代理
iOS手機代理設置
設置-無線局域網,進入已連接WiFi----》配置代理----》手動(端口需與PC端設置的代理端口號一致,服務器為PC端Mac IP)
安卓手機代理設置
設置-WLAN,進入已連接WiFi手動設置(端口需與PC端設置的代理端口號一致,服務器為PC端Mac IP)
不同安卓手機彈出設置代理入口不同,如果進入網絡詳情頁無代理項,可在WLAN列表長按wifi名稱彈出代理設置如下:
當手機進行數據請求時,Charles 將彈出是否允許連接此代理(選擇允許 allow),之后便可進行http抓包
此時我們在電腦上更改代碼可以直接在手機上查看更改后的效果,不需要反復上預發去查看
3、抓https
安卓:把需要抓取的接口配置一下,或者抓取全部接口
IOS:需要安裝Charles SSl證書
安卓手機就很方便了,直接就可以不用配置什么,但是要把要抓的接口配置一下,比如,我想抓這個接口,我就要配置成可抓取的,具體如圖
IOS手機(牛X的蘋果惹不起)
ios需要安裝證書(安卓不用):進入Charles-》Help-》SSL Proxying-》Install Charles Root Certificate ,會打開證書,安裝進去
手機---設置----關於手機-----證書信任設置----勾上剛才安裝的
然后想抓那個接口,重復上邊操作的就可以啦哈哈,也可以配置我想抓取全部的接口,如圖
1、PC端SSL設置
選中Proxy→SSL Proxying Setting
開啟SSL代理,並添加信任地址
add添加方法
四、簡單功能了解
視圖 Structure 和 Sequence
設置為列表方法
設置->Preferences->Viewers
清除和暫停
清除是清除所有已經抓到的全部請求
暫停是停止抓取數據,保留之前抓取的數據
過濾 Focus
設置代理后,抓取到手機的各種請求,很多是不需要的,因此需要過濾下請求
選擇需要的請求右鍵選擇Focus
或者抓包列表底部filter輸入需要查看的請求關鍵字
重復請求 Repeat/Advanced Repeat
tools→ Repeat/ Advanced Repeat (可做簡單的並發壓測)
repeat 單次重復請求
Advanced repeat 多次重復請求
如某個接口共需要請求20次,單次並發請求10個,設置如下
斷言 Breakpoints
測試或者開發中有些場景,可能需要手動造很多數據才能發現問題,那么mock替換JSON返回值這個功能就非常實用了,右鍵請求url,選擇Breakpoints,則默認添加該請求入接口斷言列表
Proxy→Breakpoints Settings 查看接口斷言列表
或者Proxy→Breakpoints Settings->add 添加斷言
添加需要斷言的請求url如下:
設置斷言成功后,重新發起請求,狀態變為可編輯狀態,進入請求參數or返回參數的修改
修改請求參數↓,設置成功后點擊底部“Execute”進入下一步修改返回參數
修改返回參數如下,如title“年糕媽媽商城”需要修改成改成“AAAA”,直接在JSON Text中編輯
修改后如下:
最后再次點擊“Execute”,如果是手機端發起的請求,mock修改后前端頁面就會展示修改后的數據啦!是不是很方便!如果想界面測列表幾十條數據的功能點,可以省去數據庫或者后台造數據的時間,直接txt造幾十條json數據就可以啦!(PS:修改參數手速要快哦~因為一般情況下,為了用戶體驗,大部分頁面都會兼容一定時間內接口無響應,顯示默認友好提示的空頁面,所以替換的json可以事先在json編輯器中或者txt中編輯好,之后直接復制粘貼就可以啦~)
另外使用斷點可以模擬接口在請求過程中的各種狀態,如請求失敗、請求成功但返回數據不對
請求失敗:設置好斷言后,在請求接口的時候會跳到這個頁面,此時前端發起的該接口請求已經被攔截,點擊abort會跳過這個請求,請求失敗
請求成功但數據不對:設置好斷言后,在請求接口的時候會跳到這個頁面,此時前端發起的該接口請求已經被攔截,點擊execute,此時可以修改返回json數據,修改好后再次點擊execute,請求成功但數據不對
重定向 Map Remote
如果在測試過程中,需要切換host不同的環境來測試,那么替換host功能就可以實現,不需要手動再重新打包更改域名,打開Charles→Tools→Map Remote→點擊ADD
如下如所示方式添加即可
Map Local
tools->map local,映射本地json文件,可直接更改本地json文件來mock數據調試查看,功能類似斷言
⚠️map Local和斷言不能同時存在
網速模擬 Throttling
Proxy-Throttling勾選Enable Throttling啟用網速模擬,可選擇內置的一些帶寬設置或自定義設置,保存后可以點擊主界面的按鈕開啟/禁用慢網速功能
配置含義:
Bandwidth(帶寬)、Utilistation(利用百分比)、Round-trip(往返延遲)、MTU(字節)
以上都是Charles常用的基礎功能, 其實還有很多其他更有趣功能,可自行摸索~Charles可以說是測試之路上排查問題找問題非常實用的工具啦!測試必備哦~
參考:macOS Charles 4.x版本的安裝及使用(含破解激活)