Charles工具基本使用详解
學(xué)習(xí)一個(gè)工具,必須要先了解這個(gè)工具是干什么的,為什么可以這么用,應(yīng)該怎么用,下面將會(huì)圍繞著這三個(gè)問題對(duì)Charles進(jìn)行介紹:
Charles功能
Charles是一種pc端常用的網(wǎng)絡(luò)封包截取工具,在做移動(dòng)端開發(fā)時(shí),可以利用它進(jìn)行網(wǎng)絡(luò)封包截取,更好地調(diào)試與服務(wù)器之間的通信協(xié)議,也可以利用它分析第三方應(yīng)用通信協(xié)議,可以抓取HTTP協(xié)議、HTTPS協(xié)議,以及WebSocket協(xié)議等
Charles工作原理
Charles將自己設(shè)置為系統(tǒng)的網(wǎng)絡(luò)訪問代理服務(wù)器,使客戶端將原來發(fā)送給服務(wù)器的請(qǐng)求先發(fā)送給Charles,再由charles轉(zhuǎn)發(fā)給服務(wù)器,服務(wù)器將響應(yīng)結(jié)果返回給Charles,Charles再將結(jié)果返回給客戶端,從而實(shí)現(xiàn)了網(wǎng)絡(luò)封包信息的截取與分析
Charles的安裝
官網(wǎng)下載網(wǎng)址:點(diǎn)擊前往下載
下載后如下,進(jìn)行安裝,只需要傻瓜式地點(diǎn)next:
安裝完成后,在桌面會(huì)有個(gè)瓷花瓶的快捷小圖標(biāo):
點(diǎn)擊小圖標(biāo)出現(xiàn)以下界面就表示安裝成功了:
注意:Charles屬于半免費(fèi),安裝使用30天后,每次打開使用30min就會(huì)強(qiáng)制性關(guān)閉,非正版點(diǎn)開后還會(huì)有10s的等待時(shí)間。所以為了能夠使用得更加流暢,可以購(gòu)買正版哦!
Charles組件介紹
charles界面包括四大部分內(nèi)容:主導(dǎo)航欄(設(shè)置欄)、抓取到的請(qǐng)求、請(qǐng)求內(nèi)容、響應(yīng)內(nèi)容
設(shè)置欄
File:可在發(fā)現(xiàn)問題時(shí),利用導(dǎo)入導(dǎo)出傳遞當(dāng)時(shí)抓取到的接口信息進(jìn)行溝通,排查問題
Edit:編輯
Find:查詢
Charles Preferences:偏好設(shè)置
User Interface:用戶界面設(shè)置
View:視圖選項(xiàng)
Launch: 啟動(dòng)設(shè)置
Warnings:警告設(shè)置
View 視圖菜單:主要是設(shè)置查看的視圖結(jié)構(gòu)
Highlight Rules:高亮顯示設(shè)置的請(qǐng)求
Focused Hosts:設(shè)置訪問焦點(diǎn),設(shè)置后,抓包列表結(jié)果只展示設(shè)置的關(guān)注接口
????????抓包結(jié)果不在Focused Hosts中設(shè)置的,將會(huì)全部顯示在Other Hosts中:
????????
Viewer Mapping:設(shè)置需要重寫服務(wù)器返回內(nèi)容的請(qǐng)求接口,對(duì)接口可能返回的各種結(jié)果數(shù)據(jù)進(jìn)行快速驗(yàn)證
????
Protobuf Settings:添加由ProtoBuf生成的對(duì)應(yīng).desc文件,為了解析ProtoBuf數(shù)據(jù)流
????
Proxy
Start/Stop Recording:按照記錄設(shè)置中的規(guī)則開始/暫停記錄
????此暫停只是不將請(qǐng)求展示在界面上,但是仍然通過Charles進(jìn)行請(qǐng)求響應(yīng)
????Recording Setting:設(shè)置記錄規(guī)則
????????Options:設(shè)置可記錄文件的大小,以及請(qǐng)求個(gè)數(shù)
????????Include:只展示記錄列表中的請(qǐng)求
????????Exclude:不展示記錄列表中的請(qǐng)求
SSL Proxying Settings:設(shè)置需要捕獲的ssl信息,必須填寫,不填寫則無(wú)法捕獲到相關(guān)信息
stop/start throttling:按照Throtting Settings設(shè)置的規(guī)則開始/暫停模擬慢網(wǎng)速
????Throtting Settings:設(shè)置網(wǎng)速、帶寬、穩(wěn)定性等
Brandwidth:帶寬
Utilisation:帶寬可用率
Round-trip latency:第一個(gè)請(qǐng)求的時(shí)延
MTU:最大可傳輸單元
Reliability:連接的可靠性,指10KB的可靠率
Stability:連接穩(wěn)定性
Unstable quality range:不穩(wěn)定范圍
Enable/Disable Breakpoints:按照Breakpoints Settings中設(shè)置的規(guī)則啟動(dòng)/禁用斷點(diǎn)
??????????????啟動(dòng)斷點(diǎn)后返回到Charles的響應(yīng)信息不會(huì)立刻傳給客戶端,通過設(shè)置斷點(diǎn)在Charles中觀察或者修改請(qǐng)求或者返回的內(nèi)容
Breakpoints Settings:斷點(diǎn)規(guī)則設(shè)置
???????????設(shè)置需要進(jìn)行斷點(diǎn)的請(qǐng)求host
Reverse Proxies:反向代理
正向代理:幫助客戶端進(jìn)行發(fā)送請(qǐng)求,接收響應(yīng),代理端是客戶端,正常使用Charles進(jìn)行抓包
反向代理:幫助服務(wù)器發(fā)送請(qǐng)求,接收響應(yīng),代理端是服務(wù)器,多用于請(qǐng)求發(fā)送到多臺(tái)服務(wù)器的負(fù)載均衡
設(shè)置:Local Port 本地端口,會(huì)隨機(jī)生成一個(gè)可用的端口號(hào),在此端口上進(jìn)行反向代理
???Remote host/Remote port 作為代理目的地的遠(yuǎn)程主機(jī)和端口號(hào),默認(rèn)為HTTP的端口號(hào)80
???Rewrite redirects:重寫重定向,將客戶端重定向到遠(yuǎn)程服務(wù)器的地址,重寫為由客戶端將響應(yīng)信
???????????息直接發(fā)送給反向代理的本地地址,如果不選擇,則重定向后的響應(yīng)會(huì)直接發(fā)
???????????送給遠(yuǎn)程服務(wù)器,Charles將抓取不到響應(yīng)信息
???Preserve host in header fields:保留主機(jī)頭
???Listen on a specific address:監(jiān)聽特定的地址
Port Forwarding:端口轉(zhuǎn)發(fā)
端口轉(zhuǎn)發(fā)是轉(zhuǎn)發(fā)一個(gè)網(wǎng)絡(luò)端口從一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)到另一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的行為,其使一個(gè)外部用戶從外部經(jīng)過一個(gè)被激活的NAT路由器到達(dá)一個(gè)在私有內(nèi)部IP地址(局域網(wǎng)內(nèi)部)上的一個(gè)端口
Windows Proxy:電腦使用Charles作為代理
Proxy Settings:設(shè)置代理端口
DNS Settings:通過將您自己的主機(jī)名指定給遠(yuǎn)程地址映射來欺騙DNS查找
引用:一般的開發(fā)流程中,在上線之前都需要在測(cè)試環(huán)境中先行進(jìn)行驗(yàn)證,而此時(shí)手機(jī)客戶端請(qǐng)求的域名是不太容易改變的,可以通過設(shè)置dns方式把域名轉(zhuǎn)發(fā)到測(cè)試機(jī)上,具體設(shè)置Tools->DNS Spoofing Settings
官方文檔上的介紹:
- 當(dāng)請(qǐng)求通過Charles時(shí),您的DNS映射將優(yōu)先。
- 在DNS更改之前,DNS Spoofing可用于測(cè)試虛擬托管網(wǎng)站,因?yàn)槟臑g覽器將會(huì)像DNS更改一樣運(yùn)行。
- DNS更改通常需要長(zhǎng)達(dá)24小時(shí)才能生效,并且沒有DNS欺騙,DNS變更生效后,網(wǎng)站將會(huì)變得非常困難。
- 可以將主機(jī)名映射到IP地址或另一個(gè)主機(jī)名,這些名稱將由Charles在DNS中查找以查找其IP地址
Access Control Settings:訪問賬戶設(shè)置,限制訪問Charles的請(qǐng)求,本地默認(rèn)可直接訪問
Prompt to alow unauthorized connections:勾選該設(shè)置,則未在列表中的ip訪問Charles時(shí),charles會(huì)彈出是否允許訪問的提示信息,不勾選,則不會(huì)彈框提示,將直接屏蔽除列表內(nèi)的ip訪問
External Proxy Settings:外部代理設(shè)置
用于需要使用網(wǎng)絡(luò)上的代理服務(wù)器訪問網(wǎng)絡(luò)的場(chǎng)景,比如通過VPN訪問外網(wǎng),如果在一臺(tái)服務(wù)器上同時(shí)打開VPN和Charles,Charles是無(wú)法生效的,此時(shí)需要配置該處
Web Proxy Server 設(shè)置VPN的Host和Port
Proxy server requires a password:配置身份驗(yàn)證和外部代理請(qǐng)求認(rèn)證,如果沒有配置,則Charles直接向服務(wù)器發(fā)送驗(yàn)證請(qǐng)求
Bypass external proxies for the following hosts:設(shè)置繞過外部代理直接進(jìn)行請(qǐng)求的hosts
External DNS Resolver Settings:外部DNS解析程序設(shè)置
Web Interface Settings:Charles web界面設(shè)置
Web界面可以讓您使用Web瀏覽器控制查詢,您可以訪問http://control.charles的Web界面,當(dāng)查詢運(yùn)行時(shí),您可以啟用此功能并配置下面的訪問控制;
Tools
No caching Settings:無(wú)緩存設(shè)置
???通過操縱控制緩存響應(yīng)的HTTP頭來防止緩存;只選擇Enable No Caching,則禁止緩存所有,同時(shí)
???選擇Enable No Caching和Only for selected locations,則只禁止緩存列表中的請(qǐng)求Header
????從請(qǐng)求中刪除If-Modified-Since和If-None-Match頭,添加Pragma:no-cache和Cache-control:
????no-cache。
????從響應(yīng)中刪除Expires,Last-Modified和ETag標(biāo)頭,添加Expires:0和Cache-Control: no-cache
Block Cookies:禁止Cookies設(shè)置
???禁用Cookie工具阻止發(fā)送和接收Cookie,只選中enable block cookies時(shí),則禁止接收和發(fā)送所有
???cookies值;當(dāng)同時(shí)選中enable block cookies和only for selected locations時(shí),只針對(duì)列表中的域
???名
????Cookie頭部從請(qǐng)求中刪除,防止將cookie值從客戶端應(yīng)用程序(例如Web瀏覽器)發(fā)送到遠(yuǎn)程
????服務(wù)器
????Set-Cookie頭將從響應(yīng)中移除,從而防止客戶端應(yīng)用程序從遠(yuǎn)程服務(wù)器接收cookie的請(qǐng)求
Map Remote:遠(yuǎn)程映射到URL地址,將某個(gè)網(wǎng)絡(luò)請(qǐng)求進(jìn)行重定向到另一個(gè)網(wǎng)絡(luò)請(qǐng)求,然后用重定向后的內(nèi)容來響應(yīng)請(qǐng)求的內(nèi)容
Map Local:映射到本地,將某個(gè)網(wǎng)絡(luò)請(qǐng)求進(jìn)行重定向到本地的某個(gè)文件,然后用重定向后的內(nèi)容來響應(yīng)請(qǐng)求的內(nèi)容
Rewrite:重寫工具,修改請(qǐng)求和響應(yīng)的rule
eg:訪問所有http://www.baidu.com成功的接口,原本返回的status為200,目前通過重寫返回的status,導(dǎo)致訪問成功的status由200變成了401
Block List:黑名單,阻止對(duì)匹配HOST的請(qǐng)求;可以直接把請(qǐng)求丟掉,也可以直接返回403狀態(tài)碼;如果一個(gè)請(qǐng)求與“黑名單”和“白名單”同時(shí)匹配成功,則會(huì)被阻止
Allow List:白名單,阻止對(duì)沒有匹配到的HOST的請(qǐng)求;可以直接把請(qǐng)求丟掉,也可以直接返回403狀態(tài)碼;如果一個(gè)請(qǐng)求與“黑名單”和“白名單”同時(shí)匹配成功,則會(huì)被阻止
DNS Spoofing:DNS欺騙
通過將您自己的主機(jī)名指定給遠(yuǎn)程地址映射來欺騙DNS查找,一般的開發(fā)流程中,在上線之前都需要在測(cè)試環(huán)境中先行進(jìn)行驗(yàn)證,而此時(shí)手機(jī)客戶端請(qǐng)求的域名是不太容易改變的,可以通過設(shè)置dns方式把域名轉(zhuǎn)發(fā)到測(cè)試機(jī)上
Mirror:鏡像工具
瀏覽指定網(wǎng)站時(shí),把抓取到的文件克隆一份,并保存在指定的路徑下,適合抓取少量文件,且只存儲(chǔ)
該文件下的資源,不會(huì)存儲(chǔ)該文件引用的外部文件,傳送到客戶端的壓縮或者編碼的響應(yīng)會(huì)被解碼
Auto Save:自動(dòng)存儲(chǔ)
設(shè)定時(shí)間間隔后,自動(dòng)保存并清除抓取到的內(nèi)容,適用于離開Charles監(jiān)視長(zhǎng)時(shí)間的網(wǎng)絡(luò)活動(dòng),第一個(gè)保存間隔將縮短以滿足自然小時(shí)內(nèi)可間隔數(shù)為整數(shù),比如您在10:02設(shè)置的間隔時(shí)間為5min,則第一次自動(dòng)保存并清除抓取到的內(nèi)容的時(shí)間為10:05,之后每隔5min保存并清除一次
Client Process:客戶端進(jìn)程,在每個(gè)請(qǐng)求的“備注”區(qū)域中顯示負(fù)責(zé)進(jìn)行每個(gè)請(qǐng)求的本地客戶端進(jìn)程的名稱,可以幫助發(fā)現(xiàn)許多可能未知的HTTP客戶端,僅適用于在運(yùn)行Charles的計(jì)算機(jī)上發(fā)出的請(qǐng)求
Compose:在原有的請(qǐng)求基礎(chǔ)上修改請(qǐng)求
Compose New:創(chuàng)建一個(gè)和原來一樣的新的請(qǐng)求進(jìn)行修改修改請(qǐng)求值
Repeat:批量重復(fù)請(qǐng)求,將請(qǐng)求重新發(fā)送到服務(wù)器,并將響應(yīng)顯示為新請(qǐng)求,此過程直接通過Charles
????????向服務(wù)器目標(biāo)進(jìn)行請(qǐng)求,因此不能在客戶端找到相應(yīng)的接口及傳參,對(duì)于需
????????要傳多參數(shù)的請(qǐng)求,這個(gè)功能大大簡(jiǎn)化了設(shè)置參數(shù)的過程
Advanced Repeat:高級(jí)重復(fù)批量請(qǐng)求,可用來測(cè)試短信轟炸漏洞或者后端性能等
Validate:驗(yàn)證工具
Publish Gist:發(fā)布代碼段
Profiles:界面
Publish Gist Settings:Gist發(fā)布設(shè)置,可設(shè)置自己GitHub的賬號(hào),若是沒有設(shè)置,則發(fā)布的代碼段將會(huì)已匿名形式發(fā)布出去,并且無(wú)法進(jìn)行刪除;可設(shè)置發(fā)布的代碼段的大小以及發(fā)布的形式是公開還是私密
Window
Help
工具欄
抓取到的請(qǐng)求導(dǎo)航欄
- Structure :按訪問的域名進(jìn)行分類顯示接口請(qǐng)求
- Sequence :按接口請(qǐng)求時(shí)間顯示數(shù)據(jù)
- Filter:根據(jù)域名進(jìn)行請(qǐng)求過濾
請(qǐng)求內(nèi)容
Overview:記錄請(qǐng)求的大致內(nèi)容,包括請(qǐng)求的URL、返回的狀態(tài)碼、使用的協(xié)議、客戶端地址、服務(wù)器地址、數(shù)據(jù)傳遞大小等
Content:具體的請(qǐng)求內(nèi)容
Headers:數(shù)據(jù)返回的頭部信息
Query String:查詢條件
Raw:未經(jīng)任何處理的請(qǐng)求數(shù)據(jù)
Summary:請(qǐng)求大致資源信息,包括請(qǐng)求數(shù)據(jù)大小、請(qǐng)求響應(yīng)狀態(tài)、請(qǐng)求消耗時(shí)間
Chart:以表格形式告訴我們一個(gè)響應(yīng)時(shí)間的分布情況
Notes:備注信息,可點(diǎn)擊填寫備注信息
響應(yīng)內(nèi)容:
header:響應(yīng)的頭信息
Text:文本形式展示響應(yīng)內(nèi)容
Hex:16進(jìn)制,一般不查看
JavaScript:腳本展示
JSON:以json格式查看響應(yīng)內(nèi)容
JSON Text:將json格式的內(nèi)容展開書寫
Raw:詳情內(nèi)容的詳細(xì)情況
Charles代理設(shè)置
Window 代理設(shè)置
Charles默認(rèn)代理本地服務(wù)器,如果抓取不到本地服務(wù)器,查看瀏覽器是否開啟代理
本地默認(rèn)代理設(shè)置時(shí)是這樣的(針對(duì)Google):地址 http=127.0.0.1:8888;https=127.0.0.1:8888
代理遠(yuǎn)程服務(wù)器,則進(jìn)行如下操作:
步驟一:Charles配置代理端口號(hào)
步驟二:Charles設(shè)置可通過代理的服務(wù)器地址
步驟三:為了能夠抓取到Https數(shù)據(jù)包,下載Charles根證書,并存儲(chǔ)在受信任證書列表中(一般存儲(chǔ)選擇的系統(tǒng)區(qū)域,是受信任區(qū)域)
步驟四:查看Charles本地服務(wù)器地址,將該ip地址與端口號(hào)填入瀏覽器代理ip和端口號(hào)中
如下,打開Google瀏覽器代理:chrome://settings/
Setting–>系統(tǒng)–>打開您計(jì)算機(jī)的代理設(shè)置
Android 代理設(shè)置
步驟一、步驟二同window代理設(shè)置
步驟三:手機(jī)端下載Charles證書
點(diǎn)擊后提示操作步驟,此過程Charles必須一直處于啟動(dòng)狀態(tài)
1、將手機(jī)與代理服務(wù)器置于同一網(wǎng)絡(luò),然后將手機(jī)設(shè)置代理:10.0.6.251:8888
2、瀏覽器輸入:chls.pro/ssl ,進(jìn)行下載證書,下載后進(jìn)行安裝,
real me 手機(jī):安裝后可進(jìn)入手機(jī) 設(shè)置–>安全–>憑據(jù)存儲(chǔ)–>信任的證書–>用戶 查看是否安裝成功且已設(shè)置為受信任
vivo 手機(jī):安裝后可進(jìn)入手機(jī) 設(shè)置–>更多設(shè)置–>安全–>受信任的憑據(jù)–>用戶 查看是否安裝成功且已設(shè)置為受信任
注意:下載的證書可能與手機(jī)可安裝證書類型不一致,這時(shí)候需要修改下證書名或者從存儲(chǔ)設(shè)備中安裝
IOS代理設(shè)置
步驟一、步驟二同Android代理設(shè)置
步驟三:前幾個(gè)步驟同Android設(shè)置,安裝證書,將證書設(shè)為可信任憑證如下:
????設(shè)置–>通用–>描述文件與設(shè)備管理–>找到下載的證書 Charles Proxy CA–>點(diǎn)擊右上角的‘安裝’
??安裝完成后將證書設(shè)置為可信任:
????設(shè)置–>通用–>關(guān)于本機(jī)–>證書信任設(shè)置–>找到對(duì)應(yīng)的證書,開啟信任
Charles弱網(wǎng)測(cè)試
設(shè)置Proxy–>Throttle Settings,勾選Enable Throttling,如果不勾選Only for selected hosts,則默認(rèn)限制所有通過Charles的請(qǐng)求網(wǎng)速,勾選Only for selected hosts,則只針對(duì)列表中的Host進(jìn)行限速測(cè)試,網(wǎng)速設(shè)置的對(duì)應(yīng)值可參考組件介紹
Charles斷點(diǎn)測(cè)試
設(shè)置需要斷點(diǎn)的接口信息:
重新請(qǐng)求所設(shè)置的接口,charles自動(dòng)跳轉(zhuǎn)到斷點(diǎn)設(shè)置的接口,展示相關(guān)信息,可進(jìn)行編輯,點(diǎn)擊Execute,將修改后的信息進(jìn)行請(qǐng)求,并將結(jié)果返回給客戶端
總結(jié)
以上是生活随笔為你收集整理的Charles工具基本使用详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [html] 怎样在页面上实现一个圆形
- 下一篇: [vue] vue的属性名称与metho