charles全面使用教程及常见功能详解(较详细)
主要功能:
簡介
Charles其實是一款代理服務(wù)器,通過成為電腦或者瀏覽器的代理,然后截取請求和請求結(jié)果達(dá)到分析抓包的目的。
Charles 主要的功能包括:
截取 Http 和 Https 網(wǎng)絡(luò)封包。
支持重發(fā)網(wǎng)絡(luò)請求,方便后端調(diào)試。
支持修改網(wǎng)絡(luò)請求參數(shù)。
支持網(wǎng)絡(luò)請求的截獲并動態(tài)修改。
支持模擬慢速網(wǎng)絡(luò)。
1. Charles安裝
前提先安裝配置好Java環(huán)境,官網(wǎng)下載安裝Charles:https://www.charlesproxy.com/download/
Charles共享賬號: Name:?https://zhile.io; Key: 48891cf209c6d32bf4
Charles安裝證書:
2. HTTP抓包
(1)查看電腦IP地址
方法一: 打開”運行”(快捷鍵:win+R鍵;或者在任務(wù)欄的”搜索”按鈕中查找并點擊”運行”),輸入“cmd”后進入命令行窗口,在命令行窗口中輸入”ipconfig”命令查看IP?
方法二: 在charles中查看 :Help -> Local IP Address
(2)Charles代理設(shè)置
接下來打開Charles的代理設(shè)置:Proxy->Proxy Settings,設(shè)置一下端口號,默認(rèn)的是8888,這個只要不和其他程序的沖突即可,并且勾選Enable transparent HTTP proxying。
(3)Charles設(shè)置Proxy代理
Proxy -> SSL Proxying Settings... 勾選Enable SSL Proxying,點擊Add,點擊Add,Host設(shè)置要抓取的https接口,??
Host : * (使用通配符表示檢測所有網(wǎng)絡(luò)請求;Port:443)
比如想抓所有接口的內(nèi)容,Host填寫:*,Port填寫:443
完成以上操作,就完成Charles抓取HTTP(S)數(shù)據(jù)包的所有配置了。
(4)手機端設(shè)置
在手機設(shè)備、模擬器或者遠(yuǎn)程瀏覽器上設(shè)置代理,抓取手機設(shè)備上的請求包(手機和電腦必須在同一個局域網(wǎng)內(nèi),并關(guān)閉電腦防火墻、其他代理或者翻墻軟件)
第一步:在手機wifi 上設(shè)置代理 -> 長按無線網(wǎng)絡(luò)-->修改網(wǎng)絡(luò)-->高級選項-->代理 手動-->手動輸入輸入IP、端口號
服務(wù)器IP:PC機器的IP(通過之前介紹的查看IP的方法)
第二步:Charles彈出詢問“allow”或者“deny”,點擊“allow”按鈕允許;出現(xiàn)手機的HTTP請求列表
第三步:如果修改相關(guān)配置后,沒有出現(xiàn)上面截圖信息,可在設(shè)置中加入自己手機的IP,如下圖:
第四步 安裝證書
- 抓取https數(shù)據(jù)需要在手機上安裝證書,HTTPS的抓包需要在HTTP抓包基礎(chǔ)上再進行設(shè)置;
- Help -> SSL proxying -> Install charles root certificate on a Mobile Device or remote browser…
出現(xiàn)彈窗得到地址chls.pro/ssl
- 在手機自帶的系統(tǒng)瀏覽器輸入地址chls.pro/ssl,出現(xiàn)證書安裝頁面,點擊安裝,手機設(shè)置有密碼的輸入密碼進行安裝。安裝完證書后,就可以截取手機上的 Https 通訊內(nèi)容了。不過同樣需要注意,默認(rèn)情況下 Charles 并不做截取,你還需要在要截取的網(wǎng)絡(luò)請求上右擊,選擇 SSL proxy 菜單項。
- 注意2:iOS 10.3系統(tǒng),需要在設(shè)置→通用→關(guān)于本機→證書信任設(shè)置里面啟用完全信任Charles證書
3.Charles 主界面介紹
主要是會話的兩種視圖模式以及對應(yīng)的?requet/response?面板組成:
Structure視圖
Sequence視圖
Structure:樹狀結(jié)構(gòu)顯示,將網(wǎng)絡(luò)請求按訪問的域名分類;
Sequence:水平結(jié)構(gòu)顯示,將網(wǎng)絡(luò)請求按訪問的時間排序
Structure視圖模式下,列表會按照域名來歸類所有請求,而Sequence視圖則是按照請求發(fā)生的順序來展示;如果不習(xí)慣Sequence默認(rèn)的上下視圖,可以修改為類似Fiddler的左右視圖模式(有更符合眼睛的習(xí)慣):快捷鍵 cmd+,->Charles Preferences->Viewers選擇Sequence view layout為Tall即可;
常用的功能:
Save response: 保存response數(shù)據(jù)到文件中,方便后面用于重定向功能map local...;選擇多條記錄后再右鍵就會有Save All...可以方便的把所有response信息一次性導(dǎo)出到某個目錄中,然后通過map local...結(jié)合通配符來批量重定向請求;
Export: 可以將選中的多個會話信息完整導(dǎo)出成文件(*.chls),通過File - import來導(dǎo)入chls文件,方便不同開發(fā)人員進行調(diào)試或者現(xiàn)象復(fù)現(xiàn)分析;
repeat advanced...: 可以重發(fā)次數(shù)以及并發(fā)數(shù),用于進行簡單的服務(wù)器壓測,
Filter?: 過濾,可以輸入關(guān)鍵字來快速篩選出 URL 中帶指定關(guān)鍵字的網(wǎng)絡(luò)請求
Overview?: 查看這次請求的詳細(xì)內(nèi)容,例如耗時詳細(xì)列車了請求開始時間、結(jié)束時間,響應(yīng)開始時間、結(jié)束時間,總耗時、DNS耗時、網(wǎng)絡(luò)延時等。
對于Size也詳細(xì)列出了請求頭大小、響應(yīng)頭大小、壓縮比例等內(nèi)容。?
URL:進行網(wǎng)絡(luò)請求的鏈接;
Status:當(dāng)前狀態(tài),complete表示請求完成;
Responce Code:返回碼。不同的接口,不同的請求結(jié)果,返回碼都不同;
Protocol:使用的協(xié)議;
Method:請求方式,如GET請求,POST請求等;
Kept Alive:判斷當(dāng)前是否正在鏈接(活躍);
Content-Type:發(fā)送的內(nèi)容類型,如這里用的是XML文本,以UTF8的方式發(fā)送;
Client Address:客戶端的IP地址;
Remote Address:遠(yuǎn)程服務(wù)器的IP;
Timing:?
Request Start Time:請求開始的時間;
Request End Time:請求結(jié)束的時間;
Response Start Time:返回開始的時間;
Response End Time :?返回結(jié)束的時間;
Duration :?總時間;
Size:?
Request Header :請求的頭部大小;
Response Header:返回的頭部大小;
Request :?請求發(fā)送的大小;
Response:返回數(shù)據(jù)的大小;
Total:所有數(shù)據(jù)大小;
Request Compression :?請求壓縮;
Response Compression :?返回壓縮;
Request :?查看請求內(nèi)容(底下的Headers,Query String,Cookies,Raw。)
Headers:發(fā)送請求的頭部信息;
Query String :?發(fā)送參數(shù)列表;
Cookies:?瀏覽器緩存;
Raw:發(fā)送的原生數(shù)據(jù),包括了頭部和參數(shù);
Reponse :?查看響應(yīng)內(nèi)容
Headers:是返回的頭部信息;
Text:返回信息(除去頭部)后的文本;
Hex:返回信息的16進制表示;
XML:我返回的數(shù)據(jù)是XML。如果你返回的是JSON,這里就會顯示JSON;
XML Text:如果你返回JSON,這里會顯示JSON Text;
Raw:返回的所有原生數(shù)據(jù),包括頭部;
Summary:?查看發(fā)送數(shù)據(jù)的一些簡要信息(主機,狀態(tài)碼,數(shù)據(jù)的類型,header和body大下,加載時間,總時間)
Chart:?Summary中簡要信息以圖表形式展示
Notes:?其他信息
抓包接口測試需要了解下相關(guān)HTTP狀態(tài)碼所對應(yīng)說明
4.菜單
4.1Proxy 菜單
這個用得比較多,在這里設(shè)置跟蹤捕捉過濾功能:
Proxy菜單
4.2過濾(?Recording Settings?)
Recording Settings?
設(shè)置會話捕捉條件,include?面板用于啟用/停止可以捕捉/顯示的會話;
exclude?表示不顯示的會話,在會話列表中右鍵選擇?ignore?時,對應(yīng)的url會出現(xiàn)在這里;
record_setting_add
比較好用的是過濾條件支持通配符,*表示任意多個字符,?表示一個字符,如Protocol中有http,https和 "",選擇空白或者輸入*都可以表示任意協(xié)議的請求;
也可以通過主界面底部的Filter來簡單設(shè)置過濾條件,不支持通配符
filter
還有一種方法就是在一個網(wǎng)址上右擊,選擇Focus,然后其他的請求就會被放到一個叫Other Host的文件夾里面,這樣也達(dá)到了過濾的目的。
4.3模擬網(wǎng)絡(luò)環(huán)境(Throttle Settings)
4.3.1弱網(wǎng)設(shè)置throttle_settings
- 在這里選擇要模擬的網(wǎng)絡(luò)環(huán)境,也可以自定義指定的url進行網(wǎng)絡(luò)環(huán)境(勾選only....),通過該功能,模擬不同的網(wǎng)絡(luò)帶寬、延時率、丟包率。
- 弱網(wǎng)菜單介紹
- 配置參數(shù)解析:
? ?bandwidth —— 帶寬,即上行、下行數(shù)據(jù)傳輸速度
? ?utilisation —— 帶寬可用率,大部分modern是100%
? ?round-trip latency —— 第一個請求的時延,單位是ms。
? ?MTU —— 最大傳輸單元,即TCP包的最大size,可以更真實模擬TCP層,每次傳輸?shù)姆职闆r。
? ?Releability —— 指連接的可靠性。這里指的是10kb的可靠率。用于模擬網(wǎng)絡(luò)不穩(wěn)定。
? ?Stability —— 連接穩(wěn)定性,也會影響帶寬可用性。用于模擬移動網(wǎng)絡(luò),移動網(wǎng)絡(luò)連接一般不可靠。
- 這里設(shè)置完成后通過Proxy-Start Throttling(Ctrl+T)或者常用工具欄按鈕來啟用或停止;
- 關(guān)于網(wǎng)絡(luò)網(wǎng)絡(luò)制式上下行頻率、速率比較2G、3G、4G網(wǎng)絡(luò)制式上下行頻率、速率比較_貓貓貓貓貓大人的博客-CSDN博客_4g上行速率和下行速率
5.斷點功能
- 在會話列表中右鍵點擊某個會話,然后在菜單中選擇Breakpoints;
- 通過Proxy-Breakpoint settings...中手動新建/啟用某個斷點;
- 要求勾選enable breakpoints,之后當(dāng)下次再有該請求時,會自動進入斷點模式;
- 對斷點進行設(shè)置
修改請求后發(fā)送
6.常見問題解決
1 . 手機無法抓包的問題
檢查是否配置好代理IP,端口號
檢查是否與電腦在同一個局域網(wǎng)
檢查是否關(guān)閉防火墻,代理,翻墻軟件
彈出詢問點擊“allow”或者“deny”時,誤點“deny”,關(guān)閉charles重啟,手機再次瀏覽則會重新彈出詢問
2 . 解決request和response信息中的中文亂碼問題
方法一 :修改charles windows版本安裝目錄下也有一個Charles.ini的配置文件?
修改后的配置文件?添加-Dfile.encoding=UTF-8即可。
通過以上方法就可以解決Request和Response的中文亂碼問題了。
3.設(shè)置代理后,瀏覽器打不開網(wǎng)頁
瀏覽器--設(shè)置--打開代理設(shè)置--局域網(wǎng)設(shè)置--去除代理服務(wù)器下圖選項后-確定
總結(jié)
以上是生活随笔為你收集整理的charles全面使用教程及常见功能详解(较详细)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux内核指南
- 下一篇: [css] css3的:nth-chi