Charles抓包 Charles使用教程与抓包工具配置全流程

83 阅读5分钟

在开发团队里,每当项目出现「难以复现」「偶发性」或「环境不一致」类的问题时,总会有一句话出现得特别频繁:

“你抓一包吧,我们看看流量。”

这句话几乎成了现代开发者的共同语言。 因为无论问题来自前端、后端、移动端,还是中间网络层,网络抓包几乎都是最可靠、最直接、可复现性最强的排查方式。

而在抓包工具中,Charles 是许多程序员的第一选择:

  • 上手简单
  • 支持 HTTPS
  • 支持手机抓包
  • 支持 Mock 和断点调试
  • UI 清晰易懂
  • 适合多人协作复现问题

今天这篇文章并不想写成「工具说明书」,而是从日常开发者的真实使用场景出发,拆解 Charles 在实际项目中是如何发挥作用的。


一、为什么 Charles 是很多开发者的“调试起点”?

在排查网络问题之前,开发者往往处于一种模糊状态:

  • 数据到底有没有发出去?
  • 参数是不是正确?
  • 请求有没有被缓存?
  • 是否走错环境?
  • SSL 是否正常?
  • 用户的手机到底做了什么请求?

没有任何工具能同时回答这些问题。 而 Charles 能。

Charles 展示的不是“代码里写的内容”,也不是“控制台打印的信息”,而是 客户端真实发送到网络中的请求

这让它天然适合成为复杂问题分析的第一步。


二、Charles 使用教程:从零到能抓第一条包

虽然 Charles 上手不难,但真正能成功抓到包,需要正确配置几个关键步骤。


1. 安装并信任 Charles 证书(HTTPS 必须完成)

安装证书是抓 HTTPS 的第一步,否则流量都是加密的。

流程:

Help → SSL Proxying → Install Charles Root Certificate

安装后在系统钥匙串中手动“设为信任”。


2. 开启 HTTPS 解密功能

证书安装完,还必须开启抓 HTTPS 的规则。

Proxy  SSL Proxying Settings  Add  Host: * , Port: *

这样就能抓取所有加密流量。


3. Charles 自动接管系统代理

启动 Charles 后,它会自动在本机系统设置中接管代理。 若代理被其他软件(VPN、Clash、SwitchyOmega)覆盖,需要手动关闭它们再重启 Charles。


三、Charles 手机抓包教程:解决“App 无法复现”的核心手段

Web 可以用浏览器看请求, 但手机 App、H5、小程序的真实流量只有 Charles 能看到。

步骤如下:

① 手机和电脑必须在同一个 Wi-Fi 上

② 在手机 Wi-Fi 设置里填写代理

服务器:电脑 IP 端口:8888

③ 安装 Charles 证书(手机)

浏览器访问: chls.pro/ssl

iOS 用户还需信任证书。

④ 打开 App 即可查看请求

这套流程虽然简单,但在实际调试中非常高效,特别是重现移动端偶发性问题时。


四、Charles 的核心视图与调试方式(不看这些就算不会用)

Charles 能呈现大量信息,但真正关键的只有以下几个。


1. Structure:按域名分类的“调试导航图”

你可以看到:

  • 请求走的到底是 test、pre 还是 prod
  • 是否被 CDN 拦截
  • 是否被重定向

处理环境混乱问题时特别有用。


2. Sequence:按时间排序的“行为复盘”

你可以看到:

  • 用户点击后发起了哪些请求
  • 它们的顺序是什么
  • 哪些请求被取消
  • 哪些请求重复触发

移动端排查问题时最常用。


3. Timeline:性能瓶颈的“透视仪”

你可以看到:

  • DNS 时间
  • SSL 握手耗时
  • 服务端处理耗时
  • 下载耗时

80% 的“接口慢”其实不是后端慢,而是 SSL 和网络原因。


4. 请求详情:真实数据结构的“最终答案”

直接查看:

  • Raw
  • JSON
  • Header
  • Cookies
  • Query
  • Form Data

所有前后端争议,都能在这里一次性解决。


五、提升调试效率的 Charles 高级技巧(经常用、非常实用)

下面这些功能在团队中应用频率极高。


1. Breakpoints(断点拦截)

拦截请求/响应,手动修改字段,适合:

  • 模拟异常
  • 测试错误处理逻辑
  • 调试前端状态机

2. Map Local(本地 Mock 接口)

将接口映射到本地 JSON 文件,适合:

  • 后端未完成
  • UI 自测
  • 离线开发

3. Map Remote(快速切换环境)

将请求转向另一个环境:

test → pre  
pre → prod  
prod → mock  

不用修改代码,不容易出错。


4. Rewrite(自动修改请求内容)

自动替换:

  • Token
  • 域名
  • 参数
  • Header
  • JSON 字段

适合经常调试同类问题的工程师。


5. Throttle(弱网模拟)

模拟:

  • 3G
  • 超高延迟
  • 丢包
  • 不稳定网络

用于复现用户真实情况。


六、真实开发中最常见的 Charles 解决方案(来自经验)

这里列出几个团队中经常遇到且依赖 Charles 才能排查的问题。


案例 1:登录偶尔失败,但日志全正常

抓包后发现:

  • App 同时触发两个登录接口
  • 前一个带的是旧 Token
  • 后一个才是有效请求

页面拿到了第一个失败的响应,导致误以为登录失败。


案例 2:某些用户看到的数据完全不一致

抓包后:

  • Cookies 不同
  • Header 携带的设备信息不同
  • 某些请求走了 CDN 缓存

数据差异就此确认。


案例 3:H5 页面加载特别慢

Timeline 显示:

  • SSL 握手耗时 1.5 秒
  • DNS 解析缓慢

最终确认是网络问题,不是后端慢。


七、如果你需要更详细的教程

可以查看**Charles中文网**,这里整理了:

  • Charles 安装
  • HTTPS 抓包配置
  • 手机抓包
  • Rewrite / Map Local / Map Remote
  • 常见问题排查

适合快速查阅与上手。


掌握 Charles 等于掌握调试效率

真正会用 Charles 的开发者,通常具有以下优势:

  • 更快定位问题
  • 更强判断能力
  • 更清晰理解系统链路
  • 更容易与团队协作
  • 更能处理复杂异常

Charles 抓包不是一个“工具技巧”,它是一项工程师的基础能力,当你学会从流量中看问题,你的调试方式会发生质变。