Charles使用教程
一、Charles教程
(一)Charles使用教程?
Charles是一個(gè)HTTP代理/ HTTP監(jiān)視器/反向代理,能夠查看其機(jī)器和Internet之間的所有HTTP和SSL / HTTPS流量。這包括請(qǐng)求,響應(yīng)和HTTP標(biāo)頭(包含cookie和緩存信息)
Charles 是在 Mac /Windows下常用的網(wǎng)絡(luò)封包截取工具,在做 移動(dòng)開發(fā)時(shí),我們?yōu)榱苏{(diào)試與服務(wù)器端的網(wǎng)絡(luò)通訊協(xié)議,常常需要截取網(wǎng)絡(luò)封包來分析。
Charles 通過將自己設(shè)置成系統(tǒng)的網(wǎng)絡(luò)訪問代理服務(wù)器,使得所有的網(wǎng)絡(luò)訪問請(qǐng)求都通過它來完成,從而實(shí)現(xiàn)了網(wǎng)絡(luò)封包的截取和分析。
除了在做移動(dòng)開發(fā)中調(diào)試端口外,Charles 也可以用于分析第三方應(yīng)用的通訊協(xié)議。配合 Charles 的 SSL 功能,Charles 還可以分析 Https 協(xié)議
推薦購(gòu)買正版Charles?
Charles: 網(wǎng)絡(luò)封包分析 開發(fā)者調(diào)試工具
購(gòu)買正版Charles地址:數(shù)碼荔枝商城
正版的優(yōu)點(diǎn):
可以使用賬號(hào)登錄,具有完美的用戶體驗(yàn),有問題可以直接發(fā)工單,不用心驚膽戰(zhàn)的擔(dān)心突然不能用了;
盜版因?yàn)椴荒苡觅~號(hào)登錄,一般數(shù)據(jù)也都是臨時(shí)的,不能使用云相關(guān)的功能。
可以使用最新版的軟件功能,整體體驗(yàn)非常好;
不到200塊的價(jià)格,購(gòu)買Charles后,一次購(gòu)買,終身使用,非常的實(shí)惠。
Charles 相關(guān)?
如果您有前端測(cè)試的需求,推薦 SwitchHosts 這個(gè)小工具,當(dāng)然您如果對(duì) chrome 瀏覽器的在線改 host 感興趣,也可以用下 Host Switch Plus
Charles 和 windows 下的 Fiddler 都是同性質(zhì)的代理抓包工具;
我常借用 Charles 做這些事情
抓取 Http 和 Https 的請(qǐng)求和響應(yīng),抓包是最常用的了。
重發(fā)網(wǎng)絡(luò)請(qǐng)求,方便后端調(diào)試,復(fù)雜和特殊情況下的一件重發(fā)還是非常爽的(捕獲的記錄,直接 repeat 就可以了,如果想修改還可以修改)。
修改網(wǎng)絡(luò)請(qǐng)求參數(shù)(客戶端向服務(wù)器發(fā)送的時(shí)候,可以修改后再轉(zhuǎn)發(fā)出去)。
網(wǎng)絡(luò)請(qǐng)求的截獲和動(dòng)態(tài)修改。
支持模擬慢速網(wǎng)絡(luò),主要是模仿手機(jī)上的 2G/3G/4G 的訪問流程。
支持本地映射和遠(yuǎn)程映射,比如你可以把線上資源映射到本地某個(gè)文件夾下,這樣可以方面的處理一些特殊情況下的 bug 和線上調(diào)試(網(wǎng)絡(luò)的 css,js 等資源用的是本地代碼,這些你可以本地隨便修改,數(shù)據(jù)之類的都是線上的環(huán)境,方面在線調(diào)試);
可以抓手機(jī)端訪問的資源(如果是配置 HOST 的環(huán)境,手機(jī)可以借用 host 配置進(jìn)入測(cè)試環(huán)境)
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ù)。
注意問題
如果想要抓包,第一件事情,就是把 charles 設(shè)置成為本機(jī)和服務(wù)端之間的”過濾器”;
讓所有的網(wǎng)絡(luò)請(qǐng)求全部經(jīng)過 charles,這樣就可以捕獲并記錄到你請(qǐng)求的內(nèi)容和返回?cái)?shù)據(jù)了,原理請(qǐng)參照上面那張圖片;需要注意的是,如果你訪問的是 web,可以把所有請(qǐng)求抓到;
但如果你想抓某些應(yīng)用(比如手機(jī)上的應(yīng)用等),應(yīng)用使用的某些資源,如果沒有向服務(wù)器發(fā)送請(qǐng)求,而是通過調(diào)用內(nèi)部資源的方式進(jìn)行展現(xiàn),那么此時(shí) charles 是抓不到的;驗(yàn)證這個(gè)的方式很簡(jiǎn)單,就是把網(wǎng)絡(luò)斷掉后,如果還可以繼續(xù)展現(xiàn),就是屬于調(diào)用內(nèi)部資源的,這種時(shí)候就不要想著通過抓包工具來捕獲資源了,他都沒有像服務(wù)器發(fā)起請(qǐng)求,手機(jī)點(diǎn)爛也抓不到的。
第一次啟動(dòng) Charles
啟動(dòng) Charles 后,第一次 Charles 會(huì)詢問你是否把 Charles 設(shè)置為系統(tǒng)的代理,如果此時(shí)你忽略了這個(gè)詢問敞口,你可以在后期設(shè)置的;將 Charles 設(shè)置成系統(tǒng)代理:選擇菜單中的 “Proxy” -> “Mac OS X Proxy/windows proxy” 來將 Charles 設(shè)置成系統(tǒng)代理,參考如下,如果 Mac 下有管理密碼,需要輸入密碼后方可進(jìn)行。
(二)Charles官網(wǎng)
請(qǐng)認(rèn)準(zhǔn) charles 唯一官網(wǎng) : www.charlesproxy.com
(三)Charles下載&安裝
Charles下載地址:https://www.charlesproxy.com/latest-release/download.do
根據(jù)不同的系統(tǒng),選擇對(duì)應(yīng)的鏈接下載
Charles安裝
window安裝,Charles下載后,打開安裝程序,按照提示一路下一步,就可以安裝成功了
(四)Charles破解
軟件開發(fā)不易,請(qǐng)盡量支持 Charles 正版!推薦購(gòu)買正版Charles
Charles 破解原理一:文件覆蓋
Charles 4.X.X
下載Charles v4.X.X 并安裝 Charles 下載
安裝后先打開 Charles 一次(Windows 版可以忽略此步驟)
下載破解文件 charles.jar
替換掉原文件夾里的charles.jar
MAC,選擇 Charles, 選擇顯示包內(nèi)容;找到 /Java/charles.jar 所在的目錄,把破解文件覆蓋即可
windows 系統(tǒng);\lib 下面的 charles.jar,把破解文件覆蓋即可
完成!
Charles 破解原理二:注冊(cè)碼進(jìn)行注冊(cè)
在Help窗口內(nèi)選擇 Register Charles。
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
這是屬于注冊(cè)碼進(jìn)行注冊(cè)的方式。
// 適用于Charles任意版本的注冊(cè)碼。
// Charles 4.2目前是最新版,可用。
(五)Charles抓包配置
proxy setting(代理設(shè)置)
設(shè)置的主界面如下:
動(dòng)態(tài)端口
啟用動(dòng)態(tài)端口選項(xiàng)來監(jiān)聽動(dòng)態(tài)端口,每次查詢啟動(dòng)時(shí)選擇。這樣可以避免與計(jì)算機(jī)上可能運(yùn)行的其他網(wǎng)絡(luò)服務(wù)的沖突,包括Charles的其他實(shí)例(如果是共享計(jì)算機(jī))如果你開的端口很多,搞到你自己都記不清楚了,那么推薦你用這個(gè);但是我都是寫好一個(gè)端口的,比如代理寫8888,別的就不會(huì)監(jiān)聽這個(gè)端口了,而且為了手機(jī)方便連接,都是使用指定好的端口。
注意;如果你charles設(shè)置了8888的端口,別的服務(wù)就不能再使用這個(gè)端口號(hào)了,否則沖突會(huì)發(fā)生意外的錯(cuò)誤。
透明的HTTP代理
透明代理使Charles能夠支持不支持HTTP代理服務(wù)器的客戶端,或者不知道他們正在使用HTTP代理服務(wù)器,例如TCP / IP連接由路由器或防火墻重定向到Charles。這里可以被手機(jī)連接;
手機(jī)連接的時(shí)候,http代理那里寫=選手動(dòng),并填寫此時(shí)charles的本機(jī)地址和上面設(shè)置的8888端口即可。
options 里 主要是設(shè)置 繞過代理
這里可以設(shè)置您的瀏覽器/操作系統(tǒng)遇到哪些域名的時(shí)候,使用默認(rèn)而不用Charles;配置的列表使用空格或逗號(hào)分隔,并在Charles配置其代理設(shè)置時(shí)注入瀏覽器。
(六)Charles 設(shè)置HTTPS代理抓包方法及原理
PC設(shè)置https代理抓包
第一步:電腦端安裝 Charles 的 CA 證書(必須)
1、在Charles的菜單欄上選擇“Help”->“SSL Proxying”->"Install Charles Root Certificact",
出現(xiàn)證書安裝頁面,點(diǎn)擊“安裝證書(I)...”,進(jìn)入證書導(dǎo)入向?qū)?#xff0c;下一步...完成安裝
第二步:電腦上charles的SSL抓取設(shè)置(必須)
charles并不是默認(rèn)抓取ssl的,所以即使你安裝完證書之后,Charles 默認(rèn)也并不截取 Https的信息,你需要在SSL proxy里設(shè)置需要抓的域名,因?yàn)閏harles的location配置都是支持通配符的,所以在HOST里設(shè)置一個(gè)”*”就可以了,port不寫;
Charles 手機(jī)抓包HTTPS設(shè)置以及證書安裝
手機(jī)抓包的原理,和PC類似
第一步:設(shè)置charles為允許狀態(tài),并設(shè)置好接入端口;
在Charles的菜單欄上選擇“Proxy”->“Proxy Settings”,填入代理端口8888(注意,這個(gè)端口不一定填寫8888,也可以寫別的端口,但是需要記住這個(gè)端口,因?yàn)檫@里設(shè)置的允許接入的端口,手機(jī)端配置的時(shí)候需要用到),并且勾上”Enable transparent HTTP proxying” 就完成了在Charles上的設(shè)置。如下圖
需要找到charles的本機(jī)IP;點(diǎn)擊HTLP -> local IP Address 可以看到當(dāng)前的本機(jī)IP地址;
也可以在終端打開查看,比如window,cmd下;輸入ipconfig可以查看本機(jī)的IP
如上,charles允許手機(jī)接入的IP和端口是10.36.198.189:8888 在瀏覽器輸入 這個(gè)HOST會(huì)發(fā)現(xiàn)charles會(huì)提示一個(gè)窗口問你是否允許接入;點(diǎn)擊Allow,即可接入代理
第二步:把手機(jī)按照charles的IP和端口進(jìn)行配置;
手機(jī)鏈接wifi,wifi的HTTP代理選擇手動(dòng)那項(xiàng)(安卓類似)
在iPhone的 “設(shè)置”->“無線局域網(wǎng)“中,可以看到當(dāng)前連接的wifi名,通過點(diǎn)擊右邊的詳情鍵,可以看到當(dāng)前連接上的wifi的詳細(xì)信息,包括IP地址,子網(wǎng)掩碼等信息。在其最底部有“HTTP代理”一項(xiàng),我們將其切換成手動(dòng),然后填上Charles運(yùn)行所在的電腦的IP,以及端口號(hào)8888
第三步,手機(jī)配對(duì)成功后,charles彈窗詢問是否允許;
設(shè)置好之后,我們打開iPhone上的任意需要網(wǎng)絡(luò)通訊的程序,就可以看到Charles彈出iPhone請(qǐng)求連接的確認(rèn)菜單
如上圖的彈窗,點(diǎn)擊Allow即可;此時(shí)已經(jīng)配對(duì)成功,開始愉快的抓包吧;
如果您的charles沒有配置過,是抓取不到HTTPS這種加密協(xié)議的內(nèi)容的;
如果需要抓取HTTPS網(wǎng)站的資源,請(qǐng)查看 Charles的HTTPS抓包方法及原理
注意:需要明白一個(gè)可能存在的弊端,如果你把手機(jī)的上網(wǎng)相關(guān)事情委托給了charles,那么當(dāng)charles出錯(cuò)或者沒有開啟的時(shí)候,此時(shí)手機(jī)必定沒有辦法正常上網(wǎng);這個(gè)一定要了解,因?yàn)楹芏嗳税咽謾C(jī)的IP委托給charles進(jìn)行代理后,第二天早晨上本的時(shí)候,手機(jī)wifi會(huì)默認(rèn)鏈接你常用的高清度wifi;而此時(shí)的wifi的設(shè)置里面可能已經(jīng)委托給charles了,但是此時(shí)電腦剛沒有開charles或者重啟后ip變動(dòng)等;造成charles無法正常使用;由此而導(dǎo)致了無法上網(wǎng)的問題;
注意charles此種捕獲方式,只能捕獲發(fā)出請(qǐng)求的資源,如果是APP里,內(nèi)部的代碼和資源,因?yàn)闆]有向服務(wù)器發(fā)情請(qǐng)求,所以這是抓不到的;
判斷是不是調(diào)用內(nèi)部資源,你可以把手機(jī)的網(wǎng)絡(luò)給斷了,如果此時(shí)還可以正常的顯示,說明該資源是寫在APP內(nèi)部的,通過代理的方式是抓不到的;
手機(jī)抓取https
手機(jī)安裝SSL證書(如果你需要抓取手機(jī)訪問的HTTPS網(wǎng)站,需要做此設(shè)置,但如果你不需要手機(jī)抓取HTTPS,就沒有必要安裝了)
和上面類似,也是HTLP下面的 SSL Proxying,選擇”Install Charles Root Certificate on a Mobile Device or remote Browser” (在移動(dòng)設(shè)備或遠(yuǎn)程瀏覽器上安裝SSL證書)
然后會(huì)看到一個(gè)彈窗,提示你該怎么操作
configure your device to use charles as its HTTP proxy on 10.36.198.189.8888,then browse to chls.pro/ssl to download and install the certificate
大概的意思是讓你把手機(jī)上的wifi信息設(shè)置了 HTTP代理,內(nèi)容是10.36.198.189.8888;然后用瀏覽器瀏覽chls.pro/ssl就可以下載并安裝證書了
手機(jī)安裝證書:在瀏覽器中輸入:chls.pro/ssl 下載安裝證書即可(安卓建議不要用手機(jī)自帶瀏覽器下載,可能會(huì)出現(xiàn)安裝不上的情況,如果安裝不上,找到設(shè)置->安全與隱私->加密和憑證->從存儲(chǔ)設(shè)備安裝(安卓下載證書或安裝證書有問題建議使用其他瀏覽器下載)。Ios手機(jī):1.設(shè)置->通用->描述文件與設(shè)備管理,安裝證書;2.通用->關(guān)于本機(jī)->證書信任設(shè)置-開啟)
二、Charles常見操作
(一)過濾域名
方法一:直接過濾域名;
在主界面的中部的 Filter 欄中填入需要過濾出來的關(guān)鍵字。
方法二:修改Include的域名和端口
在 Charles 的菜單欄選擇 “Proxy”->”Recording Settings”,
然后選擇 Include 欄,選擇添加一個(gè)項(xiàng)目,然后填入需要監(jiān)控的協(xié)議,主機(jī)地址,端口號(hào)。
這樣就可以只截取目標(biāo)網(wǎng)站的封包了;
通常情況下,我們使用方法一做封包過濾,方法二做一些唯一的域名抓包,正常情況下,不推薦這種設(shè)置方法;
因?yàn)檫@種方法,你的charles只能抓你配置的域名;
如果某天早晨,你的charles一切正常,訪問也正常,而且在active commections里也看到了某個(gè)域名的請(qǐng)求信息,但是在主界面死活看到獲取到的信息;
不用著急,非常有可能是因?yàn)槟阍O(shè)置了include的指定域名;
而且是設(shè)置后你忘記解除了,導(dǎo)致你一臉懵逼;
這種方法非常不推薦,太粗暴了,除非你這半個(gè)月都只看某個(gè)HOST下的信息,否則千萬千萬別這么搞,很容易在以后使用時(shí)候的忘記解除;
如果你只是為了更清楚的查看某個(gè)域名下的請(qǐng)求和響應(yīng)信息,推薦使用結(jié)構(gòu)視圖模式下的焦點(diǎn)域名設(shè)置;那種模式比這種方法更好,下面是過濾焦點(diǎn)域名后在序列模式下的調(diào)用方法;
方法三:過濾焦點(diǎn)域名
①點(diǎn)擊fillter后面的focused來篩選你的做的focus標(biāo)記文件
②在目標(biāo)的網(wǎng)絡(luò)請(qǐng)求上右鍵,選中focus(此時(shí),該域名已經(jīng)被設(shè)置為一個(gè)焦點(diǎn)標(biāo)記了;
你設(shè)置的焦點(diǎn)域名在"View"->”focused Hosts”里面可以查看和管理
結(jié)構(gòu)視圖,這種模式下的展現(xiàn)更加人性化;
當(dāng)你設(shè)置某個(gè)域名為焦點(diǎn)域名的時(shí)候,會(huì)把當(dāng)前域名單獨(dú)顯示在上面,
而其它的非焦點(diǎn)域名,都會(huì)在other Hosts里顯示;
三、Charles主界面的介紹
主界面
Charles 主要提供兩種查看封包的視圖,分別名為
Structure
Structure/結(jié)構(gòu)視圖,將網(wǎng)絡(luò)請(qǐng)求按訪問的域名分類,比如某個(gè)域名下有n個(gè)資源請(qǐng)求,那么所有此域名下的請(qǐng)求都會(huì)在這里做一個(gè)詳細(xì)的分類;
Sequence
Sequence/序列視圖,將網(wǎng)絡(luò)請(qǐng)求按訪問的時(shí)間排序,按照你的電腦的發(fā)送請(qǐng)求順序進(jìn)行
contents是最常用的一個(gè)標(biāo)簽,其中上半部分是請(qǐng)求,下半部分是響應(yīng);
請(qǐng)求部分中,會(huì)根據(jù)請(qǐng)求的內(nèi)容,而分為很多項(xiàng);
比如如果是表單提交,還會(huì)有form的選項(xiàng)供你查看提交的內(nèi)容(表格圖形化的方式),
最后一項(xiàng)”Raw”是未經(jīng)處理的請(qǐng)求信息,可以理解為,raw左側(cè)的所有項(xiàng)目都是對(duì)raw信息的拆分和美化,以便直觀查看;
當(dāng)然響應(yīng)區(qū)域的raw和其它項(xiàng)目的關(guān)系也是一樣,響應(yīng)部分的Raw是接收到的全部未處理信息;
如果響應(yīng)內(nèi)容是 JSON 格式的,那么 Charles 可以自動(dòng)幫你將 JSON 內(nèi)容格式化,方便你查看。
如果響應(yīng)內(nèi)容是圖片,那么 Charles 可以顯示出圖片的預(yù)覽
右鍵菜單
在網(wǎng)址、域名上右鍵
區(qū)域 1 基本操作 :基本的URL復(fù)制,文件保存,以及選中文件內(nèi)搜索
區(qū)域 2 重寫操作 :重寫發(fā)送請(qǐng)求(調(diào)用接口合適),或者發(fā)到gitlist里
區(qū)域 3 查看區(qū) :排序之類的
區(qū)域 4 設(shè)置關(guān)注 :可以設(shè)置哪些你關(guān)心的或者需要忽略的
區(qū)域 5 清除區(qū) :垃圾清理使用
區(qū)域 6 工具區(qū) :對(duì)應(yīng)常見工具的入口
區(qū)域 7 映射區(qū) :把文件映射到本地或者原創(chuàng)URL
在 overview區(qū)域 和 contents區(qū)域 右鍵
charles overview是請(qǐng)求文件的概覽,對(duì)HTTP/s分析非常重要
四、Charles文件菜單
charles 文件菜單總結(jié)
file(文件菜單)
charles 創(chuàng)建新會(huì)話
使用方式1:File -> new session
使用方式2: Ctrl + N
這不是新的請(qǐng)求意思,是再開一個(gè)標(biāo)簽頁,進(jìn)行抓包的;
Edit(編輯菜單)
charles 偏好設(shè)置
偏好設(shè)置,注意作用如下
視圖選項(xiàng)
啟動(dòng)設(shè)置
警告設(shè)置
焦點(diǎn)host
Focus Host是焦點(diǎn)域名
在序列視圖的時(shí)候,選擇focued后,就會(huì)只保留你的焦點(diǎn)域名
五、Charles代理菜單
一、常用功能開關(guān)區(qū)
stop/start recording 開始/暫停記錄,需要注意就是后面的session1代表當(dāng)前你將要操作的會(huì)話窗口;就是切換是否進(jìn)行捕獲記錄
注意:這里的開關(guān)只是是否記錄信息的開關(guān),并不是charles的開關(guān);也就是說如果你stop recording 那么只是界面上不再抓取信息了,charles還是一直會(huì)工作的
stop/start throttling 開始/暫停節(jié)流,就是模擬手機(jī)上2G/3G/4G的速度,對(duì)應(yīng)工具欄的的小烏龜圖標(biāo)
一般選擇多少網(wǎng)速就可以了,下面默認(rèn)即可;
注意如果你本身網(wǎng)速快;是限速;如果你網(wǎng)速low,你選個(gè)100Mbps的,其實(shí)也到不了的;
enable/disable breakpoints 啟用/禁用斷點(diǎn)
當(dāng)啟用斷點(diǎn)后,再次請(qǐng)求到該接口時(shí),會(huì)出現(xiàn)斷點(diǎn)界面,可以修改參數(shù),修改后點(diǎn)擊Execute即可執(zhí)行
二、常用功能設(shè)置區(qū)
recording settings 記錄設(shè)置
throttle settings 節(jié)流設(shè)置
breakpoint settings 斷點(diǎn)設(shè)置
三、反向代理和端口轉(zhuǎn)發(fā)區(qū)域
reverse proxies 反向代理
正向代理和反向代理的區(qū)別:
正向代理:是代理客戶端,為客戶端收發(fā)請(qǐng)求,使真實(shí)客戶端對(duì)服務(wù)器不可見;在客戶這一端的,替客戶收發(fā)請(qǐng)求(類似現(xiàn)在正常使用的charles的功能)
反向代理:是代理服務(wù)器,為服務(wù)器收發(fā)請(qǐng)求,使真實(shí)服務(wù)器對(duì)客戶端不可見;在服務(wù)器這端的,替服務(wù)器收發(fā)請(qǐng)求,應(yīng)用場(chǎng)景常見是就是請(qǐng)求分發(fā)到多臺(tái)服務(wù)器的負(fù)載均衡應(yīng)用。
一句話就是:
正向代理:代理端代理的是客戶端。
反向代理:代理端代理的是服務(wù)端。
反向代理的設(shè)置
本地端口;
本地主機(jī)上的端口創(chuàng)建反向代理。該字段可能會(huì)自動(dòng)填充一個(gè)可用的端口。如果有另一個(gè)應(yīng)用程序使用該端口,則在反向代理啟動(dòng)時(shí)將收到一條警告消息。
遠(yuǎn)程主機(jī)和端口
作為反向代理的目的地的遠(yuǎn)程主機(jī)的主機(jī)名或IP地址和端口。遠(yuǎn)程端口默認(rèn)為80,這是HTTP的默認(rèn)端口。
重寫重定向
重定向遠(yuǎn)程服務(wù)器的響應(yīng)將被重寫以與反向代理源地址相匹配。默認(rèn)為開。
遠(yuǎn)程服務(wù)器的重定向響應(yīng)是完全限定的URL,即使它們?cè)谕痪W(wǎng)站內(nèi)。
如果重定向到遠(yuǎn)程服務(wù)器地址,則需要將其重寫為反向代理本地地址,否則客戶端將使用重定向URL到遠(yuǎn)程主機(jī),因此不再通過反向代理連接。
保留主機(jī)頭
Host HTTP標(biāo)頭從傳入請(qǐng)求不變地傳遞,而不是正常重寫主機(jī)頭以匹配反向代理遠(yuǎn)程主機(jī)。默認(rèn)為關(guān)閉。
僅當(dāng)您具有特定要求時(shí),才需要保留主機(jī)頭;普通使用的時(shí)候沒有必要使用的。
監(jiān)聽特定地址
如果要指定本地地址以偵聽反向代理,則可以啟用此選項(xiàng)并在此處輸入IP地址。如果要在同一臺(tái)機(jī)器上運(yùn)行多個(gè)網(wǎng)絡(luò)服務(wù),但在同一臺(tái)機(jī)器上的不同IP地址上運(yùn)行,則此功能非常有用。
禁用此選項(xiàng)時(shí),反向代理將綁定到所有可用的本地地址。
port forwarding 端口轉(zhuǎn)發(fā)
端口轉(zhuǎn)發(fā)(Port forwarding),有時(shí)被叫做隧道,是安全殼(SSH) 為網(wǎng)絡(luò)安全通信使用的一種方法。端口轉(zhuǎn)發(fā)是轉(zhuǎn)發(fā)一個(gè)網(wǎng)絡(luò)端口從一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)到另一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的行為,其使一個(gè)外部用戶從外部經(jīng)過一個(gè)被激活的NAT路由器到達(dá)一個(gè)在私有內(nèi)部IP地址(局域網(wǎng)內(nèi)部)上的一個(gè)端口。
端口轉(zhuǎn)發(fā)使您能夠?qū)⒈镜豑CP或UDP端口透明地轉(zhuǎn)發(fā)到遠(yuǎn)程主機(jī)和端口。 所有在端口的請(qǐng)求和回復(fù)可能會(huì)記錄在查爾斯。
端口轉(zhuǎn)發(fā)流量記錄在Charles中作為 socket//hostport/URL
如果您有要使用Charles監(jiān)控的非HTTP應(yīng)用程序,則端口轉(zhuǎn)發(fā)非常有用。
將端口創(chuàng)建到原始目標(biāo)服務(wù)器,然后將客戶端應(yīng)用程序連接到本地端口;
端口轉(zhuǎn)發(fā)對(duì)客戶端應(yīng)用程序是透明的,并使您能夠查看Charles先前可能無法使用的流量
四、charles的代理身份配置區(qū)域
windows proxy Windows代理(開啟整個(gè)系統(tǒng)通過charles作為代理)
五、常用的高級(jí)設(shè)置區(qū)
proxy setting 代理設(shè)置
設(shè)置的主界面如下:
動(dòng)態(tài)端口
啟用動(dòng)態(tài)端口選項(xiàng)來監(jiān)聽動(dòng)態(tài)端口,每次查詢啟動(dòng)時(shí)選擇。這樣可以避免與計(jì)算機(jī)上可能運(yùn)行的其他網(wǎng)絡(luò)服務(wù)的沖突,包括Charles的其他實(shí)例(如果是共享計(jì)算機(jī))如果你開的端口很多,搞到你自己都記不清楚了,那么推薦你用這個(gè);但是我都是寫好一個(gè)端口的,比如代理寫8888,別的就不會(huì)監(jiān)聽這個(gè)端口了,而且為了手機(jī)方便連接,都是使用指定好的端口。
注意;如果你charles設(shè)置了8888的端口,別的服務(wù)就不能再使用這個(gè)端口號(hào)了,否則沖突會(huì)發(fā)生意外的錯(cuò)誤;
透明的HTTP代理
透明代理使Charles能夠支持不支持HTTP代理服務(wù)器的客戶端,或者不知道他們正在使用HTTP代理服務(wù)器,例如TCP / IP連接由路由器或防火墻重定向到Charles。這里可以被手機(jī)連接;
手機(jī)連接的時(shí)候,http代理那里寫=選手動(dòng),并填寫此時(shí)charles的本機(jī)地址和上面設(shè)置的8888端口即可;
options 里 主要是設(shè)置 繞過代理
這里可以設(shè)置您的瀏覽器/操作系統(tǒng)遇到哪些域名的時(shí)候,使用默認(rèn)而不用Charles;配置的列表使用空格或逗號(hào)分隔,并在Charles配置其代理設(shè)置時(shí)注入瀏覽器。
ssl proxy setting ssl代理設(shè)置
最常用的設(shè)置就是第一個(gè)ssl proxying,這里記錄了需要捕獲哪些ssl的信息;
注意,如果你不在這里設(shè)置,雖然你安裝了ssl的charles證書,你依然無法正常捕獲;
通過SSL代理,您的瀏覽器或應(yīng)用程序?qū)⑹盏接蒀harles簽名的證書,而不是來自遠(yuǎn)程Web服務(wù)器的原始證書。這將在您的瀏覽器或應(yīng)用程序中觸發(fā)警告,某些應(yīng)用程序?qū)嶋H上可能會(huì)拒絕該連接。
您可以將瀏覽器或應(yīng)用程序配置為接受Charles的證書;為在這里設(shè)置了通配符,表示為要捕獲記錄所有ssl協(xié)議的請(qǐng)求和響應(yīng)。
access control setting 訪問控制設(shè)置
這個(gè)訪問控制確定誰可以使用這個(gè)charles,
本機(jī)是永遠(yuǎn)都可以訪問的,默認(rèn)的訪問控制列表如果是空的;
意味著除了這臺(tái)電腦以外,沒有任何設(shè)備可以使用charles。
如果你把下面的提示開始,未經(jīng)授權(quán)的設(shè)備連接時(shí)候會(huì)提示你是否允許;
類似下面這種提示框
當(dāng)你手機(jī)訪問的時(shí)候,電腦會(huì)提示的;
這里設(shè)置后的host,連接時(shí)候是無需確認(rèn)的;
extornal proxy setting 外部代理設(shè)置
有時(shí)候您可能需要使用網(wǎng)絡(luò)上的代理服務(wù)器才能訪問Internet。
在這種情況下,您需要為Charles配置外部代理。
您可以為每種代理類型配置身份驗(yàn)證信息。
Charles支持基本身份驗(yàn)證和NTLM身份驗(yàn)證。對(duì)于NTLM身份驗(yàn)證,您可以輸入“域名”選項(xiàng)。
如果您沒有配置身份驗(yàn)證和外部代理請(qǐng)求認(rèn)證,Charles會(huì)將驗(yàn)證請(qǐng)求傳遞給瀏覽器,
就像Charles本身正在請(qǐng)求身份驗(yàn)證一樣。
排除列表
您可以輸入繞過外部代理的loacation列表。
該列表是空格分隔的,每個(gè)location都是一個(gè)主機(jī)或ip地址與可選端口匹配(例如hostname:port),并且支持通配符。
請(qǐng)注意:之前的Charles自動(dòng)在排除location列表中進(jìn)行了前綴匹配。
web interface setting Web界面設(shè)置
Web界面可以讓您使用Web瀏覽器控制查詢,您可以訪問 http://control.charles
的Web界面,當(dāng)查詢運(yùn)行時(shí),您可以啟用此功能并配置下面的訪問控制
首先你必須要開啟web inter face,
否則你訪問
http://control.charles
的時(shí)候就提示你沒有開啟;如下的提示
七、Charles工具菜單(Tools)
charles 工具菜單總結(jié)
主要是下面的功能,具體可以點(diǎn)擊對(duì)應(yīng)菜單查看
禁用緩存
No caching Settings/無緩存工具的用法
通過修改請(qǐng)求和響應(yīng)頭來防止緩存;
無緩存工具
無緩存工具阻止客戶端應(yīng)用程序(如Web瀏覽器)緩存任何資源。因此,請(qǐng)求總是發(fā)送到遠(yuǎn)程站點(diǎn),并且您始終看到最新版本。
適用范圍
該工具可以作用于每個(gè)請(qǐng)求(選中 Enable No Caching 即可),也可以僅對(duì)你配置的HOST啟用(啟用的nocaching同時(shí),請(qǐng)選中 only for selected locations);
當(dāng)用于”only for selected locations”時(shí),可以將no caching的效果限制在你所配置的主機(jī)上;
當(dāng)然location配置也非常靈活;
我比較喜歡用全部禁止,選中 Enable No Caching,并且下面的only選項(xiàng)不要選,就可以了;
不過這樣做也有一個(gè)不好的地方,就是你訪問的時(shí)候,同樣的資源,在視圖中,每調(diào)用一次,就會(huì)出現(xiàn)一次;
關(guān)于WEB緩存
WWW是互聯(lián)網(wǎng)上最受歡迎的應(yīng)用之一,其快速增長(zhǎng)造成網(wǎng)絡(luò)擁塞和服務(wù)器超載,導(dǎo)致客戶訪問延遲增大,WWW服務(wù)質(zhì)量日益顯現(xiàn)出來。緩存技術(shù)被認(rèn)為是減輕服務(wù)器負(fù)載、降低網(wǎng)絡(luò)擁塞、增強(qiáng)WWW可擴(kuò)展性的有效途徑之一,其基本思想是利用客戶訪問的時(shí)間局部性(Temproral Locality)原理,將客戶訪問過的內(nèi)容在Cache中存放一個(gè)副本,當(dāng)該內(nèi)容下次被訪問時(shí),不必連接到駐留網(wǎng)站,而是由Cache中保留的副本提供。
Web內(nèi)容可以緩存在客戶端、代理服務(wù)器以及服務(wù)器端。
研究表明,緩存技術(shù)可以顯著地提高WWW性能,它可以帶來以下好處:
(1)減少網(wǎng)絡(luò)流量,從而減輕擁塞。
(2)降低客戶訪問延遲,其主要原因有:①緩存在代理服務(wù)器中的內(nèi)容,客戶可以直接從代理獲取而不是從遠(yuǎn)程服務(wù)器獲取,從而減小了傳輸延遲②沒有被緩存的內(nèi)容由于網(wǎng)絡(luò)擁塞及服務(wù)器負(fù)載的減輕而可以較快地被客戶獲取。
(3)由于客戶的部分請(qǐng)求內(nèi)容可以從代理處獲取,從而減輕了遠(yuǎn)程服務(wù)器負(fù)載。
(4)如果由于遠(yuǎn)程服務(wù)器故障或者網(wǎng)絡(luò)故障造成遠(yuǎn)程服務(wù)器無法響應(yīng)客戶的請(qǐng)求,客戶可以從代理中獲取緩存的內(nèi)容副本,使得WWW服務(wù)的魯棒性得到了加強(qiáng)。
Web緩存系統(tǒng)也會(huì)帶來以下問題:
(1)客戶通過代理獲取的可能是過時(shí)的內(nèi)容。
(2)如果發(fā)生緩存失效,客戶的訪問延遲由于額外的代理處理開銷而增加。因此在設(shè)計(jì)Web緩存系統(tǒng)時(shí),應(yīng)力求做到Cache命中率最大化和失效代價(jià)最小化。
(3)代理可能成為瓶頸。因此應(yīng)為一個(gè)代理設(shè)定一個(gè)服務(wù)客戶數(shù)量上限及一個(gè)服務(wù)效率下限,使得一個(gè)代理系統(tǒng)的效率至少同客戶直接和遠(yuǎn)程服務(wù)器相連的效率一樣。
http://baike.baidu.com/item/%E7%BC%93%E5%AD%98
No caching的運(yùn)行原理
無緩存工具通過操縱控制緩存響應(yīng)的HTTP頭來防止緩存;
從請(qǐng)求中刪除If-Modified-Since和If-None-Match頭,添加Pragma:no-cache和Cache-control:no-cache。
從響應(yīng)中刪除Expires,Last-Modified和ETag標(biāo)頭,添加Expires:0和Cache-Control: no-cache。
因?yàn)榭蛻舳说乃姓?qǐng)求和服務(wù)端響應(yīng)都經(jīng)過charles進(jìn)行處理,所以charles可以很容易的做到這些
禁用Cookies
禁用Cookie工具
禁用Cookie工具阻止發(fā)送和接收Cookie。 它可以用來測(cè)試網(wǎng)站,就像您的瀏覽器中禁用Cookie一樣。
請(qǐng)注意,網(wǎng)絡(luò)蜘蛛(如Google)通常不支持Cookie,因此該工具也可用于模擬蜘蛛網(wǎng)站的視圖。
適用范圍
該工具可以針對(duì)每個(gè)請(qǐng)求啟用,也可以僅對(duì)選定的位置啟用。選中 enable block cookies 即可
當(dāng)用于某個(gè)域名時(shí),可以將禁用Cookies的效果限制在你所配置的主機(jī)上;同時(shí)選中 only for selected locations 即可;
原理
Cookie頭部從請(qǐng)求中刪除,防止將cookie值從客戶端應(yīng)用程序(例如Web瀏覽器)發(fā)送到遠(yuǎn)程服務(wù)器。
Set-Cookie頭將從響應(yīng)中移除,從而防止客戶端應(yīng)用程序從遠(yuǎn)程服務(wù)器接收cookie的請(qǐng)求。
注意
很多網(wǎng)站的登錄是通過寫入Cookies然后通過讀取Cookies的值來進(jìn)行網(wǎng)站用戶身份和權(quán)限管理的;如果你禁用了Cookies,這將會(huì)到導(dǎo)致你登錄某個(gè)網(wǎng)站的一直,一直停留到登錄頁,這是因?yàn)閷懭肽鶦ookies的方法沒有值導(dǎo)致的;表現(xiàn)就是你一直登錄,雖然賬號(hào)密碼正確但一直還是停留在登錄頁;也就是說如果你不是特意的測(cè)試cookie禁用的情況下,沒有必要使用這個(gè)工具;
選中 only for selected locations 的設(shè)置
設(shè)置單個(gè)匹配可以查看 [charles location的匹配方式.md],設(shè)置的方式都是一樣的;
遠(yuǎn)程映射到URL地址
遠(yuǎn)程映射/Map Remote Settings
功能:把你要請(qǐng)求的地址,映射到一個(gè)遠(yuǎn)程地址;相當(dāng)于把你的請(qǐng)求地址修改了;
遠(yuǎn)程映射工具
遠(yuǎn)程映射工具根據(jù)配置的映射更改請(qǐng)求位置,
以便從新位置“可見的”地提供響應(yīng),就像原始請(qǐng)求一樣。
此映射使您能夠從B站點(diǎn)提供A站點(diǎn)的全部或部分(A是原始的目標(biāo),B是你遠(yuǎn)程映射的地方)。
使用建議
如果您想開發(fā)某個(gè)網(wǎng)站,并且已經(jīng)有了開發(fā)環(huán)境的網(wǎng)站,并希望把剛更新的某些文件應(yīng)用到線上網(wǎng)站,測(cè)試下效果如何,則“遠(yuǎn)程映射”將非常有用。
想達(dá)到同樣的效果也可以通過修改本地HOST的方式來實(shí)現(xiàn);當(dāng)然如果你通過修改host的方式,可能也非常容易,不過這可能需要借助一個(gè)host管理神器 switchhosts
雖然不推薦遠(yuǎn)程映射,但是非常推薦用”本地映射”
locations匹配
每個(gè)位置匹配可能包含協(xié)議,主機(jī),端口和路徑模式,以匹配特定的URL。位置可能包括通配符。
映射到本地
本地映射/Map Local Settings
功能:把需要請(qǐng)求網(wǎng)絡(luò)的文件映射為請(qǐng)求本地文件
本地映射工具
本地映射工具使您能夠使用本地文件,就好比他是你訪問的目標(biāo)網(wǎng)站一部分一樣,流程是,客戶端獲取資源文件的時(shí)候,可以向服務(wù)器正常發(fā)起資源請(qǐng)求,但在charles就已經(jīng)被截?cái)嗔?#xff0c;并且把當(dāng)前的資源請(qǐng)求重定向到你設(shè)置的備注;
本地映射可以大大加快開發(fā)和測(cè)試的效率,否則您將不得不將文件上傳到網(wǎng)站來測(cè)試結(jié)果。使用Map Local,您可以在開發(fā)環(huán)境中安全地測(cè)試。
動(dòng)態(tài)文件(如包含服務(wù)器端腳本的文件)不會(huì)由Map Local執(zhí)行,因此如果文件中有任何腳本將腳本返回到瀏覽器(可能不是預(yù)期的結(jié)果)。
位置匹配
每個(gè)位置匹配可能包含協(xié)議,主機(jī),端口和路徑模式,以匹配特定的URL。位置可能包括通配符。
本地映射
本地映射包含一個(gè)位置匹配和本地目錄,從該目錄嘗試提供匹配。
使用相對(duì)路徑在本地目錄中搜索文件。
相對(duì)路徑是匹配路徑部分之后剩下的請(qǐng)求位置的一部分;
本地映射可以區(qū)分大小寫;
重寫工具
重寫工具/rewrite Srttings and rewrite rule
功能:在通過charles時(shí)修改請(qǐng)求和響應(yīng)
重寫工具
重寫工具可以讓你在有請(qǐng)求響應(yīng)的時(shí)候,修改請(qǐng)求和響應(yīng)的rule。
rule(規(guī)則):添加或更改標(biāo)題或替換響應(yīng)體中的一些文本,編輯相關(guān)的數(shù)據(jù)。
重寫集重寫集可以單獨(dú)激活和停用。每個(gè)集合包含位??置和規(guī)則的列表。這些位置選擇規(guī)則將要運(yùn)行的請(qǐng)求和響應(yīng)。
重寫rule:每個(gè)rule描述單個(gè)重寫操作。rule可能會(huì)影響請(qǐng)求URL的標(biāo)題,正文或部分內(nèi)容;它可以根據(jù)請(qǐng)求或響應(yīng)來操作;
那么它可以定義搜索和替換或者只是替換樣式重寫,重寫rule編輯對(duì)話框中,提供了有關(guān)重寫rule的更多文檔,可以看下。
local匹配 每個(gè)local匹配可能包含協(xié)議,主機(jī),端口和路徑模式,以匹配特定的URL。local可以使用通配符。
調(diào)試
當(dāng)重寫操作無法正常工作時(shí),重寫工具可能難以調(diào)試。如果您有麻煩,請(qǐng)嘗試添加一個(gè)基本的rule,
例如添加一個(gè)非常明顯標(biāo)題的rule,以便您可以看到您寫的rule是否與請(qǐng)求匹配。
還可以在錯(cuò)誤日志中打開調(diào)試,以獲取從Charles窗口菜單訪問的錯(cuò)誤日志中打印的一些調(diào)試信息。
規(guī)則重寫 rewrite rule
每個(gè)rule描述單個(gè)重寫操作
Type 類型
該類型指定要執(zhí)行的重寫操作的類型。重寫規(guī)則類型有四種不同類別;
標(biāo)題規(guī)則,
URL規(guī)則,
查詢參數(shù)規(guī)則,
響應(yīng)狀態(tài)規(guī)則和正文規(guī)則。
頭和查詢參數(shù)規(guī)則分別影響頭字段和查詢字符串參數(shù);添加,修改或刪除標(biāo)頭和參數(shù)。
URL和主體規(guī)則執(zhí)行查找和替換URL和主體的不同部分。響應(yīng)狀態(tài)規(guī)則執(zhí)行查找和替換響應(yīng)狀態(tài)代碼和描述,
例如。 200 OK
Where
選擇應(yīng)用重寫規(guī)則的位置;在請(qǐng)求,響應(yīng)或兩者上。
Match
匹配字段包含請(qǐng)求或響應(yīng)中要匹配的文本,以決定是否觸發(fā)此規(guī)則。您可以將名稱或值留空或同時(shí)保留,以匹配任何值。
如果您將名稱和值字段都留空,您將匹配所有請(qǐng)求/響應(yīng)。
可以啟用正則表達(dá)式支持,為您的匹配提供Perl風(fēng)格的正則表達(dá)式。如果您在正則表達(dá)式中包含組,則可以在匹配字段中使用它們。
除非正則表達(dá)式啟用,否則名稱字段是完全匹配字段,在這種情況下,它支持部分匹配。名稱字段對(duì)于正則表達(dá)式和正常匹配都不區(qū)分大小寫。如果要?jiǎng)?chuàng)建不需要的重寫規(guī)則類型,則可能會(huì)禁用該名稱字段。
值字段是部分匹配,除非您打開匹配整數(shù)值,在這種情況下,它是完全匹配的。值字段對(duì)于正則表達(dá)式和標(biāo)頭和查詢參數(shù)規(guī)則的正常匹配都不區(qū)分大小寫,并且對(duì)URL和正文規(guī)則區(qū)分大小寫。
新建/替換
新/替換字段包含在觸發(fā)此規(guī)則時(shí)在請(qǐng)求或響應(yīng)中添加或替換的文本。將名稱或值留空,以使它們與匹配的名稱或值相同。
如果為匹配啟用了正則表達(dá)式支持,則可以使用$1,$2等引用匹配組。
名稱和值字段的行為取決于匹配。如果存在相應(yīng)的匹配,則該字段將作為匹配文本的替代,否則如果匹配為空,則字段將替換整個(gè)名稱或值。
值字段支持替換第一個(gè)或替換所有模式。如果名稱匹配是正則表達(dá)式,則名稱字段始終以替換優(yōu)先模式運(yùn)行,否則是完全匹配并替換整個(gè)名稱。
如果要?jiǎng)?chuàng)建不需要的重寫規(guī)則類型,則可以禁用名稱或值字段。
建議
如果不按預(yù)期工作,重寫規(guī)則可能難以調(diào)試。經(jīng)常測(cè)試,最好慢慢建立一個(gè)rule。
我很少用到這個(gè),一般都是在已經(jīng)有的請(qǐng)求上再次修改的;然后repeat;
黑名單
Black List Settings
功能:阻止對(duì)匹配HOST的請(qǐng)求;可以直接把請(qǐng)求丟掉,也可以直接返回403狀態(tài)碼
白名單
白名單工具,允許您阻止除選定位置之外的所有請(qǐng)求。
注意:如果一個(gè)請(qǐng)求與“黑名單”和“白名單”同時(shí)匹配成功,則會(huì)被阻止。
白名單工具
白名單是除了你設(shè)置的HOST以外,阻止所有請(qǐng)求。
當(dāng)Charles收到與白名單不匹配的請(qǐng)求時(shí),Charles會(huì)阻止該請(qǐng)求。 您可以選擇Charles是否會(huì)簡(jiǎn)單地關(guān)閉瀏覽器的連接,或者向?yàn)g覽器返回錯(cuò)誤頁面(具有403響應(yīng))。
黑名單工具,用于僅屏蔽選定的域名。 如果一個(gè)請(qǐng)求與“黑名單”和“白名單”都匹配,則會(huì)被阻止。
DNS欺騙
DNS欺騙/DNS Spoofing
功能:通過將您自己的主機(jī)名指定給遠(yuǎn)程地址映射來欺騙DNS查找
一般的開發(fā)流程中,在上線之前都需要在測(cè)試環(huán)境中先行進(jìn)行驗(yàn)證,而此時(shí)手機(jī)客戶端請(qǐng)求的域名是不太容易改變的,可以通過設(shè)置dns方式把域名轉(zhuǎn)發(fā)到測(cè)試機(jī)上,具體設(shè)置Tools->DNS Spoofing Settings
比如要把所有包含xxxxxx.com的域名轉(zhuǎn)到10.0.0.71的服務(wù)器上,其實(shí)用修改HOST的方式是可以解決的;
下面是官方文檔上的介紹:
DNS Spoofing工具使您能夠通過將您自己的主機(jī)名指定給遠(yuǎn)程地址映射來欺騙DNS查找。 當(dāng)請(qǐng)求通過Charles時(shí),您的DNS映射將優(yōu)先。
在DNS更改之前,DNS Spoofing可用于測(cè)試虛擬托管網(wǎng)站,因?yàn)槟臑g覽器將會(huì)像DNS更改一樣運(yùn)行。
DNS更改通常需要長(zhǎng)達(dá)24小時(shí)才能生效,并且沒有DNS欺騙,DNS變更生效后,網(wǎng)站將會(huì)變得非常困難。
您可以將主機(jī)名映射到IP地址或另一個(gè)主機(jī)名,這些名稱將由Charles在DNS中查找以查找其IP地址。
主機(jī)名可能包含通配符。
鏡像工具
鏡像工具會(huì)在你瀏覽指定網(wǎng)站時(shí),把抓取到的文件克隆一份,并保存在你指定的路徑下;
注意:如果你配置是www.aaa.com; 那么只會(huì)抓這個(gè)域名下的文件,這個(gè)域名如果引用了123.abc.com的外部資源(如前端CSS,JS等),引用的外部資源并不會(huì)被保存;
charles一般用于捕獲確定的資源;如果你想把別人的整站clone下來,推薦用httrack這個(gè)工具,charles在clone網(wǎng)站上做的并不好,可以說是非常垃圾的戰(zhàn)五渣。
但儲(chǔ)存目標(biāo)的少量文件還是沒問題的;
保存文件的路徑會(huì)與你瀏覽網(wǎng)站的目錄結(jié)構(gòu)相同,并且charles會(huì)為主機(jī)名創(chuàng)建一個(gè)根目錄。文件名從URL導(dǎo)出并轉(zhuǎn)換為適合的數(shù)據(jù)進(jìn)行保存。
實(shí)際中的應(yīng)用:你可以把訪問的數(shù)據(jù)緩存下來,讓app在沒有server的時(shí)候,通過map Local 映射到你抓取到的文件,這樣app也能繼續(xù)跑;
你也可以用鏡像工具保存網(wǎng)站內(nèi)容后,通過map Local 映射到你抓取到的文件;通過修改文件,達(dá)到本地的線上調(diào)試的功能(你調(diào)試的內(nèi)容因?yàn)橛玫馁Y源都是本機(jī)的,所以并不會(huì)真正的影響到線上文件的);
查詢字符串包含在文件名中。
如果收到相同URL的兩個(gè)響應(yīng),則后面一個(gè)文件會(huì)覆蓋前面的同名文件,因此您保存是鏡像中的最新數(shù)據(jù)。
鏡像工具在數(shù)據(jù)通過Charles時(shí)就開始儲(chǔ)存了,因此不受模擬慢速設(shè)置的限制影響(慢網(wǎng)速只是對(duì)你本地的前端看到效果有影響,但是真正速度還是實(shí)際速度)。
所選HOST
該工具可以針對(duì)每個(gè)請(qǐng)求啟用,也可以僅對(duì)選定的host啟用。
當(dāng)然,如果你設(shè)置host的時(shí)候,所寫的資源,路徑等都可以用模式匹配。星號(hào)”*”和”?”都是可以用的;
替代方法(右鍵save)
在使用“鏡像”工具之后,您也可以右鍵單擊charles目錄中的一個(gè)節(jié)點(diǎn)(文件/文件夾),在捕獲記錄后將所有抓取結(jié)果保存本地,這會(huì)配置鏡像更具更加簡(jiǎn)單,而且避免一些垃圾文件。
唯一的區(qū)別就是鏡像工具不受錄制設(shè)置中設(shè)置的錄制限制,而后來的保存響應(yīng)是有限的,可能在模擬慢速的時(shí)候存在丟失數(shù)據(jù)的情況。
可能會(huì)遇到的坑
如果鏡像工具啟用了,它將導(dǎo)致任何壓縮或編碼的響應(yīng)被解碼。
因此,如果服務(wù)器提供了一份壓縮后的響應(yīng),那么在被傳遞給客戶端之前,它將被Charles解壓縮(charles相當(dāng)于是客戶端和服務(wù)端之間的一個(gè)過濾器,任何請(qǐng)求和響應(yīng)都會(huì)經(jīng)過charles);
即時(shí)返回了一份解壓縮后的文件,一般也不會(huì)有任何影響的;
但如果您已經(jīng)構(gòu)建了自己的客戶端,或者你本身就是想要那種壓縮的響應(yīng),那么此時(shí)你是得不到的;
自動(dòng)存儲(chǔ)
自動(dòng)保存工具 auto_save
“自動(dòng)保存”工具會(huì)在你設(shè)定的間隔后,自動(dòng)保存并清除抓取到的內(nèi)容。假設(shè)你設(shè)置了3分鐘,則每隔三分鐘會(huì)保存一次,
并且保存后會(huì)把charles當(dāng)前的會(huì)話清除掉;(這樣可以保證后三分鐘保存的不會(huì)把之前保存的重復(fù)計(jì)算在內(nèi))
如果您離開Charles監(jiān)視長(zhǎng)時(shí)間的網(wǎng)絡(luò)活動(dòng),并希望將記錄分解為可管理單元,或者避免由于大量數(shù)據(jù)可能發(fā)生的內(nèi)存不足情況,這很有用。
輸入保存間隔(分鐘)和保存會(huì)話文件的目錄。您可以選擇是否在每次運(yùn)行Charles時(shí)啟動(dòng)“自動(dòng)保存”工具,否則,Charles啟動(dòng)時(shí),“自動(dòng)保存”工具將始終被禁用。
您可以選擇以超過小時(shí)的保存間隔分鐘的倍數(shù)啟動(dòng)保存間隔定時(shí)器。您的第一個(gè)保存間隔將縮短以將間隔對(duì)齊到多個(gè)。例如,如果您的保存間隔為15分鐘,并在10:10啟動(dòng)該工具,則第一個(gè)保存間隔將為10:15,以對(duì)齊15分鐘的倍數(shù),然后每15分鐘一次。
會(huì)話文件以其名稱格式y(tǒng)yyyMMddHHmm(即年月日小時(shí)分鐘)保存,以便按字母順序排列時(shí)按正確的順序顯示,比如charles201705180927
客戶端進(jìn)程
客戶端進(jìn)程工具/client_process
顯示使每個(gè)請(qǐng)求的本地客戶端進(jìn)程;
客戶端進(jìn)程工具顯示負(fù)責(zé)進(jìn)行每個(gè)請(qǐng)求的本地客戶端進(jìn)程的名稱。
客戶端進(jìn)程通常是您的Web瀏覽器,例如firefox.exe,但客戶端進(jìn)程工具可以幫助您發(fā)現(xiàn)許多可能未知的HTTP客戶端。
客戶端進(jìn)程名稱顯示在每個(gè)請(qǐng)求的“備注”區(qū)域中。
如果您可以在Charles中看到您不確定起始過程的請(qǐng)求,則客戶端進(jìn)程工具很有用。 它僅適用于在運(yùn)行Charles的計(jì)算機(jī)上發(fā)出的請(qǐng)求。
該工具將在Charles接受每個(gè)連接之前引入一個(gè)短暫的延遲。 延遲通常不明顯或顯著。
指定域名
該工具可以針對(duì)每個(gè)請(qǐng)求啟用,也可以僅對(duì)選定的位置啟用。 當(dāng)用于所選位置時(shí),可以將工具的效果限制在指定的主機(jī)和使用簡(jiǎn)單而強(qiáng)大的模式匹配的路徑上。
修改請(qǐng)求compose
撰寫工具/compose和Compose New
compose 是在原有的請(qǐng)求基礎(chǔ)上,修改;
可以寫各種狀態(tài);
– URL:
– Method:
– GET
– POST
– PUT
– DELETE
– HEAD
– TRACE
– Content type:
– application/x-www-form-urlencoded
– multipart/form-data; boundary=********
– text/plain
– text/xml
– text/json
– text/javascript
– Protocol version:
– HTTP/1.0
– HTTP/1.1
– HTTP/2.0
這個(gè)發(fā)送后,該編輯還繼續(xù)存在,你可以再次修改的;
書寫的時(shí)候,域名上會(huì)出現(xiàn)一個(gè)書寫筆的標(biāo)記,代表這個(gè)文件是可以書寫的;
其實(shí)在文件上右鍵更方便,
新的修改請(qǐng)求
compose New 是新出一個(gè)彈窗,自己手動(dòng)一個(gè)個(gè)的去寫
其他的跟compose差不多
批量重復(fù)請(qǐng)求
重復(fù)發(fā)包工具/repeat
Charles 讓你選擇一個(gè)請(qǐng)求并重復(fù),在測(cè)試后端接口的時(shí)候非常有用;
Charles將請(qǐng)求重新發(fā)送到服務(wù)器,并將響應(yīng)顯示為新請(qǐng)求。
如果您進(jìn)行后端更改并希望測(cè)試它們,用了charles后,你就沒必要在瀏覽器(或其他客戶端)中重復(fù)該請(qǐng)求,charles可以非常方便的完成。
特別是如果重新創(chuàng)建請(qǐng)求需要傳一些列參數(shù)的時(shí)候(比如在游戲中獲得分?jǐn)?shù),比如填寫一大串表單的請(qǐng)求時(shí)候),這將節(jié)省大量的精力。
請(qǐng)求的重復(fù)在Charles內(nèi)部完成,因此您無法在瀏覽器或其他客戶端中查看響應(yīng);
響應(yīng)只有在Charles才能看到。
高級(jí)批量重復(fù)請(qǐng)求
高級(jí)重復(fù)發(fā)包/Repeat Advanced
Advanced Repeat就是重復(fù)發(fā)包多次,這個(gè)功能用來測(cè)試短信轟炸漏洞很方便。
或者測(cè)試后端的性能;
這個(gè)在文件的右鍵菜單上也是有的,在那里操作會(huì)更方便和明確;
驗(yàn)證工具
驗(yàn)證工具/validate
驗(yàn)證工具
Charles可以通過發(fā)送到W3C HTML驗(yàn)證器,W3C CSS驗(yàn)證器和W3C Feed驗(yàn)證器來驗(yàn)證記錄的響應(yīng)。
驗(yàn)證報(bào)告在Charles中顯示,并顯示出與響應(yīng)源中相應(yīng)行的警告或錯(cuò)誤(雙擊錯(cuò)誤消息中的行號(hào)可以切換到源視圖)。
因?yàn)镃harles測(cè)試它記錄的響應(yīng),它可以測(cè)試不容易測(cè)試的場(chǎng)景,例如在提交表單后顯示錯(cuò)誤消息。
重新驗(yàn)證
驗(yàn)證后,您可以從驗(yàn)證結(jié)果中選擇響應(yīng)并重復(fù),重復(fù)原始請(qǐng)求,然后重新驗(yàn)證結(jié)果。
您可以修復(fù)任何驗(yàn)證問題,并重新驗(yàn)證頁面,而無需返回瀏覽器。
– -/這個(gè)目前還不會(huì)用;
發(fā)布Glist
Publish Gist /發(fā)布代碼段
選中某個(gè)文件,點(diǎn)擊Publish Gist,如果你沒有g(shù)ithub,這個(gè)文件將被匿名發(fā)布,您也就無法刪除它;
當(dāng)然你可以在 publish gist setting中,進(jìn)行發(fā)布設(shè)置,可以使用您的github帳戶來保護(hù)發(fā)布;代碼會(huì)被發(fā)布到 https://gist.github.com/
導(dǎo)入/導(dǎo)出設(shè)置
界面
Glist發(fā)布設(shè)置
charles Glist發(fā)布設(shè)置
在這里可以設(shè)置Github賬戶,
發(fā)布list的大小限制;等等
八、Charles幫助菜單
charles的window和help的菜單介紹
其中window菜單中Active connections;可以用它來看charles進(jìn)行了哪些訪問/charles是否還在工作
help菜單中:
Local IP Address :本地的IP地址查看
SSL Proxying :SSL代理輔助,Charles Root Certificate Help 安裝根證書
Install Charles Root Certificate on a mobile device or Remote Browser
總結(jié)
以上是生活随笔為你收集整理的Charles使用教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [html] HTML5中新添加的表单
- 下一篇: 树莓派+ L298N 控制二相四线步进电