您的验证码解决率一夜之间从 95% 下降到 60%。在联系支持人员之前,本指南将进行结构化诊断以查明根本原因 - 无论是您的代码、代理、目标站点还是 CaptchaAI 服务。
诊断决策树
Solve rate dropped
├── Is the API returning errors? → Check error codes
│ ├── ERROR_WRONG_USER_KEY → API key issue
│ ├── ERROR_ZERO_BALANCE → Balance depleted
│ ├── ERROR_NO_SLOT_AVAILABLE → Rate limiting
│ └── ERROR_CAPTCHA_UNSOLVABLE → CAPTCHA changed
├── Are tokens returned but rejected by the target site?
│ ├── Token expired before submission → Speed up injection
│ ├── Sitekey changed → Re-extract from page
│ └── Domain mismatch → Check pageurl parameter
├── Are proxies failing?
│ ├── Proxy banned by target → Rotate proxies
│ └── Proxy timeout → Check proxy health
└── Did the target site change?
├── New CAPTCHA type → Update method parameter
├── JavaScript changes → Re-analyze page
└── Rate limiting by site → Reduce frequency
步骤1:检查CaptchaAI错误代码
运行快速诊断脚本:
# diagnose_solve_rate.py
import os
import requests
from collections import Counter
API_KEY = os.environ.get("CAPTCHAAI_KEY", "YOUR_API_KEY")
def check_balance():
"""Verify API key and balance."""
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "getbalance", "json": "1",
})
result = resp.json()
print(f"Balance: {result}")
return result
def test_solve(sitekey, pageurl, runs=5):
"""Run test solves and collect error statistics."""
errors = Counter()
successes = 0
for i in range(runs):
# Submit
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"json": "1",
})
result = resp.json()
if result.get("status") != 1:
errors[result.get("request", "UNKNOWN")] += 1
print(f" Run {i+1}: Submit error: {result.get('request')}")
continue
task_id = result["request"]
import time
time.sleep(15)
# Poll
for _ in range(25):
poll = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get",
"id": task_id, "json": "1",
})
poll_result = poll.json()
if poll_result.get("status") == 1:
successes += 1
print(f" Run {i+1}: Solved")
break
if poll_result.get("request") != "CAPCHA_NOT_READY":
errors[poll_result.get("request", "UNKNOWN")] += 1
print(f" Run {i+1}: Error: {poll_result.get('request')}")
break
time.sleep(5)
else:
errors["TIMEOUT"] += 1
print(f" Run {i+1}: Timeout")
print(f"\nResults: {successes}/{runs} solved")
if errors:
print(f"Errors: {dict(errors)}")
# Run diagnostics
print("=== Balance Check ===")
check_balance()
print("\n=== Test Solves ===")
test_solve("YOUR_SITEKEY", "https://your-staging.example.com", runs=5)
步骤 2:验证目标站点参数
解决率下降的最常见原因是站点密钥或页面结构的更改。
检查sitekey是否改变
访问目标页面,打开DevTools(F12),搜索:
- reCAPTCHA:
data-sitekey或grecaptcha.render调用 - Cloudflare Turnstile:旋转门小部件中的
data-sitekey - GeeTest:GeeTest初始化中的
gt参数
与代码中的 sitekey 进行比较。一个角色的改变就会导致100%的失败。
检查验证码类型是否发生变化
一些站点在验证码提供商之间迁移:
- reCAPTCHA v2 → reCAPTCHA v3(不可见)
- 验证码 → Cloudflare Turnstile
- 图像验证码 → reCAPTCHA Enterprise
如果类型更改,请相应更新您的 method 参数。
第 3 步:评估代理运行状况
代理质量直接影响解决率,特别是对于 CaptchaAI 使用代理的基于令牌的验证码。
| 代理问题 | 症状 | 处理方式 |
|---|---|---|
| 代理被目标禁止 | 令牌已解决但被拒绝 | 轮换到新的自有服务器基础设施 |
| 代理返回错误 | ERROR_PROXY_NOT_FOUND |
验证代理是否有效且可访问 |
| 检测到数据中心代理 | 较低的解决率 | 切换到自有服务器基础设施 |
| 代理地理位置不匹配 | 结果不一致 | 将代理国家/地区与目标网站相匹配 |
首先在没有代理的情况下进行测试(如果验证码类型支持无代理解决),以确定代理是否是问题所在。
第 4 步:检查令牌时间
CAPTCHA 令牌的有效性有限:
| 验证码类型 | 令牌生命周期 |
|---|---|
| reCAPTCHA v2 | 约 120 秒 |
| reCAPTCHA v3 | 约 120 秒 |
| Cloudflare Turnstile | 〜300秒 |
| GeeTest v3 | 〜60秒 |
如果您的管道在接收令牌和将其注入表单之间花费的时间太长,则令牌会过期并且站点会拒绝它。
修复: 测量 getTaskResult 和表单提交之间的时间。如果 > 60 秒,请优化您的管道。
第 5 步:分析误差分布
按频率对错误进行排序以查找根本原因:
| 错误 | 意义 | 行动 |
|---|---|---|
ERROR_CAPTCHA_UNSOLVABLE |
验证码太复杂或已更改 | 向CaptchaAI举报;检查sitekey是否正确 |
ERROR_WRONG_CAPTCHA_ID |
轮询错误的任务 ID | 修复代码中的任务 ID 跟踪 |
ERROR_ZERO_BALANCE |
积分用完 | 充值余额 |
ERROR_NO_SLOT_AVAILABLE |
速率有限 | 减少并发或增加延迟 |
CAPCHA_NOT_READY(超时) |
解决耗时过长的问题 | 增加轮询超时;检查 sitekey 是否有效 |
第 6 步:与基线进行比较
如果您之前运行过基准测试,请将当前指标与基准进行比较:
| 公制 | 基线 | 当前的 | 三角洲 | 忧虑? |
|---|---|---|---|---|
| 解决率 | 95% | ? | > 5% 下降 = 调查 | |
| 中值解决时间 | 15秒 | ? | > 50% 增加 = 调查 | |
| 错误率 | 2% | ? | > 5% = 调查 | |
| 代币接受率 | 98% | ? | > 3% 下降 = 网站已更改 |
何时联系支持人员
如果出现以下情况,请联系 CaptchaAI 支持人员:
- 所有诊断步骤均通过,但解决率仍然很低
ERROR_CAPTCHA_UNSOLVABLE率在之前工作的站点密钥上超过 20%- 平衡显示正确,但求解仍然失败
- 问题持续2个多小时
在您的报告中包括:
- 验证码类型和站点密钥
- 目标站点网址
- 错误分布(来自诊断脚本)
- 问题何时开始
- 您对代码所做的任何更改
故障排除快速参考
| 设想 | 最可能的原因 | 第一个行动 |
|---|---|---|
100%失败,全部ERROR_WRONG_USER_KEY |
API 密钥无效 | 重新检查 API 密钥 |
| 数天内逐渐下降 | 代理降级 | QA 测试会话 |
| 突然跌至0% | 站点密钥或页面已更改 | 重新提取验证码参数 |
| 已解决,但令牌被网站拒绝 | 令牌过期或域不匹配 | 检查时序和 pageurl |
| 在测试站点上工作,但在目标上失败 | 特定于站点的限制 | 比较站点之间的参数 |
常问问题
CaptchaAI 能否解决特定网站的费率变化问题?
是的。如果站点升级其验证码配置(例如,更难的挑战、企业功能),解决率可能会暂时降低,直到 CaptchaAI 的求解器适应。
我应该报告每个 ERROR_CAPTCHA_UNSOLVABLE 吗?
不会。对于复杂的验证码,2-5% 的无法解决率是正常的。仅当比率持续超过 15-20% 时才报告。
我预计解决率要多快才能恢复?
如果问题出在 CaptchaAI 这边,通常会在数小时内恢复。如果目标站点发生更改,您可能需要更新集成参数。
相关文章
- 验证码解决率 Sli Slo 监控
- 时间序列验证码解决性能趋势
- 验证码解决成功率下降诊断
下一步
保持您的验证码管道健康 —获取您的 CaptchaAI API 密钥。
相关指南:
- CaptchaAI 错误代码参考
- 代理质量影响解决率
- 基准测试解决时间