Charles簡介
Charles是一個HTTP代理服務器,HTTP監視器,反轉代理服務器,當瀏覽器連接Charles的代理訪問互聯網時,Charles可以監控瀏覽器發送和接收的所有數據。它允許一個開發者查看所有連接互聯網的HTTP通信,這些包括request, response和HTTP headers (包含cookies與caching信息)。
Charles主要功能
- 支持SSL代理。可以截取分析SSL的請求。
- 支持流量控制。可以模擬慢速網絡以及等待時間(latency)較長的請求。
- 支持AJAX調試。可以自動將json或xml數據格式化,方便查看。
- 支持AMF調試。可以將Flash Remoting 或 Flex Remoting信息格式化,方便查看。
- 支持重發網絡請求,方便后端調試。
- 支持修改網絡請求參數。
- 支持網絡請求的截獲並動態修改。
- 檢查HTML,CSS和RSS內容是否符合W3C標准。
開始抓包
在開始抓包之前,先來介紹下本篇文章主要涉及Charles那些?
- Charles的介紹與安裝
- web抓包
- App抓包
- 抓取手機HTTPS協議
- Charles過濾
- 弱網測試
- 打斷點篡改數據
- 重復發送請求
- compose編輯接口
- 服務器壓力測試
- 本地映射
- 遠程映射
Charles的介紹與安裝
在移動互聯網時代,作為測試工程師,開發工程師。絕對必須要掌握必要測試工具,今天主要來了解Charles。
官方地址:
web抓包
1,web 抓包
Charles Web抓包非常簡單,啟動Charles會自動與瀏覽器設置成代理,不需要進行過多的設置,接下來我就就是通過瀏覽器發送網絡請求,Charles就會直接抓取到這些信息和響應信息

2,Web 抓取HTTPS協議
雖然現在Charles能夠直接抓包了,但是https協議的報我們是抓取不了的,需要安裝SSL證書才可以
Charles下配置 1,點擊頂部菜單欄【Help】-->選擇【SSL Proxying】,點擊【install Charles Root Certificate 】安裝Charles根證書即可; 這里由於用的筆記本截圖快捷鍵問題,沒發截取,這里截取證書安裝,證書安裝一直下一步就可以




App抓包
Charles抓包不僅僅可以抓取來在電腦端的HTTP請求,也能夠抓取來自App發出的HTTP請求,但是手機抓包需要在電腦端配置下,並且同時需要手機和電腦在同一網絡下
電腦端配置:
1,啟動安裝好的Charles抓包工具; 2,點擊【Help】-->【local IP Address】獲取下ip地址,也可以直接通過電腦自帶的CMD命令來獲取電腦IP【ipconfig】,根據自己的習慣這里的ip是取我虛擬機的;



手機端設置:
1,打開手機的設置頁面; 2,選擇【無線局域網】; 3,IOS點擊連接的WIFI后面的感嘆號,安卓應該是長按連接的WIFI;(注:這里主要以IOS為例) 4,點擊【配置代理】-->【手動】; 5,輸入本機【IP地址(192.168.1.75)】以及端口號【9999】,這是我本機的,根據自己情況合理配置; 6,點擊【存儲】






抓取手機HTTPS協議
通過上面的設置,雖然來自我們手機端的Http協議請求可以抓取到,但是HTTPS協議的包是不能抓取的,需要安裝配置證書才可以,現在手機上大多數都已經切到https很少由http協議的了
Charles配置:
1,點擊頂部菜單欄【Help】-->選擇【SSL Proxying】,點擊【install Charles Root Certificate】安裝Charles根證書即可; 2,點擊安裝【Install Charles Root Certificate On a Mobile Device or Remote Browser】在移動設備上或遠程瀏覽器安裝證書即可;(這里和上面安裝一樣)



Charles過濾
通常情況下,我們需要對網絡請求進行過濾,只監控向指定目錄服務器上發送的請求。對於這種需求,以下幾種辦法:
方法一:在主界面的中部的 Filter 欄中填入需要過濾出來的關鍵字。例如我們的服務器的地址是:ceshi.com, 那么只需要在 Filter 欄中填入 ceshi 即可。
方法二:在 Charles 的菜單欄選擇 “Proxy”->”Recording Settings”,然后選擇 Include 欄,選擇添加一個項目,然后填入需要監控的協議,主機地址,端口號。這樣就可以只截取目標網站的封包了。如下圖所示:

弱網測試
Charles配置弱網設置 1,點擊【Proxy】-->【Throttle Setting】 2,勾選上【Enable Throttle】,也可以勾選【only for selected host 】 設置一個指定注解訪問進行網絡限制,不影響其他軟件; 3,在【Throttle preset】選擇常見預設的網絡情況,也可以在【Bandwidth】自己設置網絡的上傳和下載速率



修改請求數據
1.接口處右擊鼠標 勾選breakpoints(允許本接口使用breakpionts功能)
2.設置斷點值
3.從新刷新瀏覽器,可修改請求參數,執行請求
4.執行成功
修改返回數據
復制接口鏈接,拷貝到Host中,勾選Response,點擊Ok。
在text中編輯內容,點擊Execute(執行),重新刷新頁面
內容更改成功
重復發送請求
在我們的測試工作中,可能你會發先一個bug,開發會讓你在操作一遍,他要查看日志經i選哪個定位分析,這時候,在客戶端上進行操作一遍就會麻煩,這是直接用Charles 發送一遍重復的請求就可以了,並且,重新發送請求也可以幫助我們進行功能測試; 選擇需要重新發送請求的會話上,直接點擊工具欄【重新按鈕】
Compose編輯接口
在我們的測試工作中,可能需要發送不同的參數進行請求。 選擇需要修改的請求,右鍵選擇【Compose】這時多出一個筆的請求;
服務器壓力測試
Charles 還有一個比較有意思的功能,它能勾簡單的給服務器進行壓力測試; 1,在進行壓力測試的請求會話上右擊,選擇【Repeat Advanced】
2,在彈出框中,輸入並發線程數以及壓力次數點擊進行測試
本地映射:Map Local

-
-
- protocol:接口協議
- Host:接口URL粘進去,自動分解到host與path文本框中
- port:*(匹配全部)
- Query: *(匹配全部)
-


遠程映射:Map Remote
背景
在測試環境中,部分功能模塊URL是https ,需要改成http 或其他的URL 才能正確訪問到需要測試的內容。但由於架構設計 需跨團隊協助修改 。
如果不想這么麻煩,Charles的Map Remote就派上用場了。
功能
把你要請求的地址,映射到一個遠程地址;相當於把你的請求地址修改了;
打開charles —》Tools——》Map Remote Settings,添加你要選擇映射的URl。
From 一欄填入原始的URL
To 一欄填入 要映射到的URL(你遠程映射的地方)
還可以鼠標右擊你想映射的Host
選擇Map Remote ,將Map To 里面的Host改成你要映射到的地址即可。
例如,你可以做下面的操作
- 您可以把 xk72.com/charles/ 映射到 localhost/charlesdev/ 來為xk72.com提供一個子目錄,
- 或者把xk72.com/*.php 這種指定后綴的所有文件映射到localhost/charlesdev/。
使用建議
如果您想開發某個網站,並且已經有了開發環境的網站,並希望把剛更新的某些文件應用到線上網站,測試下效果如何,則“遠程映射”將非常有用。
例如,您可能把測試環境的css和images目錄下的文件更新了。可以把live.com/css/映射到 dev.com/css/或把live.com/*.css這樣的映射到dev.com。
參考鏈接:https://juejin.cn/post/6844904182588112904
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。