Charles for Mac 网络调试代理工具详解

Charles for Mac 是一款功能强大的HTTP/HTTPS网络抓包与调试代理工具。它通过充当用户计算机与互联网之间的“中间人”,允许开发者监控、拦截、分析和修改所有进出计算机的网络请求与响应,是Web开发、移动应用开发及API调试的得力助手。

一、 软件核心界面与工作区详解

Charles的主界面主要分为以下几个核心区域:

  1. 菜单栏与工具栏:位于窗口顶部,提供文件、编辑、代理、工具等主要功能入口。工具栏包含快速开始/停止录制、清除当前会话、断点开关等常用按钮。
  2. 会话列表区(Structure / Sequence 视图):
    • Structure 视图:按主机名(域名)对请求进行树状分组,适合按站点进行结构化分析。
    • Sequence 视图:按请求发生的时间顺序线性排列所有会话,适合观察请求的先后时序。
  3. 请求与响应详情区:选中会话列表中的任意一条请求后,该区域将显示其详细信息,包含多个标签页:
    • Overview:请求与响应的概览信息,如URL、状态码、耗时、数据大小等。
    • Contents:核心区域,显示请求(Request)和响应(Response)的头部(Headers)、正文(Body)。正文会根据内容类型(如JSON、XML、图片)进行格式化或预览。
    • Summary:会话的统计摘要。
    • Chart:以图表形式显示会话的耗时分布。
    • Notes:允许为会话添加备注。
  4. 过滤器(Filter):位于会话列表区上方,可快速输入关键词过滤显示的网络请求。
  5. 状态栏:窗口底部,显示录制状态、代理监听端口(默认为8888)、SSL代理状态等关键信息。

二、 从创建/打开项目到最终导出的完整操作流程

Charles的核心工作流程围绕“捕获-分析-修改-导出”展开。

1. 启动代理与捕获会话

操作目标:开始记录计算机或移动设备发出的网络请求。

具体步骤:

  1. 启动Charles,确保菜单栏 Proxy -> macOS Proxy 已被勾选(这会将系统代理设置为Charles)。
  2. 点击工具栏的 “开始/停止录制” 按钮(红色圆点)或使用快捷键 Command + R,使其变为红色(录制中)。
  3. 此时,在浏览器或任何应用中进行的网络操作,其请求将出现在Charles的会话列表区。
  4. (可选)配置移动设备:如需捕获手机流量,需确保手机与Mac在同一Wi-Fi下,并在手机Wi-Fi设置中配置代理,服务器地址为Mac的IP,端口为8888。

2. 分析网络请求

操作目标:查看特定请求的详细信息。

具体步骤:

  1. 在 会话列表区 选择一条目标请求。
  2. 在 请求与响应详情区 切换到 Contents 标签页。
  3. 分别查看 Request 和 Response 的 Headers 和 Body。JSON/XML数据会自动格式化,方便阅读。

3. 修改请求与响应(使用断点或重写)

操作目标:在请求发出前或响应返回前修改其内容。

方法A:使用断点(Breakpoints)

  1. 选中目标请求,右键选择 “Breakpoints”,或通过 Proxy -> Breakpoint Settings… 添加断点规则。
  2. 触发该请求,Charles会将其暂停。
  3. 在弹出的 “Edit Request” 或 “Edit Response” 窗口中,直接修改头部或正文。
  4. 点击 “Execute” 继续发送请求或返回响应。

方法B:使用重写工具(Rewrite)

  1. 进入 Tools -> Rewrite…
  2. 创建一个规则集(Rewrite Set),添加规则,例如:匹配特定URL,替换响应正文(Body)中的某段文本。
  3. 启用该规则集,后续所有匹配的请求/响应将自动被修改。

4. 导出会话数据

操作目标:保存捕获的会话以供后续分析或分享。

具体步骤:

  1. 选中要导出的会话(可多选),或直接导出全部。
  2. 进入 File -> Export… 可选择导出格式:
    • 导出为Charles会话文件(.chls):保留完整信息,可供Charles再次导入。
    • 导出为cURL命令:方便在命令行中重现请求。
    • 导出为HAR格式(.har):通用网络日志格式,可被其他工具(如浏览器开发者工具)识别。
  3. 选择路径并保存。

三、 常用功能进阶技巧

  1. 映射本地文件(Map Local):将线上资源替换为本地文件进行调试。进入 Tools -> Map Local…,添加规则,将某个网络请求的响应映射到Mac本地的文件。
  2. 限制网速(Throttling):模拟弱网络环境。进入 Proxy -> Throttle Settings…,启用并设置带宽、延迟、丢包率等参数。可针对特定站点启用。
  3. 重复请求与压力测试(Repeat / Repeat Advanced):选中一条请求,右键选择 “Repeat”(Command + R)可快速重发一次。选择 “Repeat Advanced” 可设置并发数和总次数,用于简单压力测试。
  4. SSL代理解密:要解密HTTPS流量,需在Charles中安装根证书(Help -> SSL Proxying -> Install Charles Root Certificate),并为目标域名启用SSL代理(右键域名 -> Enable SSL Proxying)。
  5. 组合使用工具:例如,可以同时启用“重写”来修改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 手动刷新当前视图

爱上MAC 一站式Mac软件下载平台
第三方登录
captcha
第三方登录