Quando sua taxa de resolução cair, não adivinhe – siga este diagnóstico sistemático para encontrar e corrigir a causa raiz.
Fluxograma de Diagnóstico
Success rate dropped
│
├── Are tokens being generated?
│ ├── NO → Check API errors
│ │ ├── ERROR_WRONG_GOOGLEKEY → Sitekey changed. Re-extract.
│ │ ├── ERROR_BAD_PARAMETERS → Check required params
│ │ ├── ERROR_NO_SLOT → Retry with backoff
│ │ └── Other errors → See error decision tree
│ │
│ └── YES → Tokens generated but rejected by target site
│ │
│ ├── Token expired before use?
│ │ └── YES → Submit token faster (< 60-120s)
│ │
│ ├── Token used for wrong domain?
│ │ └── YES → Check pageurl matches submission domain
│ │
│ ├── reCAPTCHA v3 score too low?
│ │ └── YES → Check action parameter, try score_qa
│ │
│ ├── Site changed CAPTCHA type?
│ │ └── YES → Re-detect CAPTCHA type
│ │
│ └── Site added additional checks?
│ └── YES → Check for sinal de navegadoring, cookies, headers
Etapa 1: meça sua taxa atual
import requests
import time
from collections import defaultdict
class SuccessTracker:
"""Track solve success rates over time."""
def __init__(self):
self.stats = defaultdict(lambda: {"attempts": 0, "success": 0, "errors": defaultdict(int)})
def record(self, method, success, error_code=None):
self.stats[method]["attempts"] += 1
if success:
self.stats[method]["success"] += 1
elif error_code:
self.stats[method]["errors"][error_code] += 1
def report(self):
for method, data in self.stats.items():
rate = data["success"] / data["attempts"] * 100 if data["attempts"] > 0 else 0
print(f"\n{method}:")
print(f" Attempts: {data['attempts']}")
print(f" Success: {data['success']} ({rate:.1f}%)")
if data["errors"]:
print(" Errors:")
for err, count in sorted(data["errors"].items(), key=lambda x: -x[1]):
print(f" {err}: {count}")
tracker = SuccessTracker()
Etapa 2: Identifique a categoria do problema
Categoria A: falhas no nível da API
A API CaptchaAI retorna um erro em vez de um token.
def diagnose_api_failures(api_key, method, params, attempts=10):
"""Run test solves and collect error patterns."""
errors = defaultdict(int)
successes = 0
for i in range(attempts):
try:
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": api_key, "method": method, "json": 1, **params,
}, timeout=30)
result = resp.json()
if result.get("status") != 1:
errors[result.get("request", "UNKNOWN")] += 1
continue
task_id = result["request"]
# Quick poll
time.sleep(15)
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key, "action": "get",
"id": task_id, "json": 1,
}, timeout=15)
data = resp.json()
if data.get("status") == 1:
successes += 1
else:
errors[data.get("request", "POLL_ERROR")] += 1
except Exception as e:
errors[f"EXCEPTION:{type(e).__name__}"] += 1
time.sleep(2)
print(f"\nResults: {successes}/{attempts} success")
for err, count in sorted(errors.items(), key=lambda x: -x[1]):
print(f" {err}: {count}")
Categoria B: Rejeição de Token
CaptchaAI retorna um token válido, mas o site de destino o rejeita.
Causas comuns:
| Causa | Verifique |
|---|---|
| Token expirou | Usando token > 120s após geração |
| Incompatibilidade de domínio | pageurl não corresponde ao domínio de envio |
| pontuação v3 muito baixa | O site requer 0,7+, mas o solucionador obtém 0,3 |
| Ação ausente | v3 requer parâmetro de ação correspondente |
| Parâmetros alterados no site | Sitekey ou estrutura da página alterada |
Etapa 3: corrigir problemas comuns
Correção: expiração do token
def solve_and_use_immediately(api_key, sitekey, pageurl):
"""Solve and use token as fast as possible."""
# Submit
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": api_key,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"json": 1,
}, timeout=30)
task_id = resp.json()["request"]
# Poll aggressively
for _ in range(24):
time.sleep(5)
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key, "action": "get",
"id": task_id, "json": 1,
}, timeout=15)
data = resp.json()
if data.get("status") == 1:
token = data["request"]
# USE IMMEDIATELY — don't store for later
submit_form(token)
return True
return False
Correção: chave de site obsoleta
def solve_with_fresh_params(api_key, pageurl):
"""Re-extract sitekey before each solve."""
import re
resp = requests.get(pageurl, timeout=15)
match = re.search(r'data-sitekey="([^"]+)"', resp.text)
if not match:
raise RuntimeError("Could not find sitekey")
sitekey = match.group(1)
# Now solve with fresh sitekey
# ...
Correção: parâmetro de ação v3
# Check what action the site uses
# Look for: grecaptcha.execute('sitekey', {action: 'submit'})
data = {
"key": api_key,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"version": "v3",
"action": "submit", # Must match site's action
"score_qa": "0.7",
"json": 1,
}
Taxas de sucesso esperadas
| Tipo CAPTCHA | Taxa Normal | Limite de alerta |
|---|---|---|
| reCAPTCHA v2 | 95-99% | Abaixo de 90% |
| reCAPTCHA v3 | 90-98% | Abaixo de 85% |
| Cloudflare Turnstile | 99-100% | Abaixo de 95% |
| GeeTest v3 | 99-100% | Abaixo de 95% |
| BLS | 99-100% | Abaixo de 95% |
| Imagem/OCR | 90-98% | Abaixo de 85% |
Solução de problemas
| Problema | Causa | Correção |
|---|---|---|
| Taxa caiu de 98% para 70% | Sitekey ou página alterada | Extraia novamente todos os parâmetros |
| Tokens v3 todos rejeitados | Parâmetro de ação incorreto | Corresponder ação da origem da página |
| Os tokens funcionam, mas expiram | Muito lento para usar | Envie o token em 60 segundos |
| A tarifa varia de acordo com a hora do dia | Limitação de taxa do lado do servidor | Adicione atrasos entre envios |
Perguntas frequentes
Qual é uma taxa de sucesso normal?
valor alto em amostra interna para a maioria dos tipos de CAPTCHA. Se você estiver consistentemente abaixo de 90%, provavelmente há um problema de parâmetro ou de tempo.
Com que rapidez preciso usar tokens?
Os tokens reCAPTCHA expiram em 120 segundos. Tokens de catraca em 300 segundos. Use tokens em 60 segundos para obter mais adequado resultados.
Devo relatar soluções incorretas?
Sim. Use o endpoint reportbad para relatar soluções incorretas. CaptchaAI usa esse feedback para aprimorar a precisão.
Guias Relacionados
Diagnostique rápido, resolva mais adequado —usar CaptchaAI.