文章目錄
- 導讀
- 軟件版本
- Charles
- 基本原理
- 核心功能
- 下載及安裝
- 界面介紹
- 網絡包展示
- 常用場景介紹
- PC 端網絡抓包
- 移動端網絡抓包
- PC 端配置
- 手機端配置
- 開啟 SSL 代理
- PC 端和移動端 CA 證書安裝
- Charles 直接安裝
- Charles 下載 CA 文件手動安裝
- 常用操作
- 請求重發
- 請求改寫、動態改寫
- 斷點(Breakpoint Settings)
- DNS 欺騙(DNS Spoofing)
- 節流 Throttle Settings(網速模擬)
- 更多功能
- 常見安裝問題
- 個人簡介
導讀
- 了解網絡抓包工具 Charles 的基本原理和核心功能,以及常用功能的使用案例。
軟件版本
- Charles 4.6.4
Charles
- Charles 是在 PC 端常用的網絡包抓取工具,移動端開發者可能接觸更多,Web 端使用瀏覽器開發工具或者 Postman 已經基本可以滿足我們開發中的需求,但 Charles 作為一款熱門的網絡包抓取工具,具備一些高級特性,比如請求重發、請求斷點、網速截流、DNS欺騙、動態請求重寫、請求名單限制等等,在某些場景能夠幫助我們進行更加高效的完成開發工作。
基本原理
- Charles 通過將自己設置成系統的網絡訪問代理服務器,使得所有的網絡訪問請求都通過它來完成,從而實現了網絡包的截取和分析。
核心功能
- HTTP & HTTPS 網絡包抓取(PC端、Web端、手機端)
- 網絡請求修改、動態修改、重發、規則重發等
- DNS欺騙、網速模擬,支持請求白名單黑名單等。
- 支持 Mac、Win、Linux。
下載及安裝
- 下載及安裝比較簡單,在 Charles 官網下載最新版,直接安裝,使用下面在線激活網站生成激活碼激活即可。
- 官網地址:https://www.charlesproxy.com/documentation/welcome/
- 激活碼在線生成:https://www.zzzmode.com/mytools/charles/
界面介紹
網絡包展示
- Charles 主要提供兩種查看網絡包的視圖,分別名為 Structure 和 Sequence。
Structure: 此視圖將網絡請求按訪問的域名分類。
Sequence: 此視圖將網絡請求按訪問的時間排序。
常用場景介紹
- Charles 的功能很多,本文主要介紹一些常用的使用場景。
PC 端網絡抓包
- 勾選 Proxy | Windows Proxy
- 開啟 Charles 處于 Start Recording 狀態
- 上述操作完成后,打開瀏覽器訪問,你會發現網絡請求并沒有被抓取,這是因為還沒有配置瀏覽器的代理,Charles 啟動的代理服務器如下圖所示,你可以在 windows 設置中進行配置,也可以使用瀏覽器插件進行配置,本文演示使用 Chrome 代理插件 SwitchyOmega 配置:
移動端網絡抓包
- ++前提PC端和手機端需要在同一網絡下++
PC 端配置
- 開啟 Charles 代理功能,代理配置 Enable transparent HTTP proxying
- 開啟 Charles 處于 Start Recording 狀態
手機端配置
- 通過 Charles 的主菜單 Help | Local IP Address 或者通過命令行工具輸入 ipconfig 查看本機的 IP 地址。
- 打開手機端的 WIFI 代理設置,輸入PC IP 和 Charles 的代理端口。
- 完成上述步驟,打開手機瀏覽器發起請求,看到 Charles 彈出手機請求連接的確認,點擊 Allow,Charles 就可以抓取網絡請求了。
開啟 SSL 代理
- 上述步驟全部完成后,點擊發起一個請求,發現請求內容是亂碼的,其實這是因為沒有開啟 SSL 代理,這是為什么呢?
解答:猜測 + 理解不一定完全正確
這是因為沒有開啟 SSL 代理時,Charles 只是單純的轉發了客戶端和服務端的請求,無法解密客戶端和服務端建立 SSL 的通信內容。
開啟 SSL 后,Charles 和客戶端、服務端分別建立了 SSL 鏈接,并可以解密通信的內容。
因此,開啟 SSL 代理后需要 Charles 生成 CA 證書并安裝。
PC 端和移動端 CA 證書安裝
Charles 直接安裝
- 電腦端安裝 Charles 證書:通過 Charles 的主菜單 Help | SSL Proxying | Install Charles Root Certificate 安裝證書。
設置 SSL 代理:通過主菜單打開 Proxy | SSL Proxy Settings 彈窗,勾選 Enable SSL proxying。 - 移動端安裝 Charles 證書:通過 Charles 的主菜單 Help | SSL Proxying | Install Charles Root Certificate on a Mobile Device or Remote Browser 安裝證書。
Charles 下載 CA 文件手動安裝
- Help | SSL Proxying | save Charles Root Certificate(移動端選擇.pem、PC端選擇.crt)
- 上述功能都配置完成后,就可以看到如上述的正常的請求,愉快的進行 debug 。
常用操作
請求重發
- 重新發送該請求。
請求改寫、動態改寫
- 修改原請求并進行重新發送;根據動態規則匹配請求修改請求的請求頭或請求體。
斷點(Breakpoint Settings)
- 可以在客戶端請求服務前以及響應時進行斷點。
DNS 欺騙(DNS Spoofing)
- 當通過 Charles 解析 DNS 時,將使用我們配置的 DNS 進行解析。
節流 Throttle Settings(網速模擬)
- 模擬上下行網速。
更多功能
- 參考官網文檔:https://www.charlesproxy.com/documentation/welcome/
常見安裝問題
- 手機端安裝證書后無法生效,重啟一下 Charles
- Android 7.0 (API 24)之后,做了改動,使得系統安全性增加了,導致APP 默認不信任用戶域的證書,需要 root 后將證書放到系統證書。
- 注意 PC 端 CA 證書存儲位置
- SSL 配置好證書后仍無法正常抓取(顯示 unknown),確認一下是否已經配置 需要開啟 HTTPS 代理域名和端口
個人簡介
👋 你好,我是 Lorin 洛林,一位 Java 后端技術開發者!座右銘:Technology has the power to make the world a better place.
🚀 我對技術的熱情是我不斷學習和分享的動力。我的博客是一個關于Java生態系統、后端開發和最新技術趨勢的地方。
🧠 作為一個 Java 后端技術愛好者,我不僅熱衷于探索語言的新特性和技術的深度,還熱衷于分享我的見解和最佳實踐。我相信知識的分享和社區合作可以幫助我們共同成長。
💡 在我的博客上,你將找到關于Java核心概念、JVM 底層技術、常用框架如Spring和Mybatis 、MySQL等數據庫管理、RabbitMQ、Rocketmq等消息中間件、性能優化等內容的深入文章。我也將分享一些編程技巧和解決問題的方法,以幫助你更好地掌握Java編程。
🌐 我鼓勵互動和建立社區,因此請留下你的問題、建議或主題請求,讓我知道你感興趣的內容。此外,我將分享最新的互聯網和技術資訊,以確保你與技術世界的最新發展保持聯系。我期待與你一起在技術之路上前進,一起探討技術世界的無限可能性。
📖 保持關注我的博客,讓我們共同追求技術卓越。