第十二、十三單元 Charles
一谚殊、抓包概述
1. 抓包概念
抓包是將網(wǎng)絡(luò)傳輸發(fā)送與接收的數(shù)據(jù)包進行截獲丧鸯、重發(fā)、編輯嫩絮、轉(zhuǎn)存等操作丛肢,也用來檢查網(wǎng)絡(luò)安全等。下面小編就介紹幾種抓包軟件剿干。
2. 常見抓包工具
Charles蜂怎、fiddler、wireShark
軟件名稱簡介獨 立運行支持移動設(shè)備是否收費
Fiddler免費的HTTP查看工具置尔,系統(tǒng)代理杠步,工作在應(yīng)用層是是否
CharlesHTTP代理、HTTP監(jiān)控榜轿、HTTP反代理篮愉、查看HTTP通訊、查看工作信息工具是是收費版/免費版
Wireshark半免費差导,網(wǎng)絡(luò)抓包试躏、監(jiān)聽網(wǎng)卡,工作在網(wǎng)絡(luò)接口層是否否
HttpWatch集成到IE设褐、Chrome中的網(wǎng)頁數(shù)據(jù)分析工具否否基礎(chǔ)版/專業(yè)版
BurpSuiteHttp代理颠蕴。是用于攻擊web應(yīng)用程序的集成平臺,包含了許多工具:抓包助析、掃漏犀被、爆破等。黑客必備工具之一是是是
測試為什么要學習Charles抓包外冀?
能夠使用Charles來分析前后端問題
能夠使用Charles模擬弱網(wǎng)測試環(huán)境
能夠使用Charles的斷點構(gòu)建異常的測試場景
一寡键、Charles簡介
1. 什么是Charles
Charles中文名字青花瓷,是一款Http代理服務(wù)器和Http監(jiān)視器雪隧,當移動端在無線網(wǎng)連接中按要求設(shè)置好代理服務(wù)器西轩,使所有對網(wǎng)絡(luò)的請求都經(jīng)過Charles客戶端來轉(zhuǎn)發(fā)時员舵,Charles可以監(jiān)控這個客戶端各個程序所有連接互聯(lián)網(wǎng)的Http通信。
特點:跨平臺藕畔、半免費
免費版本:一是啟動等待十秒才能啟動马僻,二是半小時重啟一次
2. Charles工作原理
2.1 原理
截獲真實客戶端的HTTPS請求,偽裝客戶端向真實服務(wù)端發(fā)送HTTPS請求
接受真實服務(wù)器響應(yīng)注服,用Charles自己的證書偽裝服務(wù)端向真實客戶端發(fā)送數(shù)據(jù)內(nèi)容
2.2 原理圖
Charles原理圖.png
2.3 原理案例
租房子 房客 中介 房東
前置步驟:
(1)需要運行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)試
支持斷點調(diào)試
支持修改網(wǎng)絡(luò)請求參數(shù)
支持網(wǎng)絡(luò)請求的截獲并動態(tài)修改
支持模擬慢速網(wǎng)絡(luò)
4. Charles優(yōu)點(相對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標準菜拓。
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手機代理設(shè)置(見3.1)
三、實戰(zhàn)
3.1 抓取移動設(shè)備發(fā)送的Http請求
先將移動設(shè)備連接到Charles客戶端笛厦。首先在電腦中輸入cmd打開命令行窗口纳鼎,輸入ipconfig查看本機連接無線網(wǎng)絡(luò)的IP地址,這個地址作為移動設(shè)備連接Charles客戶端的代理地址
image.png
打開Charles客戶端裳凸,點擊Proxy->Proxy Settings菜單贱鄙,可以設(shè)置移動設(shè)備連接到Charles的端口(8888),這樣移動設(shè)備代理配置需要的ip地址和端口號都有了姨谷。
image.png
打開手機wifi逗宁,設(shè)置所連接的wifi的代理網(wǎng)絡(luò);wifi代理設(shè)置為手動梦湘,代理的服務(wù)器ip填寫上一步驟中查看到的電腦ip瞎颗,端口填寫上一步驟提到的charles的服務(wù)端口:
image.png
image.png
注意:
①移動設(shè)備配置之后,第一次通過手機訪問手機中的發(fā)送請求時捌议,Charles會彈出提示框哼拔,提示有設(shè)備嘗試連接到Charles,是否允許瓣颅,如果不允許的話倦逐,手機發(fā)送請求失敗,點擊Allow允許宫补,這樣這個設(shè)備的IP地址就會添加到允許列表中檬姥,如果錯誤點擊了Deny可以重啟Charles會再此提示曾我,或者通過Proxy->Access Control Settings手動添加地址,如果不想每個設(shè)備連接Charles都要點擊允許的話穿铆,可以添加0.0.0.0/0允許所有設(shè)備連接到Charles您单。
②手機與電腦必須連接同一個WiFi
③不要勾選Proxy → SSL Proxying setting 中的Enable SSL Proxying
④Charles是通過將自己設(shè)置成代理服務(wù)器來完成抓包的,勾選系統(tǒng)代理后荞雏,本地系統(tǒng)(如果通過瀏覽器發(fā)送請求)發(fā)送出去的請求都能被截取下來虐秦。因此,如果想只抓取手機APP發(fā)送的請求的話凤优,可以不勾選WindowsProxy選項悦陋,這樣在測試時就不會被本機Http請求所干擾。
image.png
⑤如果想要抓取瀏覽器發(fā)送的請求包筑辨,勾選WindowsProxy選項之后還是抓取失敗俺驶,可能是瀏覽器沒有設(shè)置成使用系統(tǒng)的代理服務(wù)器,只要設(shè)置成使用系統(tǒng)的代理服務(wù)器棍辕,或者將瀏覽器的代理服務(wù)器設(shè)置成127.0.0.1:8888也可以成功暮现。
啟動手機,打開軟件楚昭,就可以進行聯(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證書導出
1又谋、打開charles
2钝尸、選擇help-ssl proxying
3、save
4搂根、選擇存放路徑以及證書名
4. charls證書導入
IE瀏覽器:設(shè)置 → Internet選項 → 內(nèi)容 → 證書 → 導入 → 下一步 → 選擇證書 → 選擇所有證書都放入下列存儲(P) → 瀏覽珍促,選擇“受信任的根證書頒發(fā)機構(gòu)” → 下一步 → 完成。
chrome瀏覽器:設(shè)置 → 管理證書(安全) → 導入 → 下一步 → 選擇證書 → 選擇所有證書都放入下列存儲(P) → 瀏覽剩愧,選擇“受信任的根證書頒發(fā)機構(gòu)” → 下一步 → 完成猪叙。
5. Chales HTTPS代理配置
證書安裝之后發(fā)現(xiàn)還是亂碼和unknown,需要配置代理
image.png
image.png
五、Charles常用功能
1. 過濾不必要的網(wǎng)絡(luò)包
在抓取手機發(fā)送的請求時穴翩,有許多請求包是對圖片等不需要關(guān)注的資源的請求犬第,我們只想對指定目錄服務(wù)器上發(fā)送的請求進行抓取,這時候就可以通過過濾網(wǎng)絡(luò)包的方式實現(xiàn)芒帕。有兩種實現(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. 斷點替換/修改數(shù)據(jù)
2.1. 斷點的作用:用來構(gòu)建異常的測試場景
2.2. 步驟:
方式一:
右擊接口鏈接,選擇“BreakPoints”
image.png
在瀏覽器刷新對應(yīng)接口的頁面
此時會自動跳轉(zhuǎn)到Charles并顯示出接口請求信息
點擊“Edit Request”嗽元,修改請求信息敛纲,點擊“Execute”
image.png
點擊“Edit Response”
在數(shù)據(jù)格式蘭中選擇合適的顯示格式,比如“json”
修改對應(yīng)的數(shù)據(jù)剂癌,點擊“Execute”
回到瀏覽器查看數(shù)據(jù)應(yīng)該為修改之后的response的信息
方式二:
Proxy → Breakpoint settings...中手動新建/啟用某個斷點;
要求勾選enable breakpoints之后當下次再有該請求時,會自動進入斷點模式
image.png
image.png
新建斷點
image.png
3. 模擬慢網(wǎng)速
為什么要做模擬慢網(wǎng)速
不是所有的地方網(wǎng)絡(luò)都好淤翔,所以要模擬慢網(wǎng)速。主要用在App端珍手,因為PC一般都是寬帶聯(lián)網(wǎng),而App哪里都有可能去辞做。比如琳要,測試上廁所
image.png
4. 壓測服務(wù)器
依次點擊tools—Repeat Advanced
選擇好并發(fā)線程數(shù)和打壓次數(shù),點擊ok就能進行對產(chǎn)品的GET和POST請求進行測試服務(wù)器并發(fā)處理的性能秤茅,當然這里只是簡單的進行壓測稚补,并且只能對Charles抓到的http協(xié)議的請求進行重復并發(fā),缺點就是如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的接口,點擊【ok】