Charles for Mac 是一款功能强大的HTTP/HTTPS网络抓包与调试代理工具。它通过充当用户计算机与互联网之间的“中间人”,允许开发者监控、拦截、分析和修改所有进出计算机的网络请求与响应,是Web开发、移动应用开发及API调试的得力助手。
一、 软件核心界面与工作区详解
Charles的主界面主要分为以下几个核心区域:
- 菜单栏与工具栏:位于窗口顶部,提供文件、编辑、代理、工具等主要功能入口。工具栏包含快速开始/停止录制、清除当前会话、断点开关等常用按钮。
- 会话列表区(Structure / Sequence 视图):
- Structure 视图:按主机名(域名)对请求进行树状分组,适合按站点进行结构化分析。
- Sequence 视图:按请求发生的时间顺序线性排列所有会话,适合观察请求的先后时序。
- 请求与响应详情区:选中会话列表中的任意一条请求后,该区域将显示其详细信息,包含多个标签页:
- Overview:请求与响应的概览信息,如URL、状态码、耗时、数据大小等。
- Contents:核心区域,显示请求(Request)和响应(Response)的头部(Headers)、正文(Body)。正文会根据内容类型(如JSON、XML、图片)进行格式化或预览。
- Summary:会话的统计摘要。
- Chart:以图表形式显示会话的耗时分布。
- Notes:允许为会话添加备注。
- 过滤器(Filter):位于会话列表区上方,可快速输入关键词过滤显示的网络请求。
- 状态栏:窗口底部,显示录制状态、代理监听端口(默认为8888)、SSL代理状态等关键信息。
二、 从创建/打开项目到最终导出的完整操作流程
Charles的核心工作流程围绕“捕获-分析-修改-导出”展开。
1. 启动代理与捕获会话
操作目标:开始记录计算机或移动设备发出的网络请求。
具体步骤:
- 启动Charles,确保菜单栏 Proxy -> macOS Proxy 已被勾选(这会将系统代理设置为Charles)。
- 点击工具栏的 “开始/停止录制” 按钮(红色圆点)或使用快捷键
Command + R,使其变为红色(录制中)。 - 此时,在浏览器或任何应用中进行的网络操作,其请求将出现在Charles的会话列表区。
- (可选)配置移动设备:如需捕获手机流量,需确保手机与Mac在同一Wi-Fi下,并在手机Wi-Fi设置中配置代理,服务器地址为Mac的IP,端口为8888。
2. 分析网络请求
操作目标:查看特定请求的详细信息。
具体步骤:
- 在 会话列表区 选择一条目标请求。
- 在 请求与响应详情区 切换到 Contents 标签页。
- 分别查看 Request 和 Response 的 Headers 和 Body。JSON/XML数据会自动格式化,方便阅读。
3. 修改请求与响应(使用断点或重写)
操作目标:在请求发出前或响应返回前修改其内容。
方法A:使用断点(Breakpoints)
- 选中目标请求,右键选择 “Breakpoints”,或通过 Proxy -> Breakpoint Settings… 添加断点规则。
- 触发该请求,Charles会将其暂停。
- 在弹出的 “Edit Request” 或 “Edit Response” 窗口中,直接修改头部或正文。
- 点击 “Execute” 继续发送请求或返回响应。
方法B:使用重写工具(Rewrite)
- 进入 Tools -> Rewrite…
- 创建一个规则集(Rewrite Set),添加规则,例如:匹配特定URL,替换响应正文(Body)中的某段文本。
- 启用该规则集,后续所有匹配的请求/响应将自动被修改。
4. 导出会话数据
操作目标:保存捕获的会话以供后续分析或分享。
具体步骤:
- 选中要导出的会话(可多选),或直接导出全部。
- 进入 File -> Export… 可选择导出格式:
- 导出为Charles会话文件(.chls):保留完整信息,可供Charles再次导入。
- 导出为cURL命令:方便在命令行中重现请求。
- 导出为HAR格式(.har):通用网络日志格式,可被其他工具(如浏览器开发者工具)识别。
- 选择路径并保存。
三、 常用功能进阶技巧
- 映射本地文件(Map Local):将线上资源替换为本地文件进行调试。进入 Tools -> Map Local…,添加规则,将某个网络请求的响应映射到Mac本地的文件。
- 限制网速(Throttling):模拟弱网络环境。进入 Proxy -> Throttle Settings…,启用并设置带宽、延迟、丢包率等参数。可针对特定站点启用。
- 重复请求与压力测试(Repeat / Repeat Advanced):选中一条请求,右键选择 “Repeat”(
Command + R)可快速重发一次。选择 “Repeat Advanced” 可设置并发数和总次数,用于简单压力测试。 - SSL代理解密:要解密HTTPS流量,需在Charles中安装根证书(Help -> SSL Proxying -> Install Charles Root Certificate),并为目标域名启用SSL代理(右键域名 -> Enable SSL Proxying)。
- 组合使用工具:例如,可以同时启用“重写”来修改API返回数据,并开启“网速限制”来测试应用在慢速网络下的表现。
四、 常见问题与解决方案
Q1: 无法捕获HTTPS请求,内容显示为<unknown>?
A1:这是未配置SSL代理所致。解决方案:1) 确保已在Mac钥匙串访问中信任Charles根证书(设置为“始终信任”)。2) 右键目标请求的域名,选择 “Enable SSL Proxying”。或在 Proxy -> SSL Proxying Settings… 中添加该域名(*:443)。
Q2: 手机连接Charles代理后无法上网?
A2:请检查:1) Mac和手机是否在同一局域网。2) Mac防火墙是否关闭或放行了Charles。3) 手机代理设置中的IP和端口(8888)是否正确。4) 首次连接时,手机Safari需访问 chls.pro/ssl 安装Charles证书,并在手机设置中对证书启用完全信任。
Q3: 会话列表过于杂乱,如何快速找到目标请求?
A3:1) 使用顶部的 Filter(过滤器) 输入关键词。2) 使用 Focus 功能:右键关键主机名,选择 “Focus”,则只显示与该主机相关的请求。3) 在 Proxy -> Recording Settings… 中排除(Exclude)不关心的域名或文件类型(如图片)。
Q4: 如何只监控特定应用的流量?
A4:关闭 Proxy -> macOS Proxy,然后手动为需要监控的应用配置代理。例如,在终端启动应用时设置环境变量:http_proxy=http://127.0.0.1:8888 https_proxy=http://127.0.0.1:8888。
五、 Charles for Mac 快捷键汇总表
| 功能 | 快捷键 (Mac) | 说明 |
|---|---|---|
| 开始/停止录制 | Command + R | 控制是否捕获网络流量 |
| 清除当前会话 | Command + E | 清空会话列表区所有记录 |
| 查找会话 | Command + F | 在会话列表中查找关键词 |
| 重复请求 | Command + R (在选中请求时) | 快速重新发送选中的请求 |
| 切换Structure/Sequence视图 | Command + 1 / Command + 2 | 快速切换会话列表的显示模式 |
| 新建会话窗口 | Command + N | 打开一个新的会话监控窗口 |
| 打开/关闭断点 | Command + Shift + B | 全局启用或禁用所有断点 |
| 打开工具窗口(如重写、映射) | Command + T | 打开工具选择菜单 |
| 导出选中会话 | Command + Shift + S | 快速打开导出对话框 |
| 刷新会话列表 | Command + Shift + R | 手动刷新当前视图 |







