charles使用

Charles


????是一個(gè)HTTP代理服務(wù)器,HTTP監(jiān)視器,反轉(zhuǎn)代理服務(wù)器,當(dāng)程序連接Charles的代理訪問互聯(lián)網(wǎng)時(shí),Charles可以監(jiān)控這個(gè)程序發(fā)送和接收的所有數(shù)據(jù)。它允許一個(gè)開發(fā)者查看所有連接互聯(lián)網(wǎng)的HTTP通信,這些包括request, response和HTTP headers (包含cookies與caching信息)。


Charles主要功能:


1. 支持SSL代理。可以截取分析SSL的請(qǐng)求。

2. 支持流量控制。可以模擬慢速網(wǎng)絡(luò)以及等待時(shí)間(latency)較長的請(qǐng)求。

3. 支持AJAX調(diào)試。可以自動(dòng)將json或xml數(shù)據(jù)格式化,方便查看。

4. 支持AMF調(diào)試。可以將Flash Remoting 或 Flex Remoting信息格式化,方便查看。

5. 支持重發(fā)網(wǎng)絡(luò)請(qǐng)求,方便后端調(diào)試。

6. 支持修改網(wǎng)絡(luò)請(qǐng)求參數(shù)。

7. 支持網(wǎng)絡(luò)請(qǐng)求的截獲并動(dòng)態(tài)修改。

8. 檢查HTML,CSS和RSS內(nèi)容是否符合W3C標(biāo)準(zhǔn)。

Charles安裝:


????去Charles的官方網(wǎng)站(http://www.charlesproxy.com)下載最新版的相應(yīng)操作系統(tǒng)的Charles安裝包安裝即可。


????Charles是收費(fèi)軟件,可以免費(fèi)試用30天。試用期過后,未付費(fèi)的用戶仍然可以繼續(xù)使用,但是每次使用時(shí)間不能超過30分鐘,并且啟動(dòng)時(shí)將會(huì)有10秒種的延時(shí)。


????因此,該付費(fèi)方案對(duì)廣大用戶還是相當(dāng)友好的,即使你長期不付費(fèi),也能使用完整的軟件功能。只是當(dāng)你需要長時(shí)間進(jìn)行封包調(diào)試時(shí),會(huì)因?yàn)镃harles強(qiáng)制關(guān)閉而遇到影響。

Charles 主要提供兩種查看封包的視圖,分別名為 “Structure” 和 “Sequence”。


? ? 1. Structure 視圖將網(wǎng)絡(luò)請(qǐng)求按訪問的域名分類。

? ? 2. Sequence 視圖將網(wǎng)絡(luò)請(qǐng)求按訪問的時(shí)間排序。


下面將一一介紹這些如何配置和使用


一.?將Charles設(shè)置成系統(tǒng)代理


Charles 是通過將自己設(shè)置成代理服務(wù)器來完成抓包的,勾選系統(tǒng)代理后,系統(tǒng)本地發(fā)出去的請(qǐng)求都能被截取下來。如果只抓取APP的包的話,可關(guān)閉此配置,這樣不會(huì)出現(xiàn)太多的數(shù)據(jù)看著比較亂。

Windows:


????需要注意的是,Chrome 和 Firefox 瀏覽器默認(rèn)并不使用系統(tǒng)的代理服務(wù)器設(shè)置,而 Charles 是通過將自己設(shè)置成代理服務(wù)器來完成封包截取的,所以在默認(rèn)情況下無法截取 Chrome 和 Firefox 瀏覽器的網(wǎng)絡(luò)通訊內(nèi)容。如果你需要截取的話,在 Chrome 中設(shè)置成使用系統(tǒng)的代理服務(wù)器設(shè)置即可,或者直接將代理服務(wù)器設(shè)置成 127.0.0.1:8888 也可達(dá)到相同效果。


二.?截取移動(dòng)設(shè)備上的網(wǎng)絡(luò)請(qǐng)求包


