從接觸測試工作以來朽缴,第一款正式使用的軟件就是charles沧侥,當(dāng)然在他之前也有用過fiddler可霎,postman等,
不過在使用過charles后其他的工具全被我淘汰了宴杀,charles我覺得是一款非常好用的抓包軟件癣朗,頁面簡潔大方,功能強(qiáng)大實用旺罢,兼容性好旷余。
哈~我才不會告訴你我是因為當(dāng)時用的是mac電腦所以只能用charles了~~嘿嘿
Charles 主要的功能包括下面這些:
截取 Http 和 Https 網(wǎng)絡(luò)封包。支持重發(fā)網(wǎng)絡(luò)請求扁达,方便后端調(diào)試正卧。支持修改網(wǎng)絡(luò)請求參數(shù)。支持網(wǎng)絡(luò)請求的截獲并動態(tài)修改跪解。支持模擬慢速網(wǎng)絡(luò)炉旷。
charles相當(dāng)于一個插在服務(wù)器和客戶端之間的“過濾器”;
當(dāng)客戶端向服務(wù)器發(fā)起請求的時候叉讥,先到charles進(jìn)行過濾窘行,然后charles在把最終的數(shù)據(jù)發(fā)送給服務(wù)器;
注意:此時charles發(fā)給服務(wù)器的數(shù)據(jù)图仓,不一定是客戶端請求的數(shù)據(jù)罐盔;charles在接到客戶端的請求時可以自由的修改數(shù)據(jù),甚至可以直接Block客戶端發(fā)的請求救崔;
服務(wù)器接收請求后的返回數(shù)據(jù)惶看,也會先到charles,經(jīng)過charles過濾后再發(fā)給客戶端帚豪;
同理:客戶端接收的數(shù)據(jù)碳竟,不一定就是服務(wù)器返回的數(shù)據(jù),而是charles給的數(shù)據(jù)狸臣;
正因為上面的原理莹桅,所以charles能實現(xiàn)的功能,對前端開發(fā)者來說非常有吸引力烛亦,相當(dāng)于請求和響應(yīng)都可控的诈泼,而且charles為了控制更加方面,提供很多簡潔的操作煤禽;
好了铐达,話不多說,進(jìn)入正題:
受限于我當(dāng)前實用的是windows系統(tǒng)檬果,暫時先為大家講解charles-windows版本瓮孙,后續(xù)會更新mac版本
一唐断、charles的下載和安裝
要想下載一個工具,怎么辦最簡單杭抠,在開發(fā)工具里脸甘,最方便的方式就去去它的官網(wǎng)下載,當(dāng)然前提是在我們的祖國懷抱內(nèi)~
charles就可以這樣下載偏灿,首先百度一下咯
或者直接點擊下載地址:Download a Free Trial of Charles ? Charles Web Debugging Proxy
根據(jù)你的系統(tǒng)版本選擇對應(yīng)的版本
charles現(xiàn)在出到了4.2.7版本丹诀,這個基本上沒什么影響,一般只要下載最新的版本就可以啦
記得好像是4.0一下不支持http2.0的抓取翁垂,所以這點注意一下就ok啦
下載好后進(jìn)入安裝頁面铆遭,基本也是一路點下去,記得自己記得安裝目錄
打開安裝目錄沿猜,雙擊運行charles.exe
安裝好啦~
卸載的時候枚荣,就更簡單了,直接找到控制面板-程序與功能-卸載或更改程序邢疙,然后雙擊卸載就可以了
二棍弄、charles的基本介紹
關(guān)于charles有很多很強(qiáng)大的功能,這里由于篇幅限制我只做部分功能說明
*charles提供兩種不同的視圖方式疟游,可自行按需選擇查看
structure視圖是將網(wǎng)絡(luò)請求按訪問的域名分類呼畸,也就是理解為文件夾類型
Sequence 視圖是將網(wǎng)絡(luò)請求按訪問的時間排序,理解為單個文件
*查看默認(rèn)端口號“Proxy->Proxy Settings”颁虐,默認(rèn)端口號為8888蛮原,可自行修改
*過濾請求
當(dāng)請求雜亂無章時,為了確保我們拿到自己想要的數(shù)據(jù)另绩,可以使用filer進(jìn)行過濾關(guān)鍵字
過濾前
過濾后
三儒陨、charles設(shè)置代理,手機(jī)進(jìn)行抓包
這一步的目的是為了移動設(shè)備連接到Charles笋籽,這樣移動設(shè)備發(fā)起的所有請求才能在Charles中看到
首先確保自己手機(jī)的wifi和電腦在同一網(wǎng)絡(luò)下蹦漠,千萬不要用4G,那么沒辦法抓包车海,必須連接wifi
使用Charles工具查看PC本地IP和端口號(端口號默認(rèn)為8888笛园,也可自行修改),選擇“Help->Local IP Address”
我的電腦本地ip地址為:192.168.1.159
不過我更喜歡選擇“Help->SSL-Proxying->install charles Root ....Browser”查看侍芝,這樣子可以一下子把端口號和ip看到
這里只是我的研铆,你們的IP肯定跟我不一樣,千萬不要填我的
拿出我們需要設(shè)置代理的Android手機(jī)州叠,找到wifi棵红,長按或者點擊查看wifi詳情(各類型Android手機(jī)方法大同小異,多進(jìn)行嘗試)
然后進(jìn)入到wifi詳情頁面
把代理一欄從無改為手動咧栗,并在里面輸入剛才看到的IP和端口號逆甜,例如:192.168.1.x(x為你自己的號碼虱肄,每個人都不一樣)
輸入自己的主機(jī)名和端口
點擊保存或者連接,如果沒有則直接返回退出
然后再次進(jìn)入詳情交煞,看看代理一欄是不是已經(jīng)變成了剛才自己輸入的ip和端口號浩峡,如果顯示則代表代理設(shè)置成功。
如果繼續(xù)顯示代理為無错敢,則代表剛才你沒有保存,再試一遍
記得如果你不需要用手機(jī)設(shè)置代理了缕粹,把代理記得關(guān)掉稚茅,不然會影響你瀏覽某些網(wǎng)頁和應(yīng)用
這時,手機(jī)設(shè)置好了平斩,打開你需要進(jìn)行調(diào)試的app亚享,你會發(fā)現(xiàn)電腦上charles出現(xiàn)一條提示:
第一個箭頭標(biāo)注的是你的手機(jī)ip地址。你需要允許該手機(jī)的練級绘面,點擊“Allow”
這個提示欺税,只會在手機(jī)首次鏈接電腦的時候出現(xiàn),同意后后面則不會出現(xiàn)揭璃。
注意晚凿,如果你的手機(jī)鏈接時沒有出現(xiàn)該彈窗,去檢查自己剛才手機(jī)端的代理是否設(shè)置錯誤
如果設(shè)置沒有問題瘦馍,可選擇“Proxy->Access Control Settings”手動進(jìn)入Charles的設(shè)置選項歼秽,添加當(dāng)前手機(jī)的IP
手機(jī)IP查看方式:
進(jìn)入wifi詳情
好了,到此為止情组,你基本已經(jīng)完成了大半的設(shè)置燥筷,基本可以正常進(jìn)行抓包了
但是,部分手機(jī)還需要安裝下載一個手機(jī)證書才能正常使用院崇,安裝方法如下:
同樣點擊Help->SSL-Proxying->install charles Root ....Browser肆氓,查看手機(jī)證書下載
chls.pro/ssl
這一段是告訴你,需要你去瀏覽器下載一個證書
此時你打開手機(jī)默認(rèn)瀏覽器底瓣,然后在網(wǎng)址欄里輸入
chls.pro/ssl
記得谢揪,此時你一定要是代理開啟狀態(tài)
你會得到一個文件下載提示,下載后濒持,在瀏覽器下載內(nèi)容里找到剛才那個crt文件键耕,打開后進(jìn)入命名頁面
可自定義名稱,或者不改柑营。點擊保存屈雄。部分手機(jī)此時會讓你輸入手機(jī)鎖屏密碼,或者讓你設(shè)置鎖屏官套,照做就可以了酒奶。
出現(xiàn)如下提示代表安裝成功蚁孔。
我演示使用的手機(jī)是oppo,部分Android手機(jī)證書會存在安裝問題惋嚎,比如小米好像需要手動安裝杠氢,大家可自行百度證書安裝方法,
我后續(xù)會進(jìn)行更新特殊情況的說明
四另伍、查看charles請求
到此鼻百,你的設(shè)備和Charles就建立了連接,可以嘗試在設(shè)備上訪問一個地址或者app摆尝,在Charles左側(cè)視圖就能實時看到請求啦~
Charles是通過將自己設(shè)置成代理服務(wù)器來完成抓包的温艇,勾選系統(tǒng)代理后,本地系統(tǒng)(如果通過瀏覽器發(fā)送請求)發(fā)送出去的請求都能被截取下來堕汞。因此勺爱,如果想只抓取手機(jī)APP發(fā)送的請求的話,可以不勾選WindowsProxy選項讯检,這樣在測試時就不會被本機(jī)Http請求所干擾琐鲁。
也就是,去掉這個勾選的狀態(tài)
后記:
IOS版本先附錄一個別人的教程人灼,后續(xù)再更新我自己的
地址:http://blog.devtang.com/2015/11/14/charles-introduction/