第十二、十三單元 Charles
一分衫、抓包概述
1. 抓包概念
抓包是將網(wǎng)絡(luò)傳輸發(fā)送與接收的數(shù)據(jù)包進(jìn)行截獲场刑、重發(fā)、編輯蚪战、轉(zhuǎn)存等操作牵现,也用來檢查網(wǎng)絡(luò)安全等。下面小編就介紹幾種抓包軟件邀桑。
2. 常見抓包工具
Charles瞎疼、fiddler、wireShark
軟件名稱簡介獨(dú) 立運(yùn)行支持移動設(shè)備是否收費(fèi)
Fiddler免費(fèi)的HTTP查看工具壁畸,系統(tǒng)代理贼急,工作在應(yīng)用層是是否
CharlesHTTP代理、HTTP監(jiān)控捏萍、HTTP反代理竿裂、查看HTTP通訊、查看工作信息工具是是收費(fèi)版/免費(fèi)版
Wireshark半免費(fèi)照弥,網(wǎng)絡(luò)抓包腻异、監(jiān)聽網(wǎng)卡,工作在網(wǎng)絡(luò)接口層是否否
HttpWatch集成到IE这揣、Chrome中的網(wǎng)頁數(shù)據(jù)分析工具否否基礎(chǔ)版/專業(yè)版
BurpSuiteHttp代理悔常。是用于攻擊web應(yīng)用程序的集成平臺,包含了許多工具:抓包给赞、掃漏机打、爆破等。黑客必備工具之一是是是
測試為什么要學(xué)習(xí)Charles抓包片迅?
能夠使用Charles來分析前后端問題
能夠使用Charles模擬弱網(wǎng)測試環(huán)境
能夠使用Charles的斷點(diǎn)構(gòu)建異常的測試場景
一残邀、Charles簡介
1. 什么是Charles
Charles中文名字青花瓷,是一款Http代理服務(wù)器和Http監(jiān)視器柑蛇,當(dāng)移動端在無線網(wǎng)連接中按要求設(shè)置好代理服務(wù)器芥挣,使所有對網(wǎng)絡(luò)的請求都經(jīng)過Charles客戶端來轉(zhuǎn)發(fā)時,Charles可以監(jiān)控這個客戶端各個程序所有連接互聯(lián)網(wǎng)的Http通信耻台。
特點(diǎn):跨平臺空免、半免費(fèi)
免費(fèi)版本:一是啟動等待十秒才能啟動,二是半小時重啟一次
2. Charles工作原理
2.1 原理
截獲真實(shí)客戶端的HTTPS請求盆耽,偽裝客戶端向真實(shí)服務(wù)端發(fā)送HTTPS請求
接受真實(shí)服務(wù)器響應(yīng)蹋砚,用Charles自己的證書偽裝服務(wù)端向真實(shí)客戶端發(fā)送數(shù)據(jù)內(nèi)容
2.2 原理圖
Charles原理圖.png
2.3 原理案例
租房子 房客 中介 房東
前置步驟:
(1)需要運(yùn)行Charles并配置代理
(2)在客戶端上面需要配置代理
步驟:
(1)有客戶端發(fā)送請求
(2)Charles接受再發(fā)送給服務(wù)端
(3)服務(wù)端返回請求結(jié)果給Charles
(4)由Charles轉(zhuǎn)發(fā)給客戶端
3. Charles主要功能
支持HTTP/HTTPS代理
支持流量控制
支持接口并發(fā)請求
支持重發(fā)網(wǎng)絡(luò)請求扼菠,方便后端調(diào)試
支持?jǐn)帱c(diǎn)調(diào)試
支持修改網(wǎng)絡(luò)請求參數(shù)
支持網(wǎng)絡(luò)請求的截獲并動態(tài)修改
支持模擬慢速網(wǎng)絡(luò)
4. Charles優(yōu)點(diǎn)(相對Fiddler)
Charles能夠支持Linux、macOS坝咐,fiddler不支持
Charles支持按域名和按接口查看報文循榆,簡潔明了
Charles支持反向代理,fiddler不支持
Charles網(wǎng)絡(luò)限速可選擇網(wǎng)絡(luò)類型墨坚,選擇3G秧饮、4G、5G等
Charles可以解析AMF協(xié)議框杜,一般用不到
二 浦楣、安裝與配置
1. Charles安裝
官網(wǎng)下載:官網(wǎng)
image.png
雙擊袖肥,下一步即可
image.png
2. Charles組件介紹
image.png
image.png
校驗是否符合w3c標(biāo)準(zhǔn)咪辱。
image.png
請求數(shù)據(jù)欄.png
3. Charles設(shè)置
3.1 代理設(shè)置
image.png
image.png
3.2 Charles訪問控制
image.png
image.png
4. 客戶端設(shè)置
4.1 Windows代理設(shè)置
image.png
4.2 Android手機(jī)代理設(shè)置(見3.1)
三、實(shí)戰(zhàn)
3.1 抓取移動設(shè)備發(fā)送的Http請求
先將移動設(shè)備連接到Charles客戶端椎组。首先在電腦中輸入cmd打開命令行窗口油狂,輸入ipconfig查看本機(jī)連接無線網(wǎng)絡(luò)的IP地址,這個地址作為移動設(shè)備連接Charles客戶端的代理地址
image.png
打開Charles客戶端寸癌,點(diǎn)擊Proxy->Proxy Settings菜單专筷,可以設(shè)置移動設(shè)備連接到Charles的端口(8888),這樣移動設(shè)備代理配置需要的ip地址和端口號都有了蒸苇。
image.png
打開手機(jī)wifi磷蛹,設(shè)置所連接的wifi的代理網(wǎng)絡(luò);wifi代理設(shè)置為手動溪烤,代理的服務(wù)器ip填寫上一步驟中查看到的電腦ip味咳,端口填寫上一步驟提到的charles的服務(wù)端口:
image.png
image.png
注意:
①移動設(shè)備配置之后,第一次通過手機(jī)訪問手機(jī)中的發(fā)送請求時檬嘀,Charles會彈出提示框槽驶,提示有設(shè)備嘗試連接到Charles,是否允許鸳兽,如果不允許的話掂铐,手機(jī)發(fā)送請求失敗,點(diǎn)擊Allow允許揍异,這樣這個設(shè)備的IP地址就會添加到允許列表中全陨,如果錯誤點(diǎn)擊了Deny可以重啟Charles會再此提示,或者通過Proxy->Access Control Settings手動添加地址衷掷,如果不想每個設(shè)備連接Charles都要點(diǎn)擊允許的話烤镐,可以添加0.0.0.0/0允許所有設(shè)備連接到Charles。
②手機(jī)與電腦必須連接同一個WiFi
③不要勾選Proxy → SSL Proxying setting 中的Enable SSL Proxying
④Charles是通過將自己設(shè)置成代理服務(wù)器來完成抓包的棍鳖,勾選系統(tǒng)代理后炮叶,本地系統(tǒng)(如果通過瀏覽器發(fā)送請求)發(fā)送出去的請求都能被截取下來碗旅。因此,如果想只抓取手機(jī)APP發(fā)送的請求的話镜悉,可以不勾選WindowsProxy選項祟辟,這樣在測試時就不會被本機(jī)Http請求所干擾。
image.png
⑤如果想要抓取瀏覽器發(fā)送的請求包侣肄,勾選WindowsProxy選項之后還是抓取失敗旧困,可能是瀏覽器沒有設(shè)置成使用系統(tǒng)的代理服務(wù)器,只要設(shè)置成使用系統(tǒng)的代理服務(wù)器稼锅,或者將瀏覽器的代理服務(wù)器設(shè)置成127.0.0.1:8888也可以成功吼具。
啟動手機(jī),打開軟件矩距,就可以進(jìn)行聯(lián)網(wǎng)抓包測試
Charles提供兩種查看封包的頁簽拗盒,一個是Structure(結(jié)構(gòu)),另一個是Sequence(序列)锥债,Structure用來將訪問請求按訪問的域名分類陡蝇,Sequence用來將請求按訪問的時間排序。任何程序都可以在Charles中的Structure窗口中看到訪問的域名哮肚。
image.png
四登夫、證書安裝
1. 為什么要安裝證書
我們以前抓包都是抓取的是HTTP的請求,如果抓取HTTPS就會亂碼允趟,并不是沒有抓取到恼策,見下圖:
image.png
怎么解決呢?安裝證書
2. Windows證書安裝
image.png
image.png
image.png
image.png
image.png
image.png
image.png
3. Charles證書導(dǎo)出
1潮剪、打開charles
2涣楷、選擇help-ssl proxying
3、save
4鲁纠、選擇存放路徑以及證書名
4. charls證書導(dǎo)入
IE瀏覽器:設(shè)置 → Internet選項 → 內(nèi)容 → 證書 → 導(dǎo)入 → 下一步 → 選擇證書 → 選擇所有證書都放入下列存儲(P) → 瀏覽总棵,選擇“受信任的根證書頒發(fā)機(jī)構(gòu)” → 下一步 → 完成。
chrome瀏覽器:設(shè)置 → 管理證書(安全) → 導(dǎo)入 → 下一步 → 選擇證書 → 選擇所有證書都放入下列存儲(P) → 瀏覽改含,選擇“受信任的根證書頒發(fā)機(jī)構(gòu)” → 下一步 → 完成情龄。
5. Chales HTTPS代理配置
證書安裝之后發(fā)現(xiàn)還是亂碼和unknown,需要配置代理
image.png
image.png
五捍壤、Charles常用功能
1. 過濾不必要的網(wǎng)絡(luò)包
在抓取手機(jī)發(fā)送的請求時骤视,有許多請求包是對圖片等不需要關(guān)注的資源的請求,我們只想對指定目錄服務(wù)器上發(fā)送的請求進(jìn)行抓取鹃觉,這時候就可以通過過濾網(wǎng)絡(luò)包的方式實(shí)現(xiàn)专酗。有兩種實(shí)現(xiàn)方式:
1)選擇Proxy->Recording Settings菜單,然后在include欄添加需要抓取包的指定服務(wù)器請求協(xié)議盗扇、地址祷肯、端口號抵屿,也可以在exclude欄添加不抓取包的地址之拨。
image.png
image.png
include:能抓取到的
exclude:不能抓取到的
2)在主界面的中部的 Filter 欄中填入需要過濾出來的關(guān)鍵字键耕。例如我們的服務(wù)器的地址是:http://blog.csdn.net, 那么只需要在 Filter 欄中填入 csdn 即可枫振。
注意:通常情況下,我們使用方法一做一些臨時性的封包過濾蒋纬,使用方法二做一些經(jīng)常性的封包過濾猎荠。
2. 斷點(diǎn)替換/修改數(shù)據(jù)
2.1. 斷點(diǎn)的作用:用來構(gòu)建異常的測試場景
2.2. 步驟:
方式一:
右擊接口鏈接,選擇“BreakPoints”
image.png
在瀏覽器刷新對應(yīng)接口的頁面
此時會自動跳轉(zhuǎn)到Charles并顯示出接口請求信息
點(diǎn)擊“Edit Request”蜀备,修改請求信息关摇,點(diǎn)擊“Execute”
image.png
點(diǎn)擊“Edit Response”
在數(shù)據(jù)格式蘭中選擇合適的顯示格式,比如“json”
修改對應(yīng)的數(shù)據(jù)碾阁,點(diǎn)擊“Execute”
回到瀏覽器查看數(shù)據(jù)應(yīng)該為修改之后的response的信息
方式二:
Proxy → Breakpoint settings...中手動新建/啟用某個斷點(diǎn);
要求勾選enable breakpoints之后當(dāng)下次再有該請求時,會自動進(jìn)入斷點(diǎn)模式
image.png
image.png
新建斷點(diǎn)
image.png
3. 模擬慢網(wǎng)速
為什么要做模擬慢網(wǎng)速
不是所有的地方網(wǎng)絡(luò)都好输虱,所以要模擬慢網(wǎng)速。主要用在App端瓷蛙,因為PC一般都是寬帶聯(lián)網(wǎng)悼瓮,而App哪里都有可能去戈毒。比如艰猬,測試上廁所
image.png
4. 壓測服務(wù)器
依次點(diǎn)擊tools—Repeat Advanced
選擇好并發(fā)線程數(shù)和打壓次數(shù),點(diǎn)擊ok就能進(jìn)行對產(chǎn)品的GET和POST請求進(jìn)行測試服務(wù)器并發(fā)處理的性能埋市,當(dāng)然這里只是簡單的進(jìn)行壓測冠桃,并且只能對Charles抓到的http協(xié)議的請求進(jìn)行重復(fù)并發(fā),缺點(diǎn)就是如TCP類的抓不到的就不能了道宅,算是個小小的缺陷吧食听。
image.png
5 . 模擬404
1、tools——>blacklist
image.png
2污茵、 允許啟用黑名單功能樱报,選擇接口返回錯誤的形式(404 或者403),添加接口地址并保存
image.png
【blocking connection】 選項可以選擇“drop connection”或者 “403 respose”.前者接口會直接返回404錯誤泞当,后者接口返回403錯誤
3迹蛤、 選中需要返回404/403的接口,點(diǎn)擊【ok】