Troubleshooting

Queda na taxa de resolução de CAPTCHA: como diagnosticar a causa

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 getTaskResult e 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:

  1. Chave/saldo — resolvem-se em segundos
  2. Sitekey/ERROR_CAPTCHA_UNSOLVABLE — mudança no site
  3. 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

Próximas etapas

Mantenha o seu pipeline de CAPTCHA saudável: crie sua conta e obtenha a chave de API da CaptchaAI.

Guias relacionados:

Os comentários estão desativados para este artigo.