每一个刚接触 Charles 的开发者,第一个问题几乎都是——“Charles到底怎么抓包?”
表面上看,它只是一个网络代理工具,但真正用起来,你会发现它比想象中更强大: 它能帮你看清 HTTP/HTTPS 请求的来龙去脉、重放接口、模拟弱网,甚至修改响应数据。
这篇文章,我们就一步步讲清楚: Charles 抓包的原理、完整配置方法、以及在实际开发中最常见的抓包场景。
一、Charles 抓包的原理是什么?
要理解“怎么抓包”,先要理解“为什么能抓包”。
Charles 的本质是一台 HTTP 代理服务器。 当你在电脑上运行 Charles 时,它会:
- 拦截你的网络请求;
- 将这些请求转发到目标服务器;
- 再把服务器响应转回给你。
在这个过程中,Charles 能“看到”所有的 HTTP 和 HTTPS 数据。
这就像你上网时,数据从你电脑经过 Charles,再到服务器,Charles 站在中间,就能完整地“监听”整条链路。
二、Charles 抓包的基本流程
安装 Charles
访问 Charles国内中文镜像网 下载最新版。 支持 Windows、macOS、Linux 全平台。
安装完成后,首次打开会提示是否启用系统代理。 点击 Allow 即可。
Charles 默认监听端口是 8888。
验证抓包是否生效
打开浏览器访问任意网站,例如 https://www.example.com。
此时你应该在 Charles 的主界面看到:
www.example.com
└── GET /
└── GET /favicon.ico
这就表示抓包已经成功。
如果没有显示,请检查:
- 系统代理是否被其他软件占用;
- 防火墙是否拦截 Charles;
- 浏览器是否绕过系统代理。
三、Charles HTTPS 抓包配置
默认情况下,Charles 只能抓取 HTTP 流量,要想分析 HTTPS 请求(比如接口或登录请求),必须安装 SSL 证书。
安装步骤(电脑端)
- 点击菜单:
Help → SSL Proxying → Install Charles Root Certificate - 安装后打开“钥匙串访问”(macOS)或“证书管理”(Windows);
- 找到 “Charles Proxy CA” 证书,将其设置为 始终信任。
- 回到 Charles,点击:
Proxy → SSL Proxying Settings → Add → 输入 *:*(表示对所有域名启用 HTTPS 抓包)。
完成后,再访问 HTTPS 网站(如 https://google.com),你将能看到完整的请求头、Body与响应内容。
四、Charles 抓取手机(App)请求
很多人只在电脑上抓包,其实 Charles 完全支持 移动端抓包。 下面以 iPhone 为例:
让手机与电脑在同一 Wi-Fi 下
Charles 是通过局域网代理工作的, 所以手机和电脑必须在同一个网络环境。
配置手机代理
进入手机 Wi-Fi 设置 → 手动配置代理:
- 服务器:电脑的 IP 地址
- 端口:8888
(电脑端 Charles 左下角会显示当前 IP)
此时,手机访问网页或打开 App, Charles 会弹窗提示“是否允许连接”。 点击 “Allow”。
安装手机证书
在手机浏览器访问:chls.pro/ssl
下载证书并安装。
iOS 用户需前往:
设置 → 通用 → 关于本机 → 证书信任设置 → 启用“Charles Proxy CA”
安卓用户直接安装并信任即可。
完成后,Charles 就能抓到手机 App 的 HTTPS 请求。
五、Charles 抓包常用功能详解
Structure vs Sequence 视图
- Structure:按域名分类,适合分析同站点多个请求。
- Sequence:按时间顺序排列,适合还原整个访问过程。
Request / Response 查看
你可以在每条请求下查看:
- Headers(请求头)
- Body(请求体)
- JSON 响应内容
- 状态码与耗时
这对分析 API 响应异常尤其重要。
六、Charles 抓包常见场景
场景1:调试接口请求
查看接口参数、状态码与响应时间,定位前后端交互问题。
场景2:分析App流量
抓取移动端 HTTPS 请求,验证接口调用逻辑是否正确。
场景3:测试异常响应
利用 Breakpoints 手动修改返回数据,模拟后端报错。
场景4:Mock 接口
用 Map Local 将请求映射到本地文件, 实现前端独立开发与UI演示。
场景5:模拟弱网
通过 Throttle 功能设置延迟与带宽,测试App在3G网络下的表现。
七、抓包失败的常见原因
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 无法抓HTTPS | 证书未信任 | 重新安装证书并设置“始终信任” |
| 手机不显示流量 | 未在同一Wi-Fi / IP错误 | 检查手机代理设置 |
| 请求为空 | App使用了证书绑定(SSL Pinning) | 使用开发版本或关闭证书校验 |
| Charles不显示流量 | 系统代理被禁用 | 重新启用代理(菜单栏中可切换) |
八、Charles的抓包“进阶用法”
当你熟悉基本抓包后,还可以进一步掌握:
| 功能 | 用途 |
|---|---|
| Rewrite | 自动修改请求参数或响应内容 |
| Map Remote | 重定向请求到测试/预发环境 |
| Repeat & Advanced Repeat | 重放或批量发送请求,测试接口稳定性 |
| Export Session | 导出日志文件,方便团队复现Bug |
这些功能,让Charles从“调试工具”升级为“测试分析平台”。
九、延伸学习与中文资源
想更深入学习Charles的使用技巧与案例,可以访问 Charles国内中文镜像网
这里提供:
- 中文版操作教程
- 证书配置与抓包示例
- 常见问题排查指南
- Rewrite与Throttle高级技巧
学会抓包,可以解决很多问题
学会用Charles抓包,不只是为了修Bug,而是为了学会观察系统的行为。
每一个请求、每一条响应、每一次延迟,背后都藏着代码与服务器的真实对话。