Charles簡(jiǎn)介
Charles是一個(gè)HTTP代理服務(wù)器,HTTP監(jiān)視器,反轉(zhuǎn)代理服務(wù)器,當(dāng)瀏覽器連接Charles的代理訪問互聯(lián)網(wǎng)時(shí)淳衙,Charles可以監(jiān)控瀏覽器發(fā)送和接收的所有數(shù)據(jù)。它允許一個(gè)開發(fā)者查看所有連接互聯(lián)網(wǎng)的HTTP通信,這些包括request, response和HTTP headers (包含cookies與caching信息)箫攀。
Charles主要功能
- 支持SSL代理肠牲。可以截取分析SSL的請(qǐng)求匠童。
- 支持流量控制埂材。可以模擬慢速網(wǎng)絡(luò)以及等待時(shí)間(latency)較長(zhǎng)的請(qǐng)求汤求。
- 支持AJAX調(diào)試俏险。可以自動(dòng)將json或xml數(shù)據(jù)格式化扬绪,方便查看竖独。
- 支持AMF調(diào)試〖放#可以將Flash Remoting 或 Flex Remoting信息格式化莹痢,方便查看。
- 支持重發(fā)網(wǎng)絡(luò)請(qǐng)求墓赴,方便后端調(diào)試竞膳。
- 支持修改網(wǎng)絡(luò)請(qǐng)求參數(shù)。
- 支持網(wǎng)絡(luò)請(qǐng)求的截獲并動(dòng)態(tài)修改诫硕。
- 檢查HTML坦辟,CSS和RSS內(nèi)容是否符合W3C標(biāo)準(zhǔn)。
開始抓包
在開始抓包之前章办,先來(lái)介紹下本篇文章主要涉及Charles那些锉走?
- Charles的介紹與安裝
- web抓包
- App抓包
- 抓取手機(jī)HTTPS協(xié)議
- Charles過濾
- 弱網(wǎng)測(cè)試
- 打斷點(diǎn)篡改數(shù)據(jù)
- 重復(fù)發(fā)送請(qǐng)求
- compose編輯接口
- 服務(wù)器壓力測(cè)試
- 本地映射
- 遠(yuǎn)程映射
- 后續(xù)會(huì)繼續(xù)更新
Charles的介紹與安裝
在移動(dòng)互聯(lián)網(wǎng)時(shí)代,作為測(cè)試工程師藕届,開發(fā)工程師挪蹭。絕對(duì)必須要掌握必要測(cè)試工具,今天主要來(lái)了解Charles休偶。
官方地址:
安裝
由于安裝過程是比較簡(jiǎn)單梁厉,這里就不再過多貼圖了,直接上一張安裝后進(jìn)入首頁(yè)的圖片踏兜,讓我們一起來(lái)看一下Charles的廬山面目懂算。
web抓包
1,web 抓包
Charles Web抓包非常簡(jiǎn)單庇麦,啟動(dòng)Charles會(huì)自動(dòng)與瀏覽器設(shè)置成代理计技,不需要進(jìn)行過多的設(shè)置,接下來(lái)我就就是通過瀏覽器發(fā)送網(wǎng)絡(luò)請(qǐng)求山橄,Charles就會(huì)直接抓取到這些信息和響應(yīng)信息
2,Web 抓取HTTPS協(xié)議
雖然現(xiàn)在Charles能夠直接抓包了垮媒,但是https協(xié)議的報(bào)我們是抓取不了的,需要安裝SSL證書才可以
Charles下配置
1,點(diǎn)擊頂部菜單欄【Help】-->選擇【SSL Proxying】睡雇,點(diǎn)擊【install Charles Root Certificate 】安裝Charles根證書即可萌衬;
這里由于用的筆記本截圖快捷鍵問題,沒發(fā)截取它抱,這里截取證書安裝秕豫,證書安裝一直下一步就可以
2,點(diǎn)擊【Proxy】-->【SSL Proxying Settings...】
3,在彈出選項(xiàng)卡中观蓄,勾選【Enable SSL Proxying】點(diǎn)擊【add】混移,在Host輸入【*】表示接收任何主機(jī),在Prot輸入【443】最后點(diǎn)擊【ok】保存
App抓包
Charles抓包不僅僅可以抓取來(lái)在電腦端的HTTP請(qǐng)求侮穿,也能夠抓取來(lái)自App發(fā)出的HTTP請(qǐng)求歌径,但是手機(jī)抓包需要在電腦端配置下,并且<u>同時(shí)需要手機(jī)和電腦在同一網(wǎng)絡(luò)下</u>
電腦端配置:
1亲茅,啟動(dòng)安裝好的Charles抓包工具回铛;
2,點(diǎn)擊【Help】-->【local IP Address】獲取下ip地址克锣,也可以直接通過電腦自帶的CMD命令來(lái)獲取電腦IP【ipconfig】茵肃,根據(jù)自己的習(xí)慣這里的ip是取我虛擬機(jī)的;
3袭祟,點(diǎn)擊【Proxy】-->【Proxy Settings】我們?cè)谠O(shè)置下端口號(hào)“9999”免姿;
手機(jī)端設(shè)置:
1,打開手機(jī)的設(shè)置頁(yè)面榕酒;
2,選擇【無(wú)線局域網(wǎng)】故俐;
3想鹰,IOS點(diǎn)擊連接的WIFI后面的感嘆號(hào),安卓應(yīng)該是長(zhǎng)按連接的WIFI药版;(注:這里主要以IOS為例)
4辑舷,點(diǎn)擊【配置代理】-->【手動(dòng)】;
5槽片,輸入本機(jī)【IP地址(192.168.1.75)】以及端口號(hào)【9999】何缓,這是我本機(jī)的,根據(jù)自己情況合理配置还栓;
6碌廓,點(diǎn)擊【存儲(chǔ)】
接下里驗(yàn)證下手機(jī)請(qǐng)求,當(dāng)我們看到Charles里能抓到這個(gè)連接剩盒,就說明配置沒問題谷婆,看到unknown,這個(gè)不要緊,那是我們沒有安裝針對(duì)手機(jī)端的證書纪挎,下面繼續(xù)我們手機(jī)端HTTPS證書安裝
抓取手機(jī)HTTPS協(xié)議
通過上面的設(shè)置期贫,雖然來(lái)自我們手機(jī)端的Http協(xié)議請(qǐng)求可以抓取到,但是HTTPS協(xié)議的包是不能抓取的异袄,需要安裝配置證書才可以通砍,現(xiàn)在手機(jī)上大多數(shù)都已經(jīng)切到https很少由http協(xié)議的了
Charles配置:
1,點(diǎn)擊頂部菜單欄【Help】-->選擇【SSL Proxying】烤蜕,點(diǎn)擊【install Charles Root Certificate】安裝Charles根證書即可封孙;
2,點(diǎn)擊安裝【Install Charles Root Certificate On a Mobile Device or Remote Browser】在移動(dòng)設(shè)備上或遠(yuǎn)程瀏覽器安裝證書即可玖绿;(這里和上面安裝一樣)
Charles過濾
通常情況下敛瓷,我們需要對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行過濾,只監(jiān)控向指定目錄服務(wù)器上發(fā)送的請(qǐng)求斑匪。對(duì)于這種需求呐籽,以下幾種辦法:
方法一:在主界面的中部的 Filter 欄中填入需要過濾出來(lái)的關(guān)鍵字。例如我們的服務(wù)器的地址是:http://ceshi.com, 那么只需要在 Filter 欄中填入 ceshi 即可蚀瘸。
方法二:在 Charles 的菜單欄選擇 “Proxy”->”Recording Settings”狡蝶,然后選擇 Include 欄,選擇添加一個(gè)項(xiàng)目贮勃,然后填入需要監(jiān)控的協(xié)議贪惹,主機(jī)地址,端口號(hào)寂嘉。這樣就可以只截取目標(biāo)網(wǎng)站的封包了奏瞬。如下圖所示:
弱網(wǎng)測(cè)試
Charles配置弱網(wǎng)設(shè)置
1,點(diǎn)擊【Proxy】-->【Throttle Setting】
2泉孩,勾選上【Enable Throttle】硼端,也可以勾選【only for selected host 】 設(shè)置一個(gè)指定注解訪問進(jìn)行網(wǎng)絡(luò)限制,不影響其他軟件寓搬;
3珍昨,在【Throttle preset】選擇常見預(yù)設(shè)的網(wǎng)絡(luò)情況,也可以在【Bandwidth】自己設(shè)置網(wǎng)絡(luò)的上傳和下載速率
打斷點(diǎn)篡改數(shù)據(jù)
在我們的測(cè)試場(chǎng)景中句喷,可能需求修改請(qǐng)求參數(shù)或者返回參數(shù)進(jìn)行測(cè)試镣典,比如支付方面的接口,涉及用戶登陸權(quán)限的接口參數(shù)
這里就不再舉例了唾琼;
修改請(qǐng)求數(shù)據(jù)
1兄春,選擇請(qǐng)求會(huì)話右鍵勾選【Breakpoints】這是我們會(huì)發(fā)現(xiàn)工具欄有個(gè)六邊形按鈕已經(jīng)變?yōu)榧t色
2,設(shè)置斷點(diǎn)锡溯,點(diǎn)擊菜單欄【proxy】勾選【Breakoint Setting ...】這是會(huì)彈出斷點(diǎn)設(shè)置彈窗神郊;
3肴裙,在彈出的斷點(diǎn)設(shè)置彈窗,雙擊想打斷點(diǎn)的接口涌乳,進(jìn)行斷點(diǎn)編輯蜻懦;
4,編輯斷點(diǎn)夕晓,如果修改Request數(shù)據(jù)宛乃,九江Request勾選,如果修改Response數(shù)據(jù)蒸辆,就將Response勾選征炼,當(dāng)然你也可以都勾選;
5躬贡,在手機(jī)上重新進(jìn)行請(qǐng)求谆奥,Charles 會(huì)自動(dòng)進(jìn)行攔截并跳轉(zhuǎn)到請(qǐng)求數(shù)據(jù)修改頁(yè)面;
這時(shí)拂玻,服務(wù)端給我們返回的數(shù)據(jù)就是有關(guān)jmeter的數(shù)據(jù)了
重復(fù)發(fā)送請(qǐng)求
在我們的測(cè)試工作中酸些,可能你會(huì)發(fā)先一個(gè)bug,開發(fā)會(huì)讓你在操作一遍檐蚜,他要查看日志經(jīng)i選哪個(gè)定位分析魄懂,這時(shí)候,在客戶端上進(jìn)行操作一遍就會(huì)麻煩闯第,這是直接用Charles 發(fā)送一遍重復(fù)的請(qǐng)求就可以了市栗,并且,重新發(fā)送請(qǐng)求也可以幫助我們進(jìn)行功能測(cè)試咳短;
選擇需要重新發(fā)送請(qǐng)求的會(huì)話上填帽,直接點(diǎn)擊工具欄【重新按鈕】
Compose編輯接口
在我們的測(cè)試工作中,可能需要發(fā)送不同的參數(shù)進(jìn)行請(qǐng)求咙好。
選擇需要修改的請(qǐng)求篡腌,右鍵選擇【Compose】這時(shí)多出一個(gè)筆的請(qǐng)求;
服務(wù)器壓力測(cè)試
Charles 還有一個(gè)比較有意思的功能敷扫,它能勾簡(jiǎn)單的給服務(wù)器進(jìn)行壓力測(cè)試;
1诚卸,在進(jìn)行壓力測(cè)試的請(qǐng)求會(huì)話上右擊葵第,選擇【Repeat Advanced】
2,在彈出框中合溺,輸入并發(fā)線程數(shù)以及壓力次數(shù)點(diǎn)擊進(jìn)行測(cè)試
本地映射
映射的意思就是指將一個(gè)請(qǐng)求重定向到另外一個(gè)請(qǐng)求卒密,本地映射的含義就是通過修改已有數(shù)據(jù)來(lái)映射指定的接口,使接口數(shù)據(jù)使用本地設(shè)置的數(shù)據(jù)來(lái)做調(diào)試棠赛,
下面我就通過一個(gè)例子位大家講解如果通過Charles 將網(wǎng)絡(luò)請(qǐng)求映射到本地文件
在請(qǐng)求會(huì)話上右鍵選擇【Save Reponse...】將返回信息保存到本地
遠(yuǎn)程映射
遠(yuǎn)程映射的含義就是將你本地的請(qǐng)求地址哮奇,映射到另外一個(gè)遠(yuǎn)程地址上膛腐,相當(dāng)于你的請(qǐng)求地址修改了,下面就通過一個(gè)例子
在菜單欄點(diǎn)擊【Tools】選擇【Remote】進(jìn)行遠(yuǎn)程映射設(shè)置鼎俘。