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