Node.js 验证码 API 接入:Fetch 与有界轮询
使用内置 fetch、请求截止时间、固定幂等键和有界轮询;超时后可使用已有 taskId 继续查询。
适用于授权自动化测试、风控 QA 与浏览器集成。请仅在有权测试的站点和业务流程中使用。
前置条件
在服务端或测试运行器中使用 Node.js 22+,无需第三方 HTTP 库。需要具有 tasks 权限的有效 Key、足够余额以及有权测试的站点。注册并验证邮箱后,可在开放时开通自助服务,或绑定已签发的 Key。先查实时价格。
下载并运行
通过下方链接下载 nodejs-client.mjs,创建 task.json 并填写自有授权站点参数:
{"type":"turnstile","task":{"websiteURL":"https://example.com/login","websiteKey":"REPLACE_WITH_SITE_KEY"}}
密钥放在测试环境变量中,不提交到代码仓库。首次请求前,为该业务任务生成并保存一个固定键:
export SOLVEHUB_API_KEY='sh_REPLACE_ME'
export SOLVEHUB_IDEMPOTENCY_KEY='persisted-authorized-test-0001'
export SOLVEHUB_TASK_FILE='task.json'
node nodejs-client.mjs
客户端获知 taskId 后立即写入 stderr;stdout 仅输出完成的 solution。请将 taskId 保存到业务记录。示例可能创建付费任务,单靠占位参数不能构成可用的测试环境。
恢复已有任务
客户端到达截止时间或结果不明时,不要创建替代任务,使用已保存的 ID:
export SOLVEHUB_TASK_ID='SAVED_TASK_ID'
node nodejs-client.mjs
如果未收到 ID,保留原键与完整请求体,在约定的重放窗口内重试。不要把旧键用于不同任务。
故障行为
单次请求超时为 20 秒,总预算 240 秒,轮询间隔 3 秒。可重试故障最多尝试 3 次,遵守 Retry-After(含 HTTP 日期)。所需等待超过剩余预算就停止。这些是客户端参数,不是处理时间保证。
failed/cancelled 结束流程,uncertain 继续查询。客户端拒绝 HTTP 跳转,避免把 Key 发给其他来源;不自动记录完整任务或凭据。生产使用前阅读幂等、错误处理和完整 API 文档。
开发者下载
python-client.py v1.0.0 —— 只依赖标准库;行为与错误码见本页说明。
相关文档
最近更新: