断点调试:在特定请求处暂停观察
断点是什么
断点的概念来自软件开发调试器——在代码的某个位置设置断点,程序运行到这里就暂停,让你观察当前状态后再继续。
httpCanary 把这个概念搬到了网络请求层面:当某个匹配的请求到来时暂停,让你查看和修改这个请求,再决定是否放行。
设置断点
进入断点设置
设置 → 断点 → 添加断点规则。
配置触发条件
和静态注入的匹配条件类似,断点也需要定义「什么时候触发」:
| 条件 | 说明 |
|---|---|
| Host | 目标域名 |
| URL 路径 | URL 中的路径匹配 |
| 请求方法 | GET/POST 等 |
| 应用 | 发起请求的 App |
多个条件之间可以 AND 或 OR 组合。
选择暂停时机
断点可以配置在两个时机暂停:
- 请求发出前:客户端刚发出请求,但还没到服务器。此时可以修改请求内容。
- 响应返回后:服务器已返回响应,但还没到客户端。此时可以修改响应内容。
断点触发后的操作
当断点触发暂停时,会弹出操作面板:
请求发出前暂停
此时请求还没发出去,可以:
| 操作 | 效果 |
|---|---|
| 查看请求详情 | 完整查看请求内容 |
| 修改请求 | 改 Header、参数、Body 等 |
| 放行 | 把(可能修改过的)请求发给服务器 |
| 丢弃 | 直接中止请求,不发送到服务器 |
| 跳过断点 | 本次放行但不修改,下次再遇到匹配的请求继续暂停 |
响应返回后暂停
此时服务器已经返回了响应,可以:
| 操作 | 效果 |
|---|---|
| 查看响应详情 | 完整查看响应内容 |
| 修改响应 | 改状态码、Header、Body 等 |
| 放行 | 把(可能修改过的)响应发给客户端 |
| 丢弃 | 不把响应发给客户端 |
断点 vs 动态注入
这两个功能确实很像,都是「拦截 → 查看 → 修改 → 放行」。主要区别:
| 对比项 | 断点 | 动态注入 |
|---|---|---|
| 触发方式 | 预设规则自动触发 | 手动开/关 |
| 匹配精度 | 可配置精确条件 | 手动控制拦截时机 |
| 多规则 | 可配置多个断点规则 | 同一时刻只能处理一个 |
| 典型用途 | 精确匹配某个特定接口每次都暂停 | 临时拦一下看看 |
断点 vs 静态注入
- 断点:暂停等待手动操作——适合「我想看看再决定」
- 静态注入:自动修改无需等待——适合「我知道改什么,每次都改」
实战中经常配合使用:先用断点拦截看清楚数据结构,再用静态注入固化成自动规则。
注意事项
- 断点暂停期间,客户端那边的连接在等待——操作太慢可能超时
- 断点规则要及时清理,不要忘了关导致每次都暂停
- 同一个请求可能先触发「请求发出前」断点,服务器处理完又触发「响应返回后」断点