一、抓包概述
1. 抓包概念
抓包是將網絡傳輸發送與接收的數據包進行截獲、重發、編輯、轉存等操作,也用來檢查網絡安全等。下面小編就介紹幾種抓包軟件。
2. 常見抓包工具
測試爲什麼要學習Charles抓包?
- 能夠使用Charles來分析前後端問題
- 能夠使用Charles模擬弱網測試環境
- 能夠使用Charles的斷點構建異常的測試場景
一、Charles簡介
1. 什麼是Charles
- Charles中文名字青花瓷,是一款Http代理服務器和Http監視器,當移動端在無線網連接中按要求設置好代理服務器,使所有對網絡的請求都經過Charles客戶端來轉發時,Charles可以監控這個客戶端各個程序所有連接互聯網的Http通信。
- 特點:跨平臺、半免費
- 免費版本:一是啓動等待十秒才能啓動,二是半小時重啓一次
2. Charles工作原理
前置步驟:
(1)需要運行Charles並配置代理
(2)在客戶端上面需要配置代理
步驟:
(1)有客戶端發送請求
(2)Charles接受再發送給服務端
(3)服務端返回請求結果給Charles
(4)由Charles轉發給客戶端
3. Charles主要功能
- 支持HTTP/HTTPS代理
- 支持流量控制
- 支持接口併發請求
- 支持重發網絡請求
- 支持斷點調試
4. Charles優點(相對Fiddler)
- Charles能夠支持Linux、macOS,fiddler不支持
- Charles支持按域名和按接口查看報文,簡潔明瞭
- Charles支持反向代理,fiddler不支持
- Charles網絡限速可選擇網絡類型,選擇3G、4G、5G等
- Charles可以解析AMF協議,一般用不到
二 、安裝與配置
1. Charles安裝
官網下載:官網
雙擊,下一步即可
2. Charles組件介紹
校驗是否否和w3c標準。
3. Charles設置
3.1 代理設置
3.2 Charles訪問控制
4. 客戶端設置
4.1 Windows代理設置
http://ihrm-test.itheima.net/
三、實戰
8.接口抓包測試工具Charles
1.1.11.抓取移動設備發送的Http請求.
1、先將移動設備連接到Charles客戶端。首先在電腦中輸入cmd打開命令行窗口,輸入ipconfig查看本機連接無線網絡的IP地址,這個地址作爲移動設備連接Charles客戶端的代理地址,
2、打開Charles客戶端,點擊Proxy->Proxy Settings菜單,可以設置移動設備連接到Charles的端口(8888),這樣移動設備代理配置需要的ip地址和端口號都有了。
3、打開手機wifi,設置所連接的wifi的代理網絡;wifi代理設置爲手動,代理的服務器ip填寫上一步驟中查看到的電腦ip,端口填寫上一步驟提到的charles的服務端口:
注意:移動設備配置之後,第一次通過手機訪問手機中的發送請求時,Charles會彈出提示框,提示有設備嘗試連接到Charles,是否允許,如果不允許的話,手機發送請求失敗,點擊Allow允許,這樣這個設備的IP地址就會添加到允許列表中,如果錯誤點擊了Deny可以重啓Charles會再此提示,或者通過Proxy->Access Control Settings手動添加地址,如果不想每個設備連接Charles都要點擊允許的話,可以添加0.0.0.0/0允許所有設備連接到Charles。
4、Charles是通過將自己設置成代理服務器來完成抓包的,勾選系統代理後,本地系統(如果通過瀏覽器發送請求)發送出去的請求都能被截取下來。因此,如果想只抓取手機APP發送的請求的話,可以不勾選WindowsProxy選項,這樣在測試時就不會被本機Http請求所幹擾。
5、如果想要抓取瀏覽器發送的請求包,勾選WindowsProxy選項之後還是抓取失敗,可能是瀏覽器沒有設置成使用系統的代理服務器,只要設置成使用系統的代理服務器,或者將瀏覽器的代理服務器設置成127.0.0.1:8888也可以成功。
1.1.12.啓動手機,打開軟件,就可以進行聯網抓包測試
Charles提供兩種查看封包的頁籤,一個是Structure(結構),另一個是Sequence(序列),Structure用來將訪問請求按訪問的域名分類,Sequence用來將請求按訪問的時間排序。任何程序都可以在Charles中的Structure窗口中看到訪問的域名。
1.1.13.過濾不必要的網絡包
在抓取手機發送的請求時,有許多請求包是對圖片等不需要關注的資源的請求,我們只想對指定目錄服務器上發送的請求進行抓取,這時候就可以通過過濾網絡包的方式實現。有兩種實現方式:
1)選擇Proxy->Recording Settings菜單,然後在include欄添加需要抓取包的指定服務器請求協議、地址、端口號,也可以在exclude欄添加不抓取包的地址。
在主界面的中部的 Filter 欄中填入需要過濾出來的關鍵字。例如我們的服務器的地址是:http://blog.csdn.net, 那麼只需要在 Filter 欄中填入 csdn 即可。
1.1.14.Charles抓包詳解
Filter : 過濾,可以輸入關鍵字來快速篩選出 URL 中帶指定關鍵字的網絡請求
Overview : 查看這次請求的詳細內容,例如耗時詳細列車了請求開始時間、結束時間,響應開始時間、結束時間,總耗時、DNS耗時、網絡延時等。
對於Size也詳細列出了請求頭大小、響應頭大小、壓縮比例等內容。
URL:進行網絡請求的鏈接;
Status:當前狀態,complete表示請求完成;
Responce Code:返回碼。不同的接口,不同的請求結果,返回碼都不同;
Protocol:使用的協議;
Method:請求方式,如GET請求,POST請求等;
Kept Alive:判斷當前是否正在鏈接(活躍);
Content-Type:發送的內容類型,如這裏用的是XML文本,以UTF8的方式發送;
Client Address:客戶端的IP地址;
Remote Address:遠程服務器的IP;
Timing:
Request Start Time:請求開始的時間;
Request End Time:請求結束的時間;
Response Start Time:返回開始的時間;
Response End Time : 返回結束的時間;
Duration : 總時間;
Size:
Request Header :請求的頭部大小;
Response Header:返回的頭部大小;
Request : 請求發送的大小;
Response:返回數據的大小;
Total:所有數據大小;
Request Compression : 請求壓縮;
Response Compression : 返回壓縮;
Request : 查看請求內容(底下的Headers,Query String,Cookies,Raw。)
Headers:發送請求的頭部信息;
Query String : 發送參數列表;
Cookies: 瀏覽器緩存;
Raw:發送的原生數據,包括了頭部和參數;
Reponse : 查看響應內容
Headers:是返回的頭部信息;
Text:返回信息(除去頭部)後的文本;
Hex:返回信息的16進製表示;
XML:我返回的數據是XML。如果你返回的是JSON,這裏就會顯示JSON;
XML Text:如果你返回JSON,這裏會顯示JSON Text;
Raw:返回的所有原生數據,包括頭部;
Summary: 查看發送數據的一些簡要信息(主機,狀態碼,數據的類型,header和body大下,加載時間,總時間)
Chart: Summary中簡要信息以圖表形式展示
Notes: 其他信息
1.1.15.Charles常用的功能總結
charles抓包詳解