Charles是mac上一款比較好用的抓包工具,那麼咱們什麼狀況下須要用到抓包工具呢?好比我想查看一個接口請求的參數、返回值,還有移動設備上的http/https請求。前端
Charles是一個HTTP代理服務器,HTTP監視器,反轉代理服務器,當瀏覽器鏈接Charles的代理訪問互聯網時,Charles能夠監控瀏覽器發送和接收的全部數據。它容許一個開發者查看全部鏈接互聯網的HTTP通訊,這些包括request, response和HTTP headers (包含cookies與caching信息)。ios
主要功能數據庫
支持SSL代理。能夠截取分析SSL的請求。json
支持流量控制。能夠模擬慢速網絡以及等待時間(latency)較長的請求。後端
支持AJAX調試。能夠自動將json或xml數據格式化,方便查看。瀏覽器
支持AMF調試。能夠將Flash Remoting 或 Flex Remoting信息格式化,方便查看。服務器
支持重發網絡請求,方便後端調試。cookie
支持修改網絡請求參數。網絡
支持網絡請求的截獲並動態修改。併發
檢查HTML,CSS和RSS內容是否符合W3C標準。
官網:https://www.charlesproxy.com/latest-release/download.do
下載好後,解壓,將安裝包拖到應用程序裏,雙擊進行安裝,打開Charles後會看到提示還有30天使用期限
不要緊咱們可使用激活碼!
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
參考:https://blog.csdn.net/qq_25821067/article/details/79848589
選擇菜單---> help---> register..... ---->輸入帳號和key提交破解成功就能夠正常使用啦!
其實瀏覽器的請求通常用瀏覽器的開發者工具就能夠,固然charles也能夠作到,使用方法呢,也很簡單
將你連接的網絡,配置網頁代理,注意地址爲你本機的ip地址,能夠經過,ifconfig查看,
個人是這個樣子,而後打開網頁,charles就會彈出彈窗提示你,是否allow哈哈。固然allow,搞定,噹噹噹,能夠愉快的抓請求了
⚠️若是mac按照上述步驟沒法抓包,那麼咱們還須要設置一個地方 ------》macOS Proxy,charles設置成系統代理,抓取http請求,可是如今只能抓取到http的請求,抓取不到https的請求(https都是🔐和unknow)
手機和電腦鏈接同一網絡
獲取電腦ip、端口:在電腦上打開charles,設置代理端口並勾選啓用透明的http代理,安裝證書,查看電腦的ip地址-------> ifconfig
在手機上配置代理,手機的網絡裏,找到連接的wifi,添加代理,將手機的服務器和端口設置爲電腦ip和電腦端口
保存後,charles會彈出彈窗提示allow,贊成,又能夠愉快的抓包了
手機鏈接與Mac相同的無線網內,查看當前Mac IP地址
PS:也可直接option+wifi查看
設置端口號如:8888(也可更改,手機設置代理輸入一致便可)
安裝證書
設置-無線局域網,進入已鏈接WiFi----》配置代理----》手動(端口需與PC端設置的代理端口號一致,服務器爲PC端Mac IP)
設置-WLAN,進入已鏈接WiFi手動設置(端口需與PC端設置的代理端口號一致,服務器爲PC端Mac IP)
不一樣安卓手機彈出設置代理入口不一樣,若是進入網絡詳情頁無代理項,可在WLAN列表長按wifi名稱彈出代理設置以下:
當手機進行數據請求時,Charles 將彈出是否容許鏈接此代理(選擇容許 allow),以後即可進行http抓包
此時咱們在電腦上更改代碼能夠直接在手機上查看更改後的效果,不須要反覆上預發去查看
安卓:把須要抓取的接口配置一下,或者抓取所有接口
IOS:須要安裝Charles SSl證書
安卓手機就很方便了,直接就能夠不用配置什麼,可是要把要抓的接口配置一下,好比,我想抓這個接口,我就要配置成可抓取的,具體如圖
IOS手機(牛X的蘋果惹不起)
ios須要安裝證書(安卓不用):進入Charles-》Help-》SSL Proxying-》Install Charles Root Certificate ,會打開證書,安裝進去
手機---設置----關於手機-----證書信任設置----勾上剛纔安裝的
而後想抓那個接口,重複上邊操做的就能夠啦哈哈,也能夠配置我想抓取所有的接口,如圖
選中Proxy→SSL Proxying Setting
開啓SSL代理,並添加信任地址
add添加方法
設置爲列表方法
設置->Preferences->Viewers
清除是清除全部已經抓到的所有請求
暫停是中止抓取數據,保留以前抓取的數據
設置代理後,抓取到手機的各類請求,不少是不須要的,所以須要過濾下請求
選擇須要的請求右鍵選擇Focus
或者抓包列表底部filter輸入須要查看的請求關鍵字
tools→ Repeat/ Advanced Repeat (可作簡單的併發壓測)
repeat 單次重複請求
Advanced repeat 屢次重複請求
如某個接口共須要請求20次,單次併發請求10個,設置以下
測試或者開發中有些場景,可能須要手動造不少數據才能發現問題,那麼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,請求成功但數據不對
若是在測試過程當中,須要切換host不一樣的環境來測試,那麼替換host功能就能夠實現,不須要手動再從新打包更改域名,打開Charles→Tools→Map Remote→點擊ADD
以下如所示方式添加便可
tools->map local,映射本地json文件,可直接更改本地json文件來mock數據調試查看,功能相似斷言
⚠️map Local和斷言不能同時存在
Proxy-Throttling勾選Enable Throttling啓用網速模擬,可選擇內置的一些帶寬設置或自定義設置,保存後能夠點擊主界面的按鈕開啓/禁用慢網速功能
配置含義:
Bandwidth(帶寬)、Utilistation(利用百分比)、Round-trip(往返延遲)、MTU(字節)
以上都是Charles經常使用的基礎功能, 其實還有不少其餘更有趣功能,可自行摸索~Charles能夠說是測試之路上排查問題找問題很是實用的工具啦!測試必備哦~