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