把 BugCapturer 指向你拥有的任意接口,每份报告都会以带签名、带版本号的 JSON 送达 —— 适合自有服务、消息队列与内部工具。
以下结构在 v1 内保证稳定:只会新增字段,不会静默改名。
| 字段 | 类型 | 说明 |
|---|---|---|
| event | string | 事件名:share.created(报告)或 test(测试按钮) |
| schema_version | number | 结构版本号,当前为 1 —— 解析前请先校验 |
| share.report_url | string | 指向完整报告的公开链接 |
| report.console_errors | array | 控制台错误正文:message 与 source,最多 30 条 |
| report.network_errors | array | 失败请求:method、url、status,最多 30 条 |
| report.*_errors_count | number | 错误条数 —— 与上面两个数组等长 |
| reporter | object | 站点传入的身份(name / email / uid),匿名时为空串 |
每次请求都用你持有的密钥签名,接口可以拒绝任何伪造请求。
| 签名请求头 | x-bugcapturer-signature |
|---|---|
| 算法 | 对原始请求体计算 HMAC-SHA256 |
| 密钥 | 创建集成时仅展示一次 |
| 比较方式 | 请使用恒定时间比较 |
const crypto = require('crypto');
const expected = crypto
.createHmac('sha256', process.env.BC_WEBHOOK_SECRET)
.update(rawBody)
.digest('hex');
const received = req.headers['x-bugcapturer-signature'];
crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(received)
);