安全范围: 本指南仅适用于你自有或经授权的 QA、staging 与预发布环境。内容覆盖针对你自己 CAPTCHA 集成的诊断、测试与可观测性模式 — 不涉及第三方站点或未授权流程。
reCAPTCHA v3 不弹图形验证码,只给交互打一个 0 到 1 的分数。真正影响体验的常是三处配置:action 混用、阈值一刀切、低分直接拒绝——调好后用 CaptchaAI 验证即可。
action 命名:每个功能一个独立名字
不同入口复用同一个 action 名称,Google 就没法按场景拆分风险。按场景各起一个独立名字:
login:登录入口signup:注册入口checkout:结算入口
后台就能按场景看分数分布。
按场景设阈值,别用一个数字打天下
不同场景对误判的容忍度不一样:
| 场景 | 建议策略 |
|---|---|
| 结算页 | 阈值更保守,误判成本高 |
| 登录 / 浏览 | 阈值可适当放宽 |
按 action 单独配置阈值,比全局套用一个数字更可靠。
低分不等于拒绝,给用户一条人工审核的路
分数低于阈值就直接拒绝,容易误伤真实用户。更稳妥的做法是切到 v2 挑战或追加一步验证,而不是直接拦截。
在 staging 里验证整条链路
用 CaptchaAI 在自有 staging 反复触发完整流程,覆盖正常、低分、人工兜底三条路径。
案例:海外结算页遇上企业出口网关
海外买家走企业出口或代理网关时,流量特征和普通用户不同,容易被单一阈值误判。建议先在 staging 回放验证。
故障排查
| 问题 | 处理方式 |
|---|---|
| 测试找不到 widget | 检查 staging 环境中的选择器与等待时机 |
CaptchaAI 返回 ERROR_NO_SLOT_AVAILABLE |
在内部 pipeline 中按指数退避重试 |
| 后端 QA 拒绝 token | 对照真实配置核对 action / sitekey / secret |
| 端到端时延偏高 | 在自有环境中重新测量并检查内部网络抖动 |
可观测性
为每次 QA 运行生成结构化日志,用分布式追踪关联 correlation id,方便按单一 id 复盘。建议采集:
- token 耗时
- HTTP 响应码
- 任务编号
- 队列深度
上线检查清单
- 测试范围限定在自有或经授权的资源。
- CaptchaAI key 存放在 CI secret 或 vault。
- 记录调用耗时与响应状态码。
- 瞬时错误配置幂等重试与上限。
- 测试可在 CI 中可复现地重复运行。
示例 QA 调用
下面的 Python 示例展示了在自有 staging 环境中通过 CaptchaAI 测试一个 CAPTCHA widget 的最小流程。
import os
import requests
API_KEY = os.environ['CAPTCHAAI_KEY']
QA_PAGE_URL = os.environ['QA_PAGE_URL'] # 例如 https://staging.example.com/qa-login
QA_SITE_KEY = os.environ['QA_SITE_KEY']
def submit_qa_recaptcha() -> str:
payload = {
'clientKey': API_KEY,
'task': {
'type': 'NoCaptchaTaskProxyless',
'websiteURL': QA_PAGE_URL,
'websiteKey': QA_SITE_KEY,
},
}
response = requests.post(
'https://api.captchaai.com/createTask',
json=payload,
timeout=30,
)
response.raise_for_status()
return response.json()['taskId']
def fetch_qa_result(task_id: str) -> dict:
payload = {'clientKey': API_KEY, 'taskId': task_id}
response = requests.post(
'https://api.captchaai.com/getTaskResult',
json=payload,
timeout=30,
)
response.raise_for_status()
return response.json()
常见问题
这套流程会不会碰到生产环境的真实用户?
不会,示例仅用 staging.example.com 等授权环境。
API key 能直接写在代码仓库里吗?
不能,用 CI secret 管理器或 vault 注入,已提交的 key 立即轮换。
在中国大陆网络环境测试,为什么 reCAPTCHA v3 widget 经常加载不出来?
reCAPTCHA v3 依赖 Google 托管脚本,大陆网络下加载不稳定,先排查网络能否访问 Google 域名。
遇到瞬时错误,重试策略怎么设计?
指数退避(1s、2s、4s)加上限重试;网络错误、5xx、ERROR_NO_SLOT_AVAILABLE 可重试,鉴权错误不重试。
安全相关指南
- CaptchaAI 快速入门
- 授权 CAPTCHA QA 测试
- 自有表单的 CAPTCHA endpoint 测试
- 浏览器失败但 API 通过的调试
- 用 API 解决 reCAPTCHA v2
- 用 API 解决 Cloudflare Turnstile
- 用 API 解决 GeeTest v3
在自有环境中用 CaptchaAI 验证你的 CAPTCHA 集成效果。