切换主题
📡 抓包与断点
抓包用于观察经过代理端的请求 / 响应,断点用于干预请求的处理流程。管理后台「HTTP Mock → 抓包」页面提供实时抓包与断点调试能力。
实时抓包
开启抓包
抓包为会话级:在「HTTP Mock → 抓包」页面按规则进入专属抓取页,点击「开始抓取」即开始实时捕获该规则命中的请求 / 响应,再点击「开启断点」可干预请求处理流程。
- 抓取会话由浏览器与服务端的 SSE 长连接维持
- 离开页面自动停止:关闭 / 刷新页面时前端主动断开连接
- 连接断开自动停止:长连接中断(网络异常等)时服务端自动移除会话,抓取随之停止
- 无需在规则管理页进行任何抓取操作;规则管理页仅负责规则的增删改查
抓取条件(规则内二次过滤)
规则匹配条件可能很宽泛(如 GET /api/user/* 且不限请求头),若只关注其中某一部分流量(某个接口、某个请求头等),可展开规则抓取页的「抓取条件」面板,在规则命中基础上再叠加一层过滤:
| 条件 | 说明 |
|---|---|
| 方法 | 只抓取指定的 HTTP 方法,任一命中即可 |
| 路径 | 只抓取匹配的路径,任一命中即可;支持 ~ 正则、:参数、* 通配、精确匹配 |
| 请求头 | 键值匹配(~ 开头为正则),全部命中才通过 |
| Query | 键值匹配(~ 开头为正则),全部命中才通过 |
条件随抓取会话的参数即时生效,修改后对抓取与断点立即生效,无需重新开启。
抓取条件模板
常用抓取条件可保存为命名模板,方便快速选用:
- 快速选用:抓取页「抓取条件」面板顶部下拉选择模板,一键填充方法 / 路径 / 请求头 / Query
- 保存为模板:设置好条件后点击「保存为模板」并命名
- 管理模板:点击「管理模板」可重命名、删除已保存的模板
抓包内容
每条抓包记录包含:
| 字段 | 说明 |
|---|---|
| 所属服务 / 规则 | 命中的服务与规则 |
| 方法 / 路径 | 请求方法、接口路径与 Query |
| 请求头 / 请求体 | 请求快照 |
| 响应状态码 / 响应头 / 响应体 | 响应快照(响应体截取前 N 字节) |
TIP
抓包不阻断请求,只记录快照,适合生产流量观察。
实时推送
通过 SSE(Server-Sent Events)实现实时推送:GET /api/captures/stream(抓包记录实时流)、GET /api/captures/temp/stream(抓取会话实时流,参数 ruleId / condition / bp / timeout,连接断开即自动停止抓取)。
断点调试
断点用于在请求处理前挂起请求,在线查看与修改请求内容后决定放行方式。
开启断点
在规则专属抓取页先「开始抓取」,再点击「开启断点」,命中该规则(满足抓取条件)的请求将被挂起等待处理。
断点处理流程
三种处理方式
| 方式 | 说明 |
|---|---|
| 放行(continue) | 请求继续按规则处理(mock / proxy / replay),处理结果回传给断点页面展示 |
| 丢弃(drop) | 请求直接终止,返回 {"message":"请求已被断点丢弃"} |
| 超时自动放行 | 超过任务断点超时(可在抓取页调整,默认 30 秒)未处理时自动继续,避免请求永久挂起 |
断点期间修改请求
断点挂起期间,可在管理后台查看请求的方法、路径、头、Query 与请求体,并可修改请求内容后再放行,实现「改包转发」的调试能力。
数据管理
- 查询:抓包列表支持按状态 / 服务 / 规则 / 关键字等条件筛选
- 删除:删除单条或按条件清空抓包数据
- 保留上限:
proxy.maxCaptures(默认 200),超出自动淘汰最旧已完成记录
敏感数据脱敏
抓包会记录完整的请求 / 响应,其中可能包含账号口令、令牌、手机号、身份证、银行卡等敏感数据。开启脱敏后,入库前即对敏感数据打码,数据库内不落明文(重放时使用的也是脱敏后的数据),避免敏感信息以明文留存。
开启方式
在 config.yaml 中配置 proxy.masking:
yaml
proxy:
masking:
enabled: true # 总开关(默认关闭)
builtinFields: [] # 内置敏感字段名启用清单:为空启用全部内置;配置后仅启用列出的(如 authorization / token / phone)
builtinPatterns: [] # 内置敏感值正则启用清单:为空启用全部;配置后仅启用列出的(phone / idcard / bankcard / email)
headerFields: # 追加的敏感字段名(可选,始终生效)
- "X-Api-Key"
valuePatterns: # 追加的敏感值正则(可选,始终生效,命中内容替换为 ******)
- '\bCUST-\d{6}\b'1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
内置字段/正则按需启用:
builtinFields、builtinPatterns留空时启用全部内置规则; 配置为列表后,仅列表中的内置规则生效(例如只脱敏 Authorization 与手机号,不脱敏 Cookie / 银行卡)。 自定义的headerFields/valuePatterns不受启用清单限制,始终生效。
内置规则
| 类型 | 规则 |
|---|---|
| 敏感字段名 | Authorization / Cookie / token / password / secret / api-key / session / id-card / bank-card / phone / mobile / email 等(Header、Query、JSON key 均按字段名识别,大小写不敏感) |
| 敏感值正则 | 手机号(保留前 3 后 4,如 138****8000)、身份证(保留前 6 后 4)、银行卡(保留前 6 后 4)、邮箱(保留首字符与域名,如 u***@example.com) |
脱敏效果
- 敏感字段名命中:值中可识别的敏感格式保留前后几位,未知格式整体替换为
******(如token=abc123→token=******) - 非敏感字段:值中仍会做手机号 / 身份证 / 银行卡 / 邮箱等值正则脱敏
- 覆盖范围:抓包记录的请求路径、请求头、Query、请求体(JSON 递归 / 表单 / 文本)、响应头、响应体,以及断点面板中的断点请求 / 断点响应
- 不影响转发:脱敏只作用于抓包存储与断点展示,代理转发给下游的真实请求 / 响应不受影响
相关 API
抓包记录
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/captures | 抓包列表 |
| GET | /api/captures/stream | 抓包实时流(SSE) |
| DELETE | /api/captures/:id | 删除单条 |
抓取会话
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/captures/temp/stream | 抓取会话实时流(SSE):参数 ruleId(规则 ID)、condition(条件 JSON)、bp(1 开启断点)、timeout(断点超时秒数,默认 30)。连接建立即开始抓取,连接断开自动停止 |
抓取条件模板
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/captures/presets | 模板列表 |
| POST | /api/captures/presets | 创建模板 |
| PUT | /api/captures/presets/:id | 更新模板 |
| DELETE | /api/captures/presets/:id | 删除模板 |
断点
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/breakpoints | 断点列表 |
| GET | /api/breakpoints/stream | 断点通知实时流(SSE) |
| POST | /api/breakpoints/:id/continue | 放行 |
| POST | /api/breakpoints/:id/drop | 丢弃 |