一、Charles簡(jiǎn)介
1.Charles的功能
Charles 是在 PC 端常用的網(wǎng)絡(luò)封包截取工具具篇,在做移動(dòng)開發(fā)時(shí),我們?yōu)榱苏{(diào)試與服務(wù)器端的網(wǎng)絡(luò)通訊協(xié)議,常常需要截取網(wǎng)絡(luò)封包來分析弓摘。除了在做移動(dòng)開發(fā)中調(diào)試端口外,Charles 也可以用于分析第三方應(yīng)用的通訊協(xié)議痕届。配合 Charles 的 SSL 功能韧献,Charles還可以分析 Https 協(xié)議。
Charles 通過將自己設(shè)置成系統(tǒng)的網(wǎng)絡(luò)訪問代理服務(wù)器研叫,使得所有的網(wǎng)絡(luò)訪問請(qǐng)求都通過它來完成锤窑,從而實(shí)現(xiàn)了網(wǎng)絡(luò)封包的截取和分析。
應(yīng)用場(chǎng)景原理圖:
從直接與云端服務(wù)器通信蓝撇,變?yōu)橄扰cCharles所在計(jì)算機(jī)通信果复,再由計(jì)算機(jī)將信息發(fā)給云端服務(wù)器
2.Charles的界面
總覽
工具欄
其中的“編輯會(huì)話”,即Compose功能
“重發(fā)請(qǐng)求”渤昌,即Repeat功能
工作區(qū)
會(huì)話列表
按“結(jié)構(gòu)”排列:
會(huì)話列表按照“域名”虽抄、“一級(jí)路徑”走搁、“二級(jí)路徑”……“N級(jí)路徑”的方式,分組整理展示
按“順序”排列:
會(huì)話列表按照抓取請(qǐng)求的時(shí)間順序排列迈窟,不分組
在Filter中輸入匹配文本或正則表達(dá)式(在點(diǎn)擊右側(cè)Settings按鈕打開的“Sequence Settings”對(duì)話框開啟“Filter uses regex”<使用正則過濾>后)私植,會(huì)話列表將僅展示符合匹配規(guī)則的會(huì)話
會(huì)話詳情a
總覽
a選定請(qǐng)求或請(qǐng)求組概況,如地址车酣、狀態(tài)曲稼、狀態(tài)碼、協(xié)議湖员、方法贫悄、時(shí)間信息、大小信息等屬性
內(nèi)容
請(qǐng)求的Request(請(qǐng)求)娘摔、Response(響應(yīng))信息查看
Request窗口各個(gè)Tab:
Response窗口各個(gè)Tab:
總結(jié)
選定請(qǐng)求或請(qǐng)求組的綜合信息窄坦,如路徑、地址凳寺、狀態(tài)等
圖表
選定請(qǐng)求或請(qǐng)求組信息的圖表展示
可展示維度:
時(shí)間線
大小
耗時(shí)
Type(類型)
Flow(時(shí)間與網(wǎng)絡(luò)速度的二維坐標(biāo)圖)
筆記
給請(qǐng)求做純文本筆記
二鸭津、下載\安裝與環(huán)境配置:
1、電腦(Mac做示范):
下載地址:https://www.charlesproxy.com/
下載完成后進(jìn)行注冊(cè)(如下圖)
Registered Name (賬號(hào)): https://zhile.io
License Key (密碼): 48891cf209c6d32bf4(應(yīng)該還能使用)
在 Charles 的菜單欄上選擇 “Proxy”->”Proxy Settings”肠缨,填入代理端口 8888(或者自定義逆趋,前提是不能和系統(tǒng)已占用端口沖突),并且勾上 “Enable transparent HTTP proxying”
安裝證書:
pc端安裝證書
在Mac上配置Charles證書晒奕,Charles菜單欄中的Help——SSL Proxying——Install Charles Root Ce rtificate
如果證書不受信任闻书,請(qǐng)更改為完全信任:
pc端端口配置:
在Charles中設(shè)置需要抓取的URL地址 (Proxy→SSL Proxying Settings..)
首先在charles的 Proxy選項(xiàng)選擇SSL Proxy Settings, 然后在彈出的對(duì)話框中點(diǎn)擊add,添加需要監(jiān)視的域名吴汪。域名支持 *號(hào)通配符惠窄,如:抓取所有的https請(qǐng)求,可以填寫 *:443漾橙。
2.手機(jī)(iOS做示范)
連接代理:
手機(jī)連接無線網(wǎng)絡(luò)與電腦一致杆融,確保在同一個(gè)網(wǎng)絡(luò)環(huán)境
通過 設(shè)置 → 無線局域網(wǎng) ,查看當(dāng)前鏈接的 WIFI 點(diǎn)擊最右邊的感嘆號(hào)霜运,進(jìn)入當(dāng)前 WIFI 的細(xì)節(jié)配置頁面脾歇,在最下面的 HTTP 代理中,選擇「手動(dòng)」淘捡,然后填寫 Charles 代理機(jī)器的 IP(在charles的 "Help"->"Local IP Addresses") 和 端口號(hào)藕各,點(diǎn)擊保存
其中服務(wù)器與端口號(hào)可以通過charles查詢,如下:
iOS示例
手機(jī)端安裝證書
使用手機(jī)默認(rèn)瀏覽器(如safari)(安卓如果不能識(shí)別證書格式可以試試chrome)
地址欄訪問 chls.pro/ssl 下載證書焦除,安裝證書
注??:在你打開瀏覽器的時(shí)候激况,Charles會(huì)出現(xiàn)下面這樣一個(gè)彈窗,一定要點(diǎn)擊Allow,同意建立連接乌逐,否則你就無法下載證書
輸入地址后:
打開設(shè)置:
注??:ps:如果是iOS10.3.1之前的系統(tǒng)竭讳,上述三步之后便能夠使用Charles抓取HTTPS的內(nèi)容,但是iOS10.3.1的時(shí)候浙踢!--還需要在iPhone中的Settings--General--About--Certificate Trust Settings中打開一個(gè)信任的開關(guān)绢慢。
補(bǔ)充:ios>10 都有這個(gè)坑,請(qǐng)注意B宀āR扔摺!
中文系統(tǒng):設(shè)置-通用-關(guān)于本機(jī)-滑倒最下面-證書信任設(shè)置-打開 Charles 開關(guān)
至此蹬挤,Charles的安裝基本完成缚窿,現(xiàn)在你可以試著去抓一些接口了
三、Charles常用操作
1.Map Remote
遠(yuǎn)程映射焰扳,即:將「符合匹配規(guī)則」的請(qǐng)求映射向「一個(gè)遠(yuǎn)程地址」滨攻,可修改請(qǐng)求的尋址(url或ip+port)和路徑(path),不可更改請(qǐng)求體內(nèi)容
映射后的響應(yīng)內(nèi)容蓝翰,由該「遠(yuǎn)程地址」決定
原理示意圖:
開啟前:通過Charles后,仍然請(qǐng)求向原定地址
開啟后:通過Charles后女嘲,向新遠(yuǎn)程地址請(qǐng)求
在開發(fā)階段畜份, 為了方便調(diào)試、聯(lián)調(diào)欣尼、問題追查爆雹, 可以使用代理的方式連接到特定開發(fā)機(jī)。 可以使用charles提供的map remote的方式愕鼓。
設(shè)置好后钙态,相關(guān)接口的請(qǐng)求會(huì)直接打到開發(fā)機(jī)。
2.Map Local
將接口的請(qǐng)求重定向到本地文件
此類操作可稱為“Mock接口”
本地映射菇晃,即:將「符合匹配規(guī)則」的請(qǐng)求映射向「一個(gè)本地文件」册倒,請(qǐng)求完全在本機(jī)處理完成,不修改請(qǐng)求內(nèi)容磺送,響應(yīng)為文件內(nèi)容
原理圖:
開啟前:通過Charles后驻子,仍然請(qǐng)求向原定地址
開啟后:通過Charles后,由Charles直接返回文件中的接口響應(yīng)估灿,不再與服務(wù)器通信
設(shè)置好后崇呵,對(duì)應(yīng)接口的請(qǐng)求不會(huì)打到服務(wù)器,直接返回本地文件中的數(shù)據(jù)馅袁。
3.Rewrite
rewrite功能重寫對(duì)應(yīng)的內(nèi)容域慷,主要可以對(duì)某些匹配請(qǐng)求的header、host、url犹褒、path抵窒、query param、response status化漆、body進(jìn)行rewrite估脆。
設(shè)置好后,發(fā)送的請(qǐng)求就是修改后的請(qǐng)求了座云。
4.Repeat
重復(fù)發(fā)送請(qǐng)求
是一手動(dòng)操作,沒有匹配規(guī)則的限制,可以自定義重復(fù)發(fā)送請(qǐng)求的并發(fā)、間隔等,但不能修改請(qǐng)求內(nèi)容恤左,即是“原樣重發(fā)”
不需要客戶端即可發(fā)送請(qǐng)求
設(shè)置好后,Charles會(huì)重復(fù)發(fā)送指定次數(shù)的同一請(qǐng)求到服務(wù)器
5.Throttle Setting
通過throttle setting可以模擬不同的網(wǎng)絡(luò)環(huán)境
6.Compose
Compose功能是在原有的請(qǐng)求基礎(chǔ)上進(jìn)行修改飞袋。
在進(jìn)行接口測(cè)試時(shí)巧鸭,臨時(shí)需要修改請(qǐng)求參數(shù)巷折、參數(shù)值或者Header等等就可以用到Compose功能歌豺。
是一手動(dòng)操作,沒有匹配規(guī)則的限制炉爆,可以自定義編輯請(qǐng)求的地址螟炫,路徑,參數(shù)荆烈,內(nèi)容岔帽,header等逾一,可手動(dòng)點(diǎn)“Excute”按鈕執(zhí)行
和Repeat的功能、場(chǎng)景類似躺彬,區(qū)別在于,Compose可以編輯請(qǐng)求的內(nèi)容梅惯,Repeat不可以
不需要客戶端即可發(fā)送請(qǐng)求
7.Breakpoint
斷點(diǎn)宪拥,即:將「符合匹配規(guī)則」的請(qǐng)求中斷,可選擇在“請(qǐng)求”階段或“響應(yīng)”階段中斷铣减,中斷后她君,請(qǐng)求被暫時(shí)攔截到Charles,并展示請(qǐng)求詳細(xì)界面供編輯葫哗、執(zhí)行或丟棄
breakpoint功能可以截取發(fā)送給服務(wù)器的請(qǐng)求以及服務(wù)器發(fā)送回的響應(yīng)數(shù)據(jù)犁河,截取成功后可以修改后繼續(xù)發(fā)送鳖枕。