從接觸測試工作以來,第一款正式使用的軟件就是charles,當(dāng)然在他之前也有用過fiddler,postman等,
不過在使用過charles后其他的工具全被我淘汰了,charles我覺得是一款非常好用的抓包軟件,頁面簡潔大方,功能強(qiáng)大實(shí)用,兼容性好。
哈~我才不會(huì)告訴你我是因?yàn)楫?dāng)時(shí)用的是mac電腦所以只能用charles了~~嘿嘿
Charles 主要的功能包括下面這些:
截取 Http 和 Https 網(wǎng)絡(luò)封包。支持重發(fā)網(wǎng)絡(luò)請(qǐng)求,方便后端調(diào)試。支持修改網(wǎng)絡(luò)請(qǐng)求參數(shù)。支持網(wǎng)絡(luò)請(qǐng)求的截獲并動(dòng)態(tài)修改。支持模擬慢速網(wǎng)絡(luò)。
charles相當(dāng)于一個(gè)插在服務(wù)器和客戶端之間的“過濾器”;
當(dāng)客戶端向服務(wù)器發(fā)起請(qǐng)求的時(shí)候,先到charles進(jìn)行過濾,然后charles在把最終的數(shù)據(jù)發(fā)送給服務(wù)器;
注意:此時(shí)charles發(fā)給服務(wù)器的數(shù)據(jù),不一定是客戶端請(qǐng)求的數(shù)據(jù);charles在接到客戶端的請(qǐng)求時(shí)可以自由的修改數(shù)據(jù),甚至可以直接Block客戶端發(fā)的請(qǐng)求;
服務(wù)器接收請(qǐng)求后的返回?cái)?shù)據(jù),也會(huì)先到charles,經(jīng)過charles過濾后再發(fā)給客戶端;
同理:客戶端接收的數(shù)據(jù),不一定就是服務(wù)器返回的數(shù)據(jù),而是charles給的數(shù)據(jù);
正因?yàn)樯厦娴脑?,所以charles能實(shí)現(xiàn)的功能,對(duì)前端開發(fā)者來說非常有吸引力,相當(dāng)于請(qǐng)求和響應(yīng)都可控的,而且charles為了控制更加方面,提供很多簡潔的操作;
好了,話不多說,進(jìn)入正題:
受限于我當(dāng)前實(shí)用的是windows系統(tǒng),暫時(shí)先為大家講解charles-windows版本,后續(xù)會(huì)更新mac版本
一、charles的下載和安裝
要想下載一個(gè)工具,怎么辦最簡單,在開發(fā)工具里,最方便的方式就去去它的官網(wǎng)下載,當(dāng)然前提是在我們的祖國懷抱內(nèi)~
charles就可以這樣下載,首先百度一下咯
或者直接點(diǎn)擊下載地址:Download a Free Trial of Charles ? Charles Web Debugging Proxy


charles現(xiàn)在出到了4.2.7版本,這個(gè)基本上沒什么影響,一般只要下載最新的版本就可以啦
記得好像是4.0一下不支持http2.0的抓取,所以這點(diǎn)注意一下就ok啦
下載好后進(jìn)入安裝頁面,基本也是一路點(diǎn)下去,記得自己記得安裝目錄

打開安裝目錄,雙擊運(yùn)行charles.exe


卸載的時(shí)候,就更簡單了,直接找到控制面板-程序與功能-卸載或更改程序,然后雙擊卸載就可以了


二、charles的基本介紹
關(guān)于charles有很多很強(qiáng)大的功能,這里由于篇幅限制我只做部分功能說明
*charles提供兩種不同的視圖方式,可自行按需選擇查看


*查看默認(rèn)端口號(hào)“Proxy->Proxy Settings”,默認(rèn)端口號(hào)為8888,可自行修改


*過濾請(qǐng)求
當(dāng)請(qǐng)求雜亂無章時(shí),為了確保我們拿到自己想要的數(shù)據(jù),可以使用filer進(jìn)行過濾關(guān)鍵字



三、charles設(shè)置代理,手機(jī)進(jìn)行抓包
這一步的目的是為了移動(dòng)設(shè)備連接到Charles,這樣移動(dòng)設(shè)備發(fā)起的所有請(qǐng)求才能在Charles中看到
首先確保自己手機(jī)的wifi和電腦在同一網(wǎng)絡(luò)下,千萬不要用4G,那么沒辦法抓包,必須連接wifi
使用Charles工具查看PC本地IP和端口號(hào)(端口號(hào)默認(rèn)為8888,也可自行修改),選擇“Help->Local IP Address”

