charles 简单使用
From:https://www.cnblogs.com/wenjun145/p/12995535.html
1、下載安裝
1. 下載地址:https://www.charlesproxy.com/latest-release/download.do
?2. 下載之后安裝。按照默認next 即可,然后選擇路徑。
3. charles 。PJ:https://www.zzzmode.com/mytools/charles/
按照下方文字填好,點擊生成,會生成一個 jar 包,這個 jar 包是本地 lib 中已經存在的,將它替換。
再次重啟即可。。。
2、安裝證書
?在彈出的 證書窗口中 ---> 安裝證書 ---> 本地計算機 ---> 證書存儲( 瀏覽 )---> 手信任的根證書頒發機構 ---> 下一步 ---> 完成
- http 代理:菜單欄 Proxy ---->?勾選 "Windows Proxy"?,抓取電腦本地發送的請求,展開相關域
- https 代理:菜單欄 Proxy --->?SSL Proxying Settings ---> 勾選 "Enable SSL Proxying" 。
? ? 允許所有SSL代理:Add ---> Host : * 和 Port : 443??。這樣設置就可以使得所有帶鎖請求允許被操作
移動端配置
- 查看 Charles 端口:Proxy --->?Proxy Settings --->?Port:8888,勾選 "Enable transpare proxying"
- 查看電腦 IP:Help --->?Local IP Address
- 手機端 WiFi 配置:WiFi --->?修改網絡 --->?代理?--->?然后輸入電腦IP、端口(代理端口8888)
- 返回 Charles,界面彈出連接 IP 提示,點擊 Allow --->?完成配置
設置好代理后,需要安裝 charles 的 證書,安裝好證書后,才能解密 https 的流量。。。
?
3、Charles 基本功能
Charles 工具的幾個重要按鈕:
- 掃帚 圖標:清屏
- 圓點 圖標:抓包 / 停止抓包
- 鎖 圖標:開始 / 停止? SSL 代理
- 烏龜 圖標:模擬弱網絡( 流量控制 )
- 六邊形 圖標:斷點
- 鋼筆圖標:構造一個請求,然后發送,即模擬請求
- 刷新 圖標:重新發送選中的請求
- 對勾:
- 工具 圖標:一些工具。斷點,映射,篡改,DNS 洪泛
- 設置 圖標:設置
界面 Structure 模式( 按域名網站顯示 ):
- 以域名劃分請求信息,便于定位需求分析和處理的數據
- 請求的數據結構一目了然
- 關鍵字段:Overview 即?概要,?Contents :即?內容
Sequence 模式( 按請求順序顯示 ):
- 以數據請求速度快慢的順序去執行,請求快的就在前面顯示,可以清晰的看到全部請求,以及請求中的資源請求、圖片、文本、音樂等。其中,Filter 可以過濾請求
過濾抓取請求
開始抓包后,隨著時間的推移,抓取到的網絡包越來越多,這是我們可以使用過濾功能,來過濾出我們想要的網絡請求。
在Proxy -> Recording Settings?中可以設置網絡包的過濾選項。
過濾選項中有Include?和?Exclude?兩種選項。只有當?Include?為空時,Exclude?中的設置才會生效。過濾條件支持通配符。
模擬慢速網絡
在做iPhone開發的時候,我們常常需要模擬慢速網絡或者高延遲的網絡,以測試在移動網絡下,應用的表現是否正常。Charles對此需求提供了很好的支持。
在Charles的菜單上,選擇"Proxy"->"Throttle Setting"項,在之后彈出的對話框中,我們可以勾選上“Enable Throttling”,并且可以設置Throttle Preset的類型。如下圖所示:
修改網絡包
修改歷史請求
可以將歷史的請求修改后,再次發送。
只需選中某個請求,點擊上方工具欄中的藍色鋼筆按鈕(第四個),就可以進行修改。完成修改后,點擊下方的Execute執行請求。
添加斷點
窗口上方的工具欄中,第四個按鈕就是Enable BreakPoints,用來啟用或禁用斷點。也可以在 Proxy -> BreakPoints Setting中設置更多具體內容。
在Charles中可以像調試程序一樣添加斷點。方法是右鍵點擊左側窗口的某個請求,選擇BreakPoints添加斷點。這樣當這個請求發出或者收到response的時候,就會先被Charles攔截下來,并觸發斷點。
觸發斷點后,可以對斷點的網絡包進行各種編輯,然后再繼續。點擊Execute就可以繼續。
同時,也可以在Proxy -> BreakPoints Setting設置斷點的各種規則。例如,是在request的時候觸發還是 response的時候。
由于設置斷點時,Charles是先攔截下整個網絡包,再觸發斷點,當網絡包比較大的時候,常常會導致應用超時,觸發網絡錯誤的警告,因此,自動地根據規則修改網絡包有時顯得尤為重要。這就是下面要說的篡改。
攔截后可以修改post參數
然后可以修改Response,不用去麻煩測試修改數據,
設置斷點。在請求位置右鍵,選擇Breakpoints
然后選擇Proxy的Breakpoint Settings選項,點擊進入設置
點進去可以看到我們添加到Breakpoint 的所有請求,雙擊我們要改的那個請求,如果想斷請求,勾選Request,想斷響應,勾選Response
設置后點擊OK,關閉上面的彈窗,下面的彈窗中我們勾選想斷的請求,點擊OK
下次請求就可以斷請求或者響應了
改寫后點擊 Execute執行 ,注意改的時候,客戶端一般有超時限制(過了超時時間就不會等服務端的返回數據了),所以一般只適用改動較小的測試或者異常測試
篡改(Rewrite)
Rewrite?是按照一組事先設置的規則,篡改特定的網絡包中的數據。
在?Tools -> Rewrite?中,選中Enable Rewrite?來開啟?Rewrite。
Rewrite
勾選 Debug in Error Log 選項,就能在 Charles 控制臺中看到 Rewrite 的記錄。
首先要在右側的規則列表中添加一個新規則。在新規則中添加要Rewrite的Location,然后再下方添加具體的篡改規則。規則中可以使用通配符。
這樣稍后匹配條件的網絡包到達的時候,Charles就會自動將其中的內容按規則篡改。
示例:比如 192.168.1.2:8888/a/b/test ?與192.168.1.3:8888/a/b/test ?兩個請求就要分別映射,而 Rewrite 就可以解決這個問題 ,可以把所有的請求url為/a/b/test的請求都構造成同一個數據。
方法:
- 1、入口:Tools-》Rewrite
- 2、勾選 Enable Rewrite,點擊Add
- 3、Name根據自己情況隨便寫,Add后Path路徑填寫我們請求的url,點擊OK
然后Add返回值,選擇response,Type選擇body,直接把要構造成的json串寫到Value中,Ok
下次請求,就會發現192.168.1.2:8888/a/b/test ?與192.168.1.3:8888/a/b/test ?兩個請求都返回了我們自己的json數據。
rewrite還可以批量修改我們的請求參數,比如把所有的上傳的did參數都由ANDROID_4af16d720602b56改為ANDROID_123456123456,我們可以按照下圖構造:
其中上面部分具體內容為:
下半部分具體內容為:
這樣下次請求,我們的did參數就變為我們想要的ANDROID_123456123456了。這種方法對 ?有要求手機等為新設備才執行某策略的功能點很適用。
映射 Map
Charles?提供的映射功能可以將本地文件或者遠程的服務器作為某個請求的?Response。可以方便地進行一些特殊的測試。
- Map Local。本地映射。在 Tools -> Map Local。可以選擇一個本地文件作為某個請求的Response,并且 Charles會幫你封裝好Response。
- Remote Remote。遠程映射。和本地映射的功能類似,只是將數據源換成了遠程服務器。相當于將請求交給另一個服務器處理
在主機名上右鍵,選擇 map remote
在彈出的彈窗中,填寫要映射到的地址
映射本地。在一個請求上 右鍵 ---> 選擇map local
模擬弱網
Charles 還可以模擬不同網速環境,可以很方便地測試應用在網絡差的情況下的bug。
在 Proxy -> Throttle Settings 中勾選 Enable Throttling,或者直接點擊窗口上方的工具欄中的??烏龜🐢按鈕??就可以啟用,這個按鈕十分形象。
在Proxy -> Throttle Settings 中,添加要針對的Locations,如果選中Only for selected hosts,并且Locations中有數據,則只有 Locations列表中的請求會被限速,否則會對全局限速。在Throttle Configuration中可以對網絡環境進行十分詳細的配置,包括網絡的穩定程度、網速、環境等。
SSL 代理
在使用 Charles 的過程中,我們會發現,只有未加密的 Http 請求才能被Charles 正確的解析出數據,其余的Https 請求都處于加鎖的狀態,但我們不可避免的需要抓取 Https 的包。SSL代理就可以完美解決這個問題。
要啟用 SSL 代理,先要在 Proxy -> SSL Proxying Settings 中勾選 Enable SSL Proxying,然后配置要代理的 Location,一般可以直接填星號,以匹配所有請求。
安裝 Charles 的證書
Charles中的HTTPS代理的原理是,Charles 充當一個中間人,針對目標服務器動態地生成一個使用Charles根證書(Charles CA Certificate)簽名的證書;請求發生的時候, Charles會接收web 服務器的證書,而把自己生成的證書給客戶端看。
因此在在使用Charles作為HTTPS代理時,客戶端在請求HTTPS接口的時候會彈出安全警告,提示Charles根證書不被信任。我們需要添加Charles根證書為信任證書中。
方法如下:
- 1、點擊Help -> SSL Proxying,根據被抓包設備的類型,來選擇對應的安裝選項(如果是 OSX 就直接選擇Install Charles Root Certificate);
- 2、如果是iOS真機,則會彈出下面的提示,此時不用按上面的提示來配置代理,只要按照上文的步驟配置過代理了就可以了。然后在Safari中打開chls.pro/ssl安裝Charles的證書,就 OK 了。
設置好?SSL?代理后,HTTPS?請求就統統解鎖啦!
注意:iOS9 以上系統要使用 Charles 作為 SSL 代理的話要關閉 APP Transport Security ,關閉方法為在 APP的 info.plist 文件添加以下key:
<key>NSAppTransportSecurity</key> <dict><key>NSAllowsArbitraryLoads</key><true/> </dict>Charles 是一個強大的抓包調試工具,它的功能遠不止這些
配合 Postman
Postman是一個測試API的利器。
總結
以上是生活随笔為你收集整理的charles 简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简明Python教程学习笔记_4_数据结
- 下一篇: SQL 语句执行顺序