Caputchin
托管验证

Webhook 载荷参考

当一次提交通过验证时,转发器会向你配置的 webhook URL 发一个 POST。这一页就是那个请求的确切契约。设置演练见 设置托管验证;概念见 不用后端也能验证

请求行与头

转发器发一个带 JSON 体和这些头的 POST

content-typeapplication/json
acceptapplication/json
user-agentCaputchin-Forwarder/0.1
x-caputchin-test1,仅在一次仪表盘 测试投递 上出现;真实提交上不存在

这个调用以禁用重定向、几秒超时的方式发送。请求不签名;webhook URL 的保密性即为它的身份验证。

这个体是一个带两个顶层键的 JSON 对象,caputchin(Caputchin 添加的验证元数据)和 form(你提交的字段):

{
  "caputchin": {
    "site_key": "cpt_pub_...",
    "session_id": "...",
    "game_id": "caputchin/games/leaf-memory",
    "score": 847,
    "duration_ms": 4200,
    "verified_at": 1748640000000
  },
  "form": {
    "email": "visitor@example.com",
    "message": "Hello!"
  }
}

caputchin 对象

字段类型含义
site_keystring这次提交来自的那个公开 cpt_pub_... 密钥。
session_idstring一个不透明的验证会话 id,对关联或去重有用。在一次测试投递上它带前缀 test_
game_idstring 或 null访客玩的那个游戏。当验证不带游戏运行时为 null。
scorenumber 或 null游戏分数。给分析用的客户端声称的元数据,绝非一个信任信号。不适用时为 null。
duration_msnumber 或 null访客玩游戏花了多久,以毫秒计。客户端声称的,非一个信任信号。不适用时为 null(例如一次没有游戏的验证)。
verified_atnumberCaputchin 何时核验了这个令牌,以毫秒计的 Unix 纪元。
testboolean(可选)仅在一次仪表盘测试投递上出现且为 true。真实提交上不存在。

game_idscoreduration_ms 在一次真实提交上各自都可为 null,所以在读它们之前先防 null。caputchin 字段里没有一个是一个信任决定:信任就是这个请求终究到达了,因为一次核验失败的提交绝不会被转发。

form 对象

form 是一个把你提交的字段作为字符串键和字符串值的扁平对象,恰好如所提交的那样,只有一处改动:caputchin-token 字段在投递前被剥离,所以它绝不出现在这里。转发器只接受文本字段;一次携带文件上传的提交会在任何投递之前被拒绝。

你的处理器应该返回什么

返回任何 2xx 状态以确认收到。转发器把一个非 2xx 响应、一次超时、或一次连接失败都当作一次失败的投递,而一次失败的投递不会被重试。在 统计 页上跟踪投递健康度。

另见

本页内容