不過我更喜歡選擇“Help->SSL-Proxying->install charles Root ....Browser”查看,這樣子可以一下子把端口號(hào)和ip看到


拿出我們需要設(shè)置代理的Android手機(jī),找到wifi,長按或者點(diǎn)擊查看wifi詳情(各類型Android手機(jī)方法大同小異,多進(jìn)行嘗試)
然后進(jìn)入到wifi詳情頁面

把代理一欄從無改為手動(dòng),并在里面輸入剛才看到的IP和端口號(hào),例如:192.168.1.x(x為你自己的號(hào)碼,每個(gè)人都不一樣)

點(diǎn)擊保存或者連接,如果沒有則直接返回退出
然后再次進(jìn)入詳情,看看代理一欄是不是已經(jīng)變成了剛才自己輸入的ip和端口號(hào),如果顯示則代表代理設(shè)置成功。
如果繼續(xù)顯示代理為無,則代表剛才你沒有保存,再試一遍
記得如果你不需要用手機(jī)設(shè)置代理了,把代理記得關(guān)掉,不然會(huì)影響你瀏覽某些網(wǎng)頁和應(yīng)用
這時(shí),手機(jī)設(shè)置好了,打開你需要進(jìn)行調(diào)試的app,你會(huì)發(fā)現(xiàn)電腦上charles出現(xiàn)一條提示:

第一個(gè)箭頭標(biāo)注的是你的手機(jī)ip地址。你需要允許該手機(jī)的練級(jí),點(diǎn)擊“Allow”
這個(gè)提示,只會(huì)在手機(jī)首次鏈接電腦的時(shí)候出現(xiàn),同意后后面則不會(huì)出現(xiàn)。
注意,如果你的手機(jī)鏈接時(shí)沒有出現(xiàn)該彈窗,去檢查自己剛才手機(jī)端的代理是否設(shè)置錯(cuò)誤
如果設(shè)置沒有問題,可選擇“Proxy->Access Control Settings”手動(dòng)進(jìn)入Charles的設(shè)置選項(xiàng),添加當(dāng)前手機(jī)的IP

手機(jī)IP查看方式:
進(jìn)入wifi詳情

好了,到此為止,你基本已經(jīng)完成了大半的設(shè)置,基本可以正常進(jìn)行抓包了
但是,部分手機(jī)還需要安裝下載一個(gè)手機(jī)證書才能正常使用,安裝方法如下:
同樣點(diǎn)擊Help->SSL-Proxying->install charles Root ....Browser,查看手機(jī)證書下載


這一段是告訴你,需要你去瀏覽器下載一個(gè)證書
此時(shí)你打開手機(jī)默認(rèn)瀏覽器,然后在網(wǎng)址欄里輸入
chls.pro/ssl
記得,此時(shí)你一定要是代理開啟狀態(tài)
你會(huì)得到一個(gè)文件下載提示,下載后,在瀏覽器下載內(nèi)容里找到剛才那個(gè)crt文件,打開后進(jìn)入命名頁面
可自定義名稱,或者不改。點(diǎn)擊保存。部分手機(jī)此時(shí)會(huì)讓你輸入手機(jī)鎖屏密碼,或者讓你設(shè)置鎖屏,照做就可以了。





出現(xiàn)如下提示代表安裝成功。
我演示使用的手機(jī)是oppo,部分Android手機(jī)證書會(huì)存在安裝問題,比如小米好像需要手動(dòng)安裝,大家可自行百度證書安裝方法,
我后續(xù)會(huì)進(jìn)行更新特殊情況的說明
四、查看charles請(qǐng)求
到此,你的設(shè)備和Charles就建立了連接,可以嘗試在設(shè)備上訪問一個(gè)地址或者app,在Charles左側(cè)視圖就能實(shí)時(shí)看到請(qǐng)求啦~
Charles是通過將自己設(shè)置成代理服務(wù)器來完成抓包的,勾選系統(tǒng)代理后,本地系統(tǒng)(如果通過瀏覽器發(fā)送請(qǐng)求)發(fā)送出去的請(qǐng)求都能被截取下來。因此,如果想只抓取手機(jī)APP發(fā)送的請(qǐng)求的話,可以不勾選WindowsProxy選項(xiàng),這樣在測試時(shí)就不會(huì)被本機(jī)Http請(qǐng)求所干擾。
也就是,去掉這個(gè)勾選的狀態(tài)

后記:
IOS版本先附錄一個(gè)別人的教程,后續(xù)再更新我自己的
地址:http://blog.devtang.com/2015/11/14/charles-introduction/