我們?cè)谡{(diào)試移動(dòng)APP時(shí),需要抓取APP發(fā)送的數(shù)據(jù)包,首先進(jìn)行設(shè)置,Proxy -> Proxy Settings默認(rèn)端口是8888,根據(jù)實(shí)際情況可修改。




查看本機(jī)IP地址:Help -> Local IP Addresses




然后配置手機(jī)代理:


IOS和Android配置差不多




打開要調(diào)試的APP,請(qǐng)求就會(huì)先發(fā)送到Charles,然后驗(yàn)證是否允許訪問。




當(dāng)點(diǎn)擊允許后,可以在Proxy -> Access Control Settings里看到可以訪問此代理服務(wù)器列表




注意

如果不小心點(diǎn)擊了拒絕,可以手動(dòng)添加手機(jī)IP/Mac地址到允許訪問列表,或者重啟Charles,手機(jī)再次訪問,會(huì)再次提示選擇。

如果不想每換一個(gè)手機(jī)都要進(jìn)行驗(yàn)證,可以配置允許所有手機(jī)訪問,加入

0.0.0.0/0(IPv4)或::/0(IPv6)

現(xiàn)在就可以抓包了,拿一款我們公司開發(fā)的樂視車聯(lián)APP來做測試:






三.?過濾網(wǎng)絡(luò)請(qǐng)求


通常情況下,網(wǎng)絡(luò)請(qǐng)求是非常大量的,從幾十個(gè)請(qǐng)求里找到我們需要的觀察的某個(gè)請(qǐng)求比較費(fèi)時(shí),那么我們就需要對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行過濾,只監(jiān)控向指定目錄服務(wù)器上發(fā)送的請(qǐng)求。有兩種方法:


1. 在Sequence界面的中部的Filter欄中填入需要過濾出來的關(guān)鍵字。例如我們的服務(wù)器的地址是:*.leautolink.com,那么只需要在Filter欄中填入leautolink即可。(一般用于臨時(shí)過濾)



2. 在Charles的菜單欄選擇"Proxy"->"Recording Settings",然后選擇Include欄,選擇添加一個(gè)項(xiàng)目,然后填入需要監(jiān)控的協(xié)議,主機(jī)地址,端口號(hào)。這樣就可以只截取目標(biāo)網(wǎng)站的封包了。如下圖所示:(固定過濾地址)



四.?代理轉(zhuǎn)發(fā)


? ?實(shí)際開發(fā)時(shí),有這樣的場景,服務(wù)端線上版本有bug,你在本地修改程序后,需要模擬實(shí)際的線上環(huán)境,來驗(yàn)證程序的正確性,最笨的方法就是讓客戶端修改一下APP的調(diào)用地址到你本機(jī),然后重新打一個(gè)版本供你模擬測試,這樣雖然可以,但每次遇到bug都要這么做的話,那效率極其低下,然而Charles為我們解決了這個(gè)問題。


請(qǐng)求轉(zhuǎn)發(fā),把調(diào)用方調(diào)用的地址轉(zhuǎn)發(fā)到你本機(jī)地址的程序進(jìn)行執(zhí)行。

右鍵 -> Map Remote ...




并且配置Tools -> Map Romote



運(yùn)行APP



五. Https請(qǐng)求抓包

默認(rèn)我們是看不到https的請(qǐng)求數(shù)據(jù)的。我們需要安裝證書。



Mac:



雙擊打開Charles Proxy CA




手機(jī)配置完代理(必須的操作)后,瀏覽器打開http://chls.pro/ssl






然后配置Proxy -> SSL Proxying Settings... 添加要抓取的https請(qǐng)求



然后再次請(qǐng)求:


如果不再使用Charles,想刪除手機(jī)里的證書文件怎么刪除呢?

設(shè)置->通用->描述文件與設(shè)備管理,刪除指定的證書即可


Windows:




下一步



然后繼續(xù)下一步直到導(dǎo)入成功。


剩下的配置與Max下配置相同


SSL的問題:


????最近iPhone系統(tǒng)更新到ios 10.3后,用Charles抓包竟然出現(xiàn)了一些問題,https的請(qǐng)求都會(huì)失敗,提示錯(cuò)誤信息為Failure SSLHandshake: Received fatal alert: unknown_ca 和You may need to configure your browser or application to trust the Charles Root Certificate. 然而之前任何問題都沒有,并且相關(guān)設(shè)置都正確:電腦上安裝了Charles的根證書,并且設(shè)置了始終信任,然后手機(jī)上也登錄了http://chls.pro/ssl安裝了描述文件,一切都按正常程序走的,但是錯(cuò)誤始終無法解決.


原因:

????雖然charles的根證書已經(jīng)在安裝列表中顯示,但它是被關(guān)閉的。在iOS 10.3之前,當(dāng)你將安裝一個(gè)自定義證書,iOS會(huì)默認(rèn)信任,不需要進(jìn)一步的設(shè)置。而iOS 10.3之后,安裝新的自定義證書默認(rèn)是不受信任的。如果要信任已安裝的自定義證書,需要手動(dòng)打開開關(guān)以信任證書。


解決:

設(shè)置->通用->關(guān)于本機(jī)->證書信任設(shè)置-> 找到charles proxy custom root certificate然后信任該證書即可.



Windows系統(tǒng)無法上網(wǎng)的問題


????在windows下,如果Charles沒有正常關(guān)閉,或者系統(tǒng)重啟后無法上網(wǎng)的問題,因?yàn)镃harles做了系統(tǒng)代理,當(dāng)上網(wǎng)的時(shí)候,首先先訪問代理服務(wù)器,然后代理再去鏈接網(wǎng)絡(luò),這時(shí)候Charles是非正常關(guān)閉的,只要重新打開Charles即可上網(wǎng)正常,正常關(guān)閉Charles后同樣沒問題。

備注:此文轉(zhuǎn)載至csdn博主胡扯程序,原文地址:https://blog.csdn.net/mxw2552261/article/details/78645118

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 工作中會(huì)需要對(duì)一些有價(jià)值的網(wǎng)頁、應(yīng)用進(jìn)行數(shù)據(jù)采集,那么采集前我們會(huì)對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行解析,因最近想采集一款A(yù)PP的數(shù)據(jù)...
    嗖嗖説閱讀 5,218評(píng)論 2 7
  • 轉(zhuǎn)自http://blog.csdn.net/lmmilove/article/details/50244537 ...
    匿名者joker閱讀 536評(píng)論 0 0
  • 轉(zhuǎn)自http://blog.csdn.net/lmmilove/article/details/50244537 ...
    抓兔子的貓閱讀 25,315評(píng)論 6 11
  • Charles 的簡介 如何安裝 Charles 將 Charles 設(shè)置成系統(tǒng)代理 Charles 常用功能 1...
    微笑的AK47閱讀 1,753評(píng)論 1 1
  • 今天八月四日 在這個(gè)世道上 不管活多久 都得明明白白地做人 做個(gè)聰明人 但往后的日子 我都想要像個(gè)瘋和尚一樣 糊糊...
    fafa喜歡小草莓閱讀 296評(píng)論 0 1