轉載:https://www.axihe.com/tools/charles/main/readme.html
Charles 主要提供兩種查看封包的視圖,分別名為
- Structure
- Structure/結構視圖,將網絡請求按訪問的域名分類,比如某個域名下有n個資源請求,那么所有此域名下的請求都會在這里做一個詳細的分類;
- Sequence
- Sequence/序列視圖,將網絡請求按訪問的時間排序,按照你的電腦的發送請求順序進行。
contents是最常用的一個標簽,其中上半部分是請求,下半部分是響應;
請求部分中,會根據請求的內容,而分為很多項;
比如如果是表單提交,還會有form的選項供你查看提交的內容(表格圖形化的方式),
最后一項”Raw”是未經處理的請求信息,可以理解為,raw左側的所有項目都是對raw信息的拆分和美化,以便直觀查看;
當然響應區域的raw和其它項目的關系也是一樣,響應部分的Raw是接收到的全部未處理信息;
如果響應內容是 JSON 格式的,那么 Charles 可以自動幫你將 JSON 內容格式化,方便你查看。
如果響應內容是圖片,那么 Charles 可以顯示出圖片的預覽。
頂部菜單欄
charles 右鍵菜單
在網址/域名上右鍵
可以獲得下面菜單
- 區域 1 基本操作 :基本的URL復制,文件保存,以及選中文件內搜索
- 區域 2 重寫操作 :重寫發送請求(調用接口合適),或者發到gitlist里
- 區域 3 查看區 :排序之類的
- 區域 4 設置關注 :可以設置哪些你關心的或者需要忽略的
- 區域 5 清除區 :垃圾清理使用
- 區域 6 工具區 :對應常見工具的入口
- 區域 7 映射區 :把文件映射到本地或者原創URL
在 overview區域 和 contents區域 右鍵
右鍵可以獲得下面操作的入口
原理類似上面介紹的,可以對請求和響應的查看格式進行設置;
在Chart區域右鍵
這里沒啥介紹的,就是復制和儲存圖表信息的
charles overvoew
這里是請求文件的概覽
charles 文件菜單總結
一、file(文件菜單)
需要注意的是
“導入”和”導出”這個功能在和別人溝通的時候用,
比如你向第三方工具/類庫開發人員求助某個功能,或者有BUG怎么避開;
他們一般會讓你提供抓包到時候收到的文件,或者應用場景之類的;
你可以導出你捕捉到的信息,發送給別人(類似PS里的PSD源文件),但是僅僅是儲存當前的設置,其實我認為並沒有什么鳥用;其它窗口的Imporet和export分別代表當前的配置儲存和導出,碰到就不再復述了;
別人收到后,在charles里打開就可以看到同樣的抓包信息了,方便遠程分析和交流;
charles 創建新會話
使用方式1:
File
->new session
使用方式2: Ctrl + N
這不是新的請求意思,是再開一個標簽頁,進行抓包的;
charles 編輯菜單總結
charles 查找
這個還是非常常用的;需要了解
查找需要了解的關鍵字是:
- 查找的內容
- 正則匹配復雜多數據
- 大小寫匹配
- 全文匹配
- 查找范圍
- 當前會話
- 當前路徑
- 自定義路徑
- 再什么位置查找
- 請求 URL
- 請求頭
- 請求主體
- 響應頭
- 響應主體
- 查找結果
- 上下定位
charles 偏好設置
charles 視圖菜單總結
charles 視圖菜單總結
Charles的視圖菜單里的東西其實是非常常用的功能;
但是我們一般是不需要從這里點進來的;
里面,無非是查看的視圖結構(按照域名和按照訪問時間)
然后是一些概覽之類的;如下圖
charles 結構體
Charles 主要提供兩種查看封包的視圖,分別名為
- Structure/結構視圖
- Sequence/序列視圖
Structure/結構視圖
將網絡請求按訪問的域名分類,比如某個域名下有n個資源請求,那么所有此域名下的請求都會在這里做一個詳細的分類
Sequence/序列視圖
將網絡請求按訪問的時間排序,按照你的電腦的發送請求順序進行
charles 高亮Hosts
ocus Host是焦點域名的;這里配置好的可以在結構視圖中,單獨拎出來顯示;
如下圖,在把zhubangbang.com
設為焦點域名,在視圖中是下圖這么展示的;
在序列視圖的時候,是按照下面這么展示的;
選擇focued后,就會只保留你的焦點域名;
charles中proxy菜單的介紹
這里其實都是常用的功能;
大概可以分為5個大塊,看下分割線就可以了;
一、常用功能開關區
- stop/start recording 開始/暫停記錄
- stop/start throttling 開始/暫停節流
- enable/disable breakpoints 啟用/禁用斷點
二、常用功能設置區
- recording settings 記錄設置
- throttle settings 節流設置
- breakpoint settings 斷點設置
三、反向代理和端口轉發區域
- reverse proxies 反向代理
- port forwarding 端口轉發
四、charles的代理身份配置區域
- windows proxy Windows代理(開啟整個系統通過charles作為代理)
- mozilla firefox proxy 火狐代理
五、常用的高級設置區
- proxy setting 代理設置
- ssl proxy setting ssl代理設置
- access control setting 訪問控制設置
- extornal proxy setting 外部代理設置
- web interface setting Web界面設置
顯示websocket的設置;
charles 開始/暫停記錄
1.1、 stop/start recording 和 2.1 recording settings
是常用的功能了;這里需要注意就是后面的session1代表當前你將要操作的會話窗口;就是切換是否進行捕獲記錄;
注意:這里的開關只是是否記錄信息的開關,並不是charles的開關;也就是說如果你stop recording 那么只是界面上不再抓取信息了,charles還是一直會工作的;
如果你想實現,你可以在window菜單喜愛 active connerctions 查看當前活動的連接信息,你訪問的時候,這里會一直記錄的;
這個功能是和下面是常用工具欄中一個”類似單選框”的圖標是一個功能;
限制記錄大小;限制記錄的歷史
設置記錄的選項
這個Include/包含設置,如果你用的不恰當,很可能就把你自己給坑了;
如果你些了百度的域名進入,那就是charles值抓取百度的訪問記錄;其他域名的統統跳過;你可能感覺這並沒有什么問題,畢竟這可以讓你集中注意力的;但是如果你忘記關了,或許過了某一天,你又開始進行抓包設置了,當時你會看到charles雖然打開的,你也開了star recording,而且也可以正常訪問;但是記錄面板屁都沒有;如果你遇到這種情況,你要記住,你遇到的問題可能就是設置了這里;因為只有你設置的才有記錄信息啊;個人非常不建議這么用,你可以通過焦點域名來規避可能存在的這種問題;
如果你因為特殊原因不得不使用這里的設置,那么設置前你一定要清楚,你下次再次進入的時候可能會存在沒有記錄信息的情況;
“只有與你設置的信息才會記錄,如果列表為空,除非在exclude里有排除信息,否則將記錄所有請求”
下面這個選項就是排除的;
如果你把這里的設置了排除www.baidu.com域名下的所有設置,那么當你訪問www.baidu.com的時候,就不會被記錄
同時在include和exclude里設置www.baidu.com ,那么該域名會被屏蔽;
charles 開始/暫停模擬慢網速
charles 開始/暫停模擬慢網速
1.2、 stop/start throttling 和 2.2 throttling settings
暫時開始慢網速,這個說實話,我自己是不常用的,也就偶爾上線測試看下,或者查看可能存在的加載導致錯誤,很多次上線錢我甚至都忘記看了;
這個說的直白點,就是模擬手機上2G/3G/4G的速度;讓你感受下慢網速的蛋疼之處,從而逼迫你優化你的代碼;嗯,就是這樣的功能;
同時需要注意你的慢速設置,當你不用的時候請記得關閉它,否則訪問速度就是你設置的限制速度。。
這個對應工具欄的的小烏龜圖標,
設置如下
一般選擇多少網速就可以了,下面默認即可;
注意如果你本身網速快;是限速;如果你網速low,你選個100Mbps的,其實也到不了的;
charles 啟用/禁用斷點
1.3、 enable/disable breakpoints 和 2.3 breakpoints settings
斷點設置是常用的了,沒啥好說的了,可以設置你需要斷點的域名等;
正向代理和反向代理的區別:
正向代理:是代理客戶端,為客戶端收發請求,使真實客戶端對服務器不可見;在客戶這一端的,替客戶收發請求(類似現在正常使用的charles的功能)
反向代理:是代理服務器,為服務器收發請求,使真實服務器對客戶端不可見;在服務器這端的,替服務器收發請求,應用場景常見是就是請求分發到多台服務器的負載均衡應用。
一句話就是:
正向代理:代理端代理的是客戶端。
反向代理:代理端代理的是服務端。
反向代理的設置
本地端口;
本地主機上的端口創建反向代理。該字段可能會自動填充一個可用的端口。如果有另一個應用程序使用該端口,則在反向代理啟動時將收到一條警告消息。
例如。給定本地端口8001,您將連接到http:// localhost:8001 /
遠程主機和端口
作為反向代理的目的地的遠程主機的主機名或IP地址和端口。遠程端口默認為80,這是HTTP的默認端口。
例如。輸入 www.axihe.com
的遠程主機和80的遠程端口,然后http//localhost8001
/將像您已連接到https://www.axihe.com/
重寫重定向
重定向遠程服務器的響應將被重寫以與反向代理源地址相匹配。默認為開。
遠程服務器的重定向響應是完全限定的URL,即使它們在同一網站內。
如果重定向到遠程服務器地址,則需要將其重寫為反向代理本地地址,否則客戶端將使用重定向URL到遠程主機,因此不再通過反向代理連接。
保留主機頭
Host HTTP標頭從傳入請求不變地傳遞,而不是正常重寫主機頭以匹配反向代理遠程主機。默認為關閉。
僅當您具有特定要求時,才需要保留主機頭;普通使用的時候沒有必要使用的。
監聽特定地址
如果要指定本地地址以偵聽反向代理,則可以啟用此選項並在此處輸入IP地址。如果要在同一台機器上運行多個網絡服務,但在同一台機器上的不同IP地址上運行,則此功能非常有用。
禁用此選項時,反向代理將綁定到所有可用的本地地址。
charles 端口轉發
端口轉發
端口轉發(Port forwarding),有時被叫做隧道,是安全殼(SSH) 為網絡安全通信使用的一種方法。端口轉發是轉發一個網絡端口從一個網絡節點到另一個網絡節點的行為,其使一個外部用戶從外部經過一個被激活的NAT路由器到達一個在私有內部IP地址(局域網內部)上的一個端口。
端口轉發使您能夠將本地TCP或UDP端口透明地轉發到遠程主機和端口。 所有在端口的請求和回復可能會記錄在查爾斯。
端口轉發流量記錄在Charles中作為 socket//hostport/URL
如果您有要使用Charles監控的非HTTP應用程序,則端口轉發非常有用。
將端口創建到原始目標服務器,然后將客戶端應用程序連接到本地端口;
端口轉發對客戶端應用程序是透明的,並使您能夠查看Charles先前可能無法使用的流量
例子
您可以將本地主機上的TCP端口2525轉發到遠程主機上的端口25。
然后當您連接到localhost時:2525 Charles將透明地將流量轉發到遠程主機,就像您直接連接一樣。
您會看到在Charles中記錄的流量為 socket//localhost2525 /。
當然了,這些功能我平時用不多;
將charles設置為chrome的代理
需要注意的是,Chrome 和 Firefox 瀏覽器並不一定使用的就是本機,可能是一些代理工具,而 Charles 是通過將自己設置成代理服務器來完成資源記錄的,所以如果你的charles無法截取 Chrome 和 Firefox 瀏覽器的網絡請求內容,需要在瀏覽器里做下修改。在 Chrome 中設置成使用系統的代理服務器設置即可,或者直接將代理服務器設置成 127.0.0.1:8888 也可達到相同效果。
備注:如果您的chrome有用過改HOST的擴展工具(比如你用了 Host Switch Plus 這個擴展工具),請暫時關閉;否則chrome會通過你的擴展控制,不能使用charles;你的chrome中可能會看到您的網絡代理設置是由擴展程序管理的。 這種的提示;如果你有修改HOST或者用host進行FQ的需求,我更加推薦你使用 SwitchHosts 這個工具;
charles 代理設置
charles的代理身份配置區域
這里應該沒啥好說的了,
window/MAXCos proxy 是charles的代理啟用開關;
如果你選中,則表示電腦使用charles作為代理(這里就是正向代理),取消同理;
因為為不用火狐瀏覽器,下面也是一樣的道理,就不做說明了;
注意;如果你使用的是chrome,並且有用chrome的host相關擴展工具;
請暫時關閉你的chrome擴展,並把代理設置為本機,否則charles是捕獲不到的;
如上圖,此時為使用了Host Switch Plus 這個host管理工具,此時為在chrome里是所有訪問,都不會出現在charles里;
(如果你只想看到手機上的訪問,電腦的chrome全部不捕獲,可以使用擴展工具的方法,暫時避免,可以讓你更集中);
關閉擴展程序后,默認即可,或者在 Chrome 中設置成使用系統的代理服務器設置即可,或者直接將代理服務器設置成 127.0.0.1:8888 也可達到相同效果。
proxy setting
動態端口
啟用動態端口選項來監聽動態端口,每次查詢啟動時選擇。這樣可以避免與計算機上可能運行的其他網絡服務的沖突,包括Charles的其他實例(如果是共享計算機)如果你開的端口很多,搞到你自己都記不清楚了,那么推薦你用這個;但是我都是寫好一個端口的,比如代理寫8888,別的就不會監聽這個端口了,而且為了手機方便連接,都是使用指定好的端口。
注意;如果你charles設置了8888的端口,別的服務就不能再使用這個端口號了,否則沖突會發生意外的錯誤;
透明的HTTP代理
透明代理使Charles能夠支持不支持HTTP代理服務器的客戶端,或者不知道他們正在使用HTTP代理服務器,例如TCP / IP連接由路由器或防火牆重定向到Charles。這里可以被手機連接;
手機連接的時候,http代理那里寫=選手動,並填寫此時charles的本機地址和上面設置的8888端口即可;
options 里 主要是設置 繞過代理
這里可以設置您的瀏覽器/操作系統遇到哪些域名的時候,使用默認而不用Charles;配置的列表使用空格或逗號分隔,並在Charles配置其代理設置時注入瀏覽器。 有關詳細信息,請參閱操作系統和瀏覽器特定選項卡。
后面系統代理和火狐瀏覽器的就不寫了,主要是一些開關和配置,因為也不用火狐,都默認就可以了;
charles SSL代理設置
這里最常用的設置就是第一個ssl proxying,這里記錄了需要捕獲哪些ssl的信息;
注意,如果你不在這里設置,雖然你安裝了ssl的charles證書,你依然無法正常捕獲;
通過SSL代理,您的瀏覽器或應用程序將收到由Charles簽名的證書,而不是來自遠程Web服務器的原始證書。這將在您的瀏覽器或應用程序中觸發警告,某些應用程序實際上可能會拒絕該連接。
您可以將瀏覽器或應用程序配置為接受Charles的證書;
具體請查看 http://www.charlesproxy.com/ssl 的說明,或者“幫助”菜單中的“SSL代理”菜單。
為在這里設置了通配符,表示為要捕獲記錄所有ssl協議的請求和響應;
具體請查看 Charles的HTTPS抓包方法及原理;
charles 訪問控制設置
access control settings 訪問賬戶設置;
這里可以配置連接到charles時的一些配置;
這個訪問控制確定誰可以使用這個charles,
本機是永遠都可以訪問的,默認的訪問控制列表如果是空的;
意味着除了這台電腦以外,沒有任何設備可以使用charles。
如果你把下面的提示開始,未經授權的設備連接時候會提示你是否允許;
類似下面這種提示框
當你手機訪問的時候,電腦會提示的;
這里設置后的host,連接時候是無需確認的;
charles 外部代理設置
有時候您可能需要使用網絡上的代理服務器才能訪問Internet。
在這種情況下,您需要為Charles配置外部代理。
您可以為每種代理類型配置身份驗證信息。
Charles支持基本身份驗證和NTLM身份驗證。對於NTLM身份驗證,您可以輸入“域名”選項。
如果您沒有配置身份驗證和外部代理請求認證,Charles會將驗證請求傳遞給瀏覽器,
就像Charles本身正在請求身份驗證一樣。
排除列表
您可以輸入繞過外部代理的loacation列表。
該列表是空格分隔的,每個location都是一個主機或ip地址與可選端口匹配(例如hostname:port),並且支持通配符。
請注意:之前的Charles自動在排除location列表中進行了前綴匹配。
在Charles 3.5中更改了支持全局通配符的系統。
charles Web界面設置
charles Web界面設置
Web Inerface
Web界面可以讓您使用Web瀏覽器控制查詢,您可以訪問 http://control.charles
的Web界面,當查詢運行時,您可以啟用此功能並配置下面的訪問控制;
首先你必須要開啟web inter face,否則你訪問
http://control.charles
的時候就提示你沒有開啟;如下的提示;
33 Charles Web Interface
The Web Interface is disabled. You can enable it in the Web Interface Settings in the Proxy menu.