Uma queda repentina na taxa de resolução quase sempre tem causa identificável em poucos minutos: chave de API, proxy degradado, sitekey alterada no site de destino ou, com menos frequência, instabilidade temporária do solver.
Antes de abrir um chamado com o suporte, siga o roteiro abaixo: ele isola a causa por eliminação, passando por código, proxy, parâmetros do site e comparação com a sua linha de base.
Comece pela árvore de decisão
Descarte hipóteses com este fluxo antes de investigar cada camada:
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
Passo 1: confira os códigos de erro da API
O script abaixo:
- confirma a chave de API e o saldo
- roda tentativas de solve e agrupa os erros por tipo
# 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)
Passo 2: confirme se a sitekey ou o tipo de CAPTCHA mudou no site
Descarte primeiro a explicação mais comum: o site alterou a sitekey ou trocou de provedor. Abra F12 e compare:
| Verificação | Onde olhar | Se mudou |
|---|---|---|
| Sitekey | data-sitekey/grecaptcha.render (reCAPTCHA); data-sitekey no widget (Turnstile); gt (GeeTest) |
Atualize a sitekey (chave pública do widget) no código |
| Tipo de CAPTCHA | v2 → v3 invisível, reCAPTCHA → Turnstile, imagem → Enterprise: migrações comuns | Atualize o method da API; o resto do pipeline segue igual |
Passo 3: avalie a saúde do proxy
A qualidade do proxy afeta diretamente a taxa, sobretudo em CAPTCHAs baseados em token, nos quais a CaptchaAI usa o proxy que você fornece. Antes da tabela:
- teste sem proxy primeiro (se o tipo suportar) para confirmar a causa
- confira se o país do proxy é compatível com o do site de destino
| Problema de proxy | Sintoma | Correção |
|---|---|---|
| Proxy banido pelo site alvo | Token resolvido, mas rejeitado | Troque para proxies residenciais novos |
| Erro de retorno do proxy | ERROR_PROXY_NOT_FOUND |
Confirme que o proxy está ativo e acessível |
| Proxy de datacenter detectado | Taxa de resolução mais baixa | Migre para proxies residenciais |
| Proxy com geolocalização incompatível | Resultados inconsistentes | Combine o país do proxy com o país do site de destino |
Workers em
sa-east-1(latência menor com o Brasil) não dispensam essa checagem: um proxy nos EUA em um site que espera tráfego brasileiro já derruba a taxa sozinho.
Passo 4: cheque o tempo de vida do token
Todo token de CAPTCHA expira, e o prazo varia por tipo:
| Tipo de CAPTCHA | Vida útil do token |
|---|---|
| reCAPTCHA v2 | ~120 segundos |
| reCAPTCHA v3 | ~120 segundos |
| Cloudflare Turnstile | ~300 segundos |
| GeeTest v3 | ~60 segundos |
Intervalo longo demais entre receber o token e enviá-lo ao formulário faz o token expirar — o site rejeita, mesmo com o CAPTCHA resolvido certo.
Correção: meça o tempo entre
getTaskResulte o envio do formulário. Acima de 60 segundos, otimize essa etapa antes de investigar qualquer outra causa.
Passo 5: analise a distribuição de erros
Agrupe os erros por frequência: o mais comum aponta a causa raiz.
| Erro | Significado | Ação |
|---|---|---|
ERROR_CAPTCHA_UNSOLVABLE |
CAPTCHA muito complexo ou alterado | Reporte à CaptchaAI; confirme se a sitekey está correta |
ERROR_WRONG_CAPTCHA_ID |
Consultando o ID de tarefa errado | Corrija o rastreamento do ID de tarefa no seu código |
ERROR_ZERO_BALANCE |
Créditos esgotados | Recarregue o saldo |
ERROR_NO_SLOT_AVAILABLE |
Limite de requisições atingido | Reduza a concorrência ou adicione um intervalo |
CAPCHA_NOT_READY (tempo limite) |
Resolução demorando mais que o esperado | Aumente o timeout do polling; confirme se a sitekey é válida |
Prioridade de investigação:
- Chave/saldo — resolvem-se em segundos
- Sitekey/
ERROR_CAPTCHA_UNSOLVABLE— mudança no site CAPCHA_NOT_READY— proxy ou timing do token
Passo 6: compare com a sua linha de base
Se já mediu esses números antes, compare com o cenário atual:
| Métrica | Linha de base | Atual | Investigar quando |
|---|---|---|---|
| Taxa de resolução | 95% | ? | queda > 5 pontos |
| Tempo médio de resolução | 15 s | ? | aumento > 50% |
| Taxa de erro | 2% | ? | acima de 5% |
| Taxa de aceitação do token | 98% | ? | queda > 3 pontos (site mudou) |
Quando vale abrir um chamado com o suporte
| Sinal | Por que escalar |
|---|---|
| Roteiro completo, taxa ainda baixa | Diagnóstico local não achou a causa |
ERROR_CAPTCHA_UNSOLVABLE > 20% em sitekey que funcionava |
Aponta para o lado do solver |
| Saldo correto, tarefas continuam falhando | Descarta causa de cobrança |
| Problema persiste há mais de 2 horas | Fora da janela normal |
Ao anexar logs com dados de terceiros (IPs, tokens), respeite a LGPD: inclua só o necessário para a triagem.
Leve também: tipo de CAPTCHA, sitekey, URL do site, distribuição de erros e alterações recentes no código.
Referência rápida de diagnóstico
| Cenário | Causa provável | Primeira ação |
|---|---|---|
100% de falhas, ERROR_WRONG_USER_KEY |
Chave de API inválida | Confira a chave novamente |
| Queda gradual ao longo de dias | Degradação do proxy | Rotacione os proxies |
| Queda repentina para 0% | Sitekey ou página alterada | Extraia os parâmetros novamente |
| Resolvido, mas token rejeitado | Expiração ou domínio incompatível | Verifique o tempo e o pageurl |
| Funciona em staging, falha no alvo | Restrições específicas do site | Compare os parâmetros entre ambientes |
Perguntas frequentes
Dúvidas comuns depois que a causa raiz já foi isolada com o roteiro acima:
Uma taxa de resolução mais baixa em certos horários é normal?
Sim. Picos de tráfego e oscilações de rede reduzem a taxa por minutos ou horas. Trate como regressão real só se persistir além de uma janela curta ou vier com aumento claro em um código de erro específico.
Quanto tempo leva para a taxa de resolução voltar ao normal?
Do lado da CaptchaAI, a recuperação costuma levar poucas horas. Se a causa é o site — sitekey nova ou troca de provedor —, a taxa só volta ao normal depois de você atualizar os parâmetros.
O plano que eu uso na CaptchaAI influencia a taxa de resolução?
Não diretamente. Da BASIC (US$ 15/mês, 5 threads) à VIP-3 (US$ 7500/mês, 5000 threads), os planos controlam a concorrência, não a chance de cada tarefa ser resolvida. Queda com pico de volume aponta para fila (ERROR_NO_SLOT_AVAILABLE), não perda real de acerto.
Preciso trocar de proxy mesmo se ele não estiver banido?
Vale considerar. Proxies de datacenter geram taxas mais baixas mesmo sem bloqueio — o site já os trata com suspeita. Sem erro explícito e com taxa abaixo do esperado, teste a mesma carga com um proxy residencial antes de descartar outras causas.
Todo erro ERROR_CAPTCHA_UNSOLVABLE precisa ser reportado ao suporte?
Não. Uma taxa de 2–5% de CAPTCHAs não resolvidos é esperada em desafios mais complexos. Reporte apenas quando essa taxa ultrapassar 15–20% de forma consistente em uma sitekey que antes funcionava bem.
Artigos relacionados
- Monitoramento de SLI/SLO para a taxa de resolução
- Séries temporais de desempenho na resolução de CAPTCHA
- Diagnóstico completo de queda na taxa de sucesso
Próximas etapas
Mantenha o seu pipeline de CAPTCHA saudável: crie sua conta e obtenha a chave de API da CaptchaAI.
Guias relacionados: