ApiCatcher 快速上手

ApiCatcher 在本地捕获、查看和分析应用的 HTTP/HTTPS、WebSocket 流量。

本文覆盖证书安装、流量过滤、请求历史、导出与 API 文档等日常抓包操作。重写、脚本、组合重放等进阶能力见下方独立文档。

进阶文档:


目录

  1. 基础准备:证书配置与调试授权
  2. 流量过滤:精准定位调试目标
  3. 抓包 Session 与历史搜索
  4. 查找 Cookie
  5. 导出:HAR、文件与单条请求
  6. 自动生成 API 文档
  7. 质量与性能排查:API 扫描 (API Scan)

1. 基础准备:证书配置与调试授权

1.1 安装并信任 CA 证书(调试 HTTPS 必备)

现代应用的数据交互普遍基于 HTTPS 协议加密。默认情况下,App 不会捕获 HTTPS 流量:尚未安装证书时无法解密加密内容,即使捕获也看不到明文,没有实际调试价值。因此,当您需要捕获并解密 HTTPS 流量时,必须先安装并信任 CA 证书。

ApiCatcher 提供了两种证书配置方式:

  1. 使用系统默认生成的 CA 证书(推荐绝大多数场景):跟随下方的引导,安装由 ApiCatcher 自动为您生成的专属 CA 证书。
  2. 导入您自己的证书(企业证书):如果您需要使用企业自签发证书,可直接跳过此部分,阅读 1.2 企业证书导入 章节。

使用系统默认 CA 证书的操作步骤:

  1. 在 App 内点击“安装证书”,系统会跳转浏览器下载配置描述文件。
  2. 进入系统 「设置」 -> 「通用」 -> 「VPN与设备管理」,安装刚下载的 ApiCatcher 描述文件。
  3. 关键步骤:进入 「设置」 -> 「通用」 -> 「关于本机」 -> 「证书信任设置」,找到 ApiCatcher CA 开头的证书,打开开关启用完全信任。

💡 常见排障指南:

  • 调试时抓到“连接超时”或者状态码异常:通常是因为第3步没有“完全信任”证书。
  • 删除了 App 重新安装:旧的调试证书已经失效,必须去系统设置中删除旧的描述文件,重新走一遍上述流程。

1.2 企业证书导入(企业内网调试场景)

在企业内部开发测试时,部分内部应用可能会配置特定的证书信任策略(仅信任企业内部 CA)。

  • 用途:导入企业提供的 .pem 或 .p12 证书,并与内部测试域名(如 *.corp.internal)绑定,用于在本地调试时完成合法的 TLS 握手。
  • 注意:必须在停止抓包的状态下导入或修改配置,完成后重新启动方可生效。

1.3 使用自签证书

对于个人开发者,如果没有企业证书,也不想使用 ApiCatcher 提供的证书,您可以借助 ApiCatcher 的企业证书功能导入自己的证书。 详情请参考文档:使用自签证书


2. 流量过滤:精准定位调试目标

在开发过程中,为了排除系统底层及其他后台 App 的流量干扰,建议配置过滤规则,使视线聚焦于当前正在调试的项目。

  • 黑名单:出现在黑名单中的域名不会被记录。如果白名单为空,默认记录除黑名单外的所有请求。
  • 白名单:只要白名单中包含规则,系统就仅记录白名单匹配的请求,其余流量均不进入调试通道。
  • 配置技巧:支持 * 通配符。例如填写 *.example-api.com 可以匹配该主域名下的所有测试环境子域名。

💡 常见排障指南:

  • 无法看到目标应用的请求:请检查是否启用了白名单但漏填了目标域名,或者目标域名误加入了黑名单。
  • 语法注意:请使用基础星号匹配(如 *.api.com),无需编写复杂的正则表达式。

3. 抓包 Session 与历史搜索

黑白名单决定哪些流量会被记录。记录之后,在请求历史页用 Session 和搜索条件定位已经抓到的请求。

3.1 抓包 Session

一次 抓包 Session 对应一次 VPN 抓包周期,界面以开始时间(yyyy-MM-dd HH:mm:ss)标识,不支持自定义名称。

每次成功启动 VPN 抓包会创建一条 Session。停止 VPN 时写入结束时间与请求数;若本次没有请求,该 Session 会被删除。进行中的 Session 结束时间显示为「正在抓包中」。

请求历史页的 Session 过滤器可限定为某一次抓包,或选择「全部」。选择器会展示时间范围、抓包时长、抓取请求数,以及本次抓到的 Host(最多 5 个)。按 Session 删除会移除该次抓包下的请求记录。

3.2 过滤条件

请求历史页提供过滤栏,可在「配置过滤条件」中选择要显示的条件,也可「重置过滤条件」。

条件匹配方式
Session选中某一次抓包,或全部
Host精确匹配域名
应用 (UA)按 User-Agent 解析出的应用名精确匹配
方法GET / POST / PUT / DELETE / PATCH / OPTIONS / HEAD
协议HTTP / HTTPS / WS / WSS
类型全部、HTML、JSON、XML、图片、视频、音频、Protobuf(按 Content-Type)
状态码1xx–5xx,以及「无响应」
时间最近 15 分钟、最近 1 小时、今天、最近 7 天、最近 30 天、自定义范围

3.3 关键字搜索

搜索框默认匹配 URL(占位符为「搜索url...」)。关键字为不区分大小写的子串包含,不支持正则,也不支持 AND / OR 组合。

