安全范围: 本指南仅适用于你自有或经授权的 QA、staging 与预发布环境。内容覆盖针对你自己 CAPTCHA 集成的诊断、测试与可观测性模式 — 不涉及第三方站点或未授权流程。
结论先说:验证码是 checkout 里会超时、会报错的外部依赖,应该进自动化回归,而不是上线前手工点一次。在 staging 铺一套合成 SKU,把“判类型 → 拿 token → 后端校验 → 模拟订单号”串成一条能反复跑的用例。
先划测试面:验证码挂在哪几步
| 环节 | 常见类型 | 断言什么 |
|---|---|---|
| 注册与登录 | reCAPTCHA v2 | widget 渲染是否正常 |
| 下单页 | Cloudflare Turnstile | token 过期后能否重试 |
| 促销活动页 | 图片/九宫格验证码 | 峰值排队与超时 |
境内站点的注册页更常见 GeeTest(极验)滑块;reCAPTCHA 依赖 Google 托管脚本,境内加载不稳,会让 staging 的失败率虚高。CaptchaAI 覆盖 reCAPTCHA v2/v3、Turnstile、GeeTest v3 与图片、九宫格,v4 仍是即将支持。
合成商品目录怎么铺
- SKU 统一加
QA-前缀,订单表里一眼可筛。 - 价格与库存写死,避免用例因数据漂移变红。
- 支付走沙箱,订单号只落 staging 库,不碰生产数据。
判类型、拿 token、断言后端
在响应里搜 data-sitekey、g-recaptcha、cf-turnstile,命中哪个走哪个提交方法;sitekey 从 staging 配置读,预发布和生产往往是两把 key。拿到 token 只完成一半:要断言的是后端返回的模拟订单号,覆盖有效、过期、为空三个分支。
最小 QA 调用示例
从环境变量读 key 与页面信息,提交后按 taskId 取结果,可包进 pytest 夹具:
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()
轮询放在外层:每 3–5 秒调一次,设上限后抛超时,别写成无限循环。
日志与上线前清单
- 每次运行落结构化日志:耗时、响应码、任务编号、队列深度。
- 三套环境写独立通道,用 correlation id 串链路。
- API Key 放 CI secret 或 vault,不进源码与日志。
- 瞬时错误配幂等重试与上限,鉴权类错误直接失败。
常见故障与排查方向
| 现象 | 处理方式 |
|---|---|
| 找不到 widget | staging 选择器或等待时机与生产不一致 |
返回 ERROR_NO_SLOT_AVAILABLE |
线程跑满,指数退避并降并发 |
| 后端拒绝 token | action / sitekey / secret 串了环境 |
| 本地过、CI 挂 | 检查 CI 出口 IP 与页面语言包 |
常见问题
staging 没有真实流量,结论可信吗?
集成正确性可信:渲染、取 token、后端校验、错误分支都与流量无关。速率表现不可信,真实峰值下的耗时要靠压测环境逼近。
大促前做并发回归,线程要开多少?
线程数对应同时在跑的任务数,不是用例总数。串行冒烟用 BASIC($15/月,5 线程)够;要复现下单峰值,一般从 ADVANCE($90/月,50 线程)起估。套餐按线程计费,线程内识别次数不另计。
站点用的是极验滑块,还适用吗?
适用,换掉的只是提交方法与参数。CaptchaAI 支持 GeeTest(极验)v3,v4 尚未开放,其余环节不用改。
相关阅读
- CaptchaAI 快速上手
- 授权范围的验证码 QA 测试
- 自有表单的接口测试
- 浏览器挂了但 API 正常
- reCAPTCHA v2 识别 API
- Turnstile token 获取
- GeeTest v3 识别接口
用 CaptchaAI 在自有 staging 环境跑通这条链路。