真香!自從用了Charles,F(xiàn)iddler已經(jīng)被我徹底卸載了
在做客戶端/服務(wù)端測(cè)試時(shí),經(jīng)常需要對(duì)客戶端的操作進(jìn)行抓包分析,排查請(qǐng)求和響應(yīng)數(shù)據(jù)是否符合預(yù)期。因此抓包能力是軟件測(cè)試從業(yè)者的必備技能。目前行業(yè)里常用的抓包工具主要有Fiddler和Charles。本文重點(diǎn)講解下Charles的基本使用。
Charles 是一款支持 HTTP 代理和抓包的網(wǎng)絡(luò)代理軟件。瀏覽器或APP通過(guò) Charles 訪問(wèn)網(wǎng)絡(luò)時(shí),它可以記錄并顯示所有發(fā)送、接收的數(shù)據(jù)。
01安裝
Charles依賴Java運(yùn)行環(huán)境,本機(jī)需要先配置好jdk(具體安裝配置略)
點(diǎn)擊右側(cè)下載按鈕,就能下載最新版Charles,在Windows下雙擊安裝即可。目前最新的版本是4.6.2。
02Web抓包
默認(rèn)情況下,啟動(dòng)Charles后,就能自動(dòng)抓Chrome瀏覽器、Firefox瀏覽器的包,如果不能抓,請(qǐng)檢查Charles中是否勾選了代理開關(guān)“Windows Proxy/Mac Proxy”
03常用功能
Charles主要提供兩種查看封包的視圖,分別名為 “Structure” 和 “Sequence”
- Structure 視圖將網(wǎng)絡(luò)請(qǐng)求按訪問(wèn)的域名分類
- Sequence 視圖將網(wǎng)絡(luò)請(qǐng)求按訪問(wèn)的時(shí)間排序
04請(qǐng)求過(guò)濾
默認(rèn)情況下Charles會(huì)抓取所有的數(shù)據(jù)包,并展示在請(qǐng)求列表中。但是大多數(shù)情況下,我們只關(guān)系某個(gè)ip或某個(gè)域名下的包Charles提供了過(guò)濾器,幫助我們顯示/排除指定的HTTP請(qǐng)求。
Charles有兩種方式可以實(shí)現(xiàn)請(qǐng)求過(guò)濾:
方法一:
請(qǐng)求列表下方的Filter可以實(shí)現(xiàn)簡(jiǎn)單的過(guò)濾功能,輸入關(guān)鍵字即可篩選出對(duì)應(yīng)URL
方法二:
菜單欄“Proxy-Recording Settings”里,設(shè)置include(包含)和exclude(排除),可以僅顯示或者不顯示指定的url
05弱網(wǎng)測(cè)試
和Fiddler一樣,Charles也提供了弱網(wǎng)模擬的功能,測(cè)試瀏覽器/APP在弱網(wǎng)條件的使用情況。
菜單欄里“Proxy”–>“Throttle Setting”里,Charles內(nèi)置了不同的網(wǎng)絡(luò)模式:56kbps、256kbps ... 3G、4G等,來(lái)模擬不同弱網(wǎng)效果。還可以手動(dòng)修改Download和Upload的值,模擬不同的速度。
需要注意的是,這里的網(wǎng)絡(luò)速率值,單位是bps,對(duì)應(yīng)到常用的byte/s,還需要除以8,如圖中的4096kbps,實(shí)際為512kb
06請(qǐng)求/響應(yīng)斷點(diǎn)
如果想對(duì)某個(gè)請(qǐng)求進(jìn)行攔截,修改請(qǐng)求的參數(shù)?;蛘咝薷哪硞€(gè)請(qǐng)求響應(yīng)中的值,可以使用Charles的斷點(diǎn)功能。
在請(qǐng)求列表中,選擇某個(gè)URL,右鍵點(diǎn)擊“Breakpoints”,默認(rèn)就給這個(gè)請(qǐng)求設(shè)置了請(qǐng)求+響應(yīng)斷點(diǎn)。進(jìn)行指定的操作時(shí),Charles就會(huì)攔截對(duì)應(yīng)的請(qǐng)求,并支持?jǐn)?shù)據(jù)修改
修改服務(wù)端返回的響應(yīng)內(nèi)容,比如將success修改為fail
如果想做一些更詳細(xì)的的斷點(diǎn)配置設(shè)置Breakpoint Settings
07APP抓包
和Fiddler一樣,Charles也可以抓APP端的包,需要進(jìn)行以下設(shè)置,ProxySetting中設(shè)置允許遠(yuǎn)程HTTP代理
電腦和手機(jī)連接同一WiFi,在手機(jī)端設(shè)置WiFi代理,指向Charles所在的ip和8888端口
最后,Charles還有很多高級(jí)功能,大家可以去官網(wǎng)查看文檔進(jìn)行學(xué)習(xí)。