通过历史页「…」→「切换搜索目标」选择搜索范围:

搜索目标匹配范围
URL请求 URL
请求头请求头的名称或值
响应头响应头的名称或值
请求 Body请求体文本
响应 Body响应体文本

搜索 Body 时仅处理文本类 Content-Type(HTML / XML / JSON / 纯文本 / form-urlencoded / form-data),不读取图片、视频等二进制 Body。


4. 查找 Cookie

「查找Cookie」用来取出某个 Host 最近一次请求里携带的 Cookie(只看请求头 Cookie,不看 Set-Cookie,也不会合并多条请求)。

  1. 打开 历史记录。
  2. 右上角「…」→「查找Cookie」。
  3. 输入 Host(必填,可从已抓到的 Host 列表选,也可手输)。
  4. 可选 选择Session,不选则在全部 Session 里找。
  5. 点「搜索Cookie」。

找到则显示「找到最近一次Cookie」及键值对;找不到则提示「未找到包含Cookie的请求」。


5. 导出:HAR、文件与单条请求

5.1 导出为 HAR

HAR 为 HAR 1.2 JSON,可用 Charles、Fiddler、Burp 等导入。文件名类似 apicatcher-export-yyyyMMddHHmmss.har。

入口导出范围是否跟随当前过滤
历史页「导出为HAR」当前过滤结果的全部请求(不只当前页)是(Session、Host、时间、方法、类型、状态码、搜索关键字等与列表一致)
历史页多选后分享 / 导出仅选中的请求否
请求收藏目录导出 HAR该收藏夹内的请求否

界面会提示:「导出请求总数为 N。您可通过修改过滤查询条件过滤需要导出的请求。」导出过程中不要关闭页面。

5.2 导出图片 / 视频 / 音频

入口:历史记录 页的文件管理(文件夹图标)。

  • 三个分类:图片、视频、音频。
  • 可按 Session、Host 缩小范围。
  • 带 Range / Content-Range 的分片会先合并再导出。
  • 单文件可单独导出;批量导出会按 Host 分子目录并打成 ZIP。

请求详情里也可对请求体 / 响应体点「导出文件」,按 Content-Type 存成临时文件再分享。

5.3 导出单条请求

在请求详情打开「导出请求」,可导出:

  • Raw:原始 HTTP 请求 + 响应(.txt)
  • cURL:可在终端重放的命令(.sh)
  • Markdown:Markdown 预览(.md)

6. 自动生成 API 文档

抓到符合条件的 HTTP/HTTPS 请求后,App 会在本地自动生成或更新接口文档,并按 Host 分组。同一接口多次抓包时,只追加尚未出现的字段,不会覆盖已有参数名。

6.1 生成范围与合并规则

仅处理有响应、且状态码不在 301–308 的 HTTP/HTTPS 请求。请求 Content-Type 为 JSON / XML / multipart/form-data / x-www-form-urlencoded,或响应为 JSON / XML 时才会建档。图片、视频、HTML、纯文本等会跳过。

被重写规则或脚本改过的请求不会写入文档。接口唯一键是 方法 + Host + Path(例如 GET + api.example.com + /v1/user)。

合并规则:

  • Query、Header、Body 字段:只增不改已有字段名。
  • Body 示例:仅当这次响应 状态码为 200 时更新示例。
  • 常见标准头(如 Cookie、User-Agent)不会进文档参数;Authorization、Content-Type 以及自定义头会保留。

6.2 导出到 Postman / Apifox / Bruno

入口:

  • Host 的 API 列表右上角导出(导出该 Host 下全部接口)。
  • 单个 API 详情页导出(仅该接口)。
  • 设置 → API 收藏 → 导出,只导出收藏目录里的接口。

可选目标:

目标方式
导出到Postman填写 Postman API Key → 加载并选择 Workspace → 新建 Collection,或选已有 Collection
导出到Apifox填写 Apifox API Key、项目 ID;可选目标目录 ID(空则导入根目录)
导出到Bruno导出含 bruno.json 与 .bru 的 ZIP,在 Bruno 里 Open Collection

Postman、Apifox 的逐步截图见:


7. 质量与性能排查:API 扫描 (API Scan)

基于本地捕获的流量记录,提供非侵入式的 API 质量、安全合规与性能体检。所有分析均在设备本地内存闭环完成。

7.1 内置扫描引擎

  • 敏感信息自查:检测明文传输的手机号、身份证、邮箱及云服务凭据(如 AWS Key、OpenAI API Key)。
  • 异常堆栈泄露:识别响应体中不慎返回的 Java、Python 或 SQL 报错调用栈。
  • 高频调用分析:根据设定阈值(如平均请求间隔小于特定毫秒),排查是否存在由死循环或不当逻辑引发的冗余接口调用。
  • 耗时评估:聚合计算各个接口的 p95、p99 延迟,协助定位后端性能瓶颈。

7.2 自定义质量检测 (Custom Scan)

您可以编写 JS 脚本执行业务定制的合规检查。

  • 返回值规约:函数若认为该请求符合预期,返回 null;若检出不合规(如返回体过大、缺少安全头部),则返回精简描述(≤200字符),系统会自动纳入扫描报告。

💡 常见排障指南:

  • 未分析出结果:确认“扫描范围 (Host/Session)”内是否确实包含有效的 JSON/API 流量记录,而非纯静态资源。为保障体验,单次扫描存在条数上限限制。