Skip to content

错误码 ​

此表供站点所有者参考。验证组件将这些错误码放在 error 事件的 code 中,validateChallenge 将它们作为 reason 返回,capd 则将它们显示为被拦截和失败事件的原因。

错误码来源含义
missing_endpoint验证组件验证组件既没有 data-cap-api-endpoint,也没有 CAP_CUSTOM_FETCH。
network_error验证组件质询端点返回了错误,或未收到质询。
challenge_parse_error验证组件质询响应不是 JSON。
challenge_unsupported验证组件质询使用了此验证组件版本无法求解的协议,或在不支持 WebAssembly 的浏览器中使用 HashWX。
solve_failed验证组件求解 worker 失败、请求无法到达服务器,或发生了没有专属错误码的错误。
redeem_failed验证组件/redeem 响应不是 JSON。
invalid_solution验证组件、服务端服务端拒绝了兑换。在验证组件中,事件的 message 是服务端的 error。由服务端返回时,表示工作量证明错误。
invalid_expires验证组件令牌的过期时间不在接下来的 24 小时内,说明服务器时钟有误。
instr_csp_blocked验证组件、服务端页面的内容安全策略拦截了 instrumentation 脚本。请按内容安全策略所述设置 CAP_SCRIPT_NONCE。
instr_natives_tampered验证组件、服务端脚本依赖的浏览器函数在运行前被扩展或页面脚本替换。
instr_env_failed验证组件、服务端程序运行前的环境检查失败。脚本并未运行在真实浏览器页面中,或框架被修改。
instr_script_failed验证组件、服务端环境检查通过后,程序抛出异常。
instr_blocked验证组件脚本自身的自动化浏览器检查失败。如果密钥拦截自动化浏览器,服务端记录 instr_automated_browser,否则记录 instr_failed。
instr_timeout验证组件、服务端验证组件通知脚本完成后,脚本未在 20 秒内响应。
invalid_body, missing_token, missing_solutions, invalid_solutions服务端/redeem 请求格式错误。
invalid_token服务端质询令牌被伪造、格式错误,或使用了其他密钥签名。
scope_mismatch服务端令牌属于其他站点密钥或 scope。
expired服务端质询在兑换前已过期。
already_redeemed服务端质询已被使用。失败的 instrumentation 检查也会消耗它。
nonce_store_error服务端consumeNonce 抛出异常。
instr_missing服务端请求没有 instrumentation 结果。
instr_corrupted服务端服务端无法解密质询的 instrumentation 数据,通常是因为密钥发生了变化。
instr_expired服务端instrumentation 结果在质询过期后才到达。
instr_stale服务端结果声称的耗时超过质询允许的时长。
instr_oversized服务端收集的数据超过 65,536 个字符。
id_mismatch服务端结果属于其他质询。
failed_challenge服务端结果中的数值错误。结果被修改,或浏览器执行程序时计算错误。
invalid_state, missing_output, missing_meta, invalid_meta服务端结果或密封的质询数据格式错误。
instr_failed服务端验证组件报告了服务端不识别的失败。
instr_automated_browser服务端自动化浏览器检查失败。blockedBy 列出失败项。
instr_probe_missing服务端密钥拦截自动化浏览器,但结果没有浏览器信息。
instr_automated_interaction服务端脚本派发了三次或更多点击或按键。见交互检测。
instr_host_unreachable服务端脚本无法读取框架外的页面,而密钥策略依赖这些信息。
instr_isolated服务端页面设置了 CAP_ISOLATE,而此密钥需要隔离框架无法收集的交互、行为或智能体数据。请关闭此密钥上的这些拦截设置,或移除 CAP_ISOLATE。
instr_widget_outdated服务端旧版验证组件无法满足此密钥的要求。请更新验证组件。
behavior_missing服务端行为评分已开启,但结果没有行为轨迹。
behavior_automated服务端行为分数达到阈值。
behavior_no_interaction服务端没有任何操作按下验证组件,而密钥要求交互。
behavior_agent服务端检测到 AI 智能体,且密钥拦截它。
rate_limitedcapd客户端超过了密钥的速率限制。
non_browser_ua, missing_headercapd质询请求未通过密钥的请求过滤器。
rule:<id>capd密钥上的某条规则拦截了请求。
signal:<flag>capd密钥设置为在出现该风险标志时拦截。

capd 的 /redeem 响应会在自己的 reason 字段中重命名其中一些错误码:instr_automated_browser 变为 automated_browser_detected,instr_automated_interaction 变为 automated_interaction_detected,instr_corrupted 变为 corrupted_instrumentation_data,instr_missing 变为 missing_instrumentation_response,instr_expired 变为 expired,instr_timeout 变为 timeout,并以 429 状态发送。