Use Cases

Como validar CAPTCHA em fluxos internos de coleta autorizada

Um pipeline de QA que esbarra em CAPTCHA na página de staging não deve testar contra o site de produção. A resposta curta: isole o teste com uma página interna, uma sitekey de QA e um endpoint de verificação separado, resolva o desafio pela API da CaptchaAI e valide apenas dados fictícios no backend. Este guia cobre esse fluxo do início ao checklist de publicação — sem automação de terceiros, sem filas públicas e sem compras reais.

Por que isolar o teste de CAPTCHA da produção

Testar contra o ambiente real cria dois problemas. Primeiro, o CAPTCHA de produção protege usuários e parceiros reais — qualquer falha no teste vira ruído nos logs de produção e pode até acionar limite de requisições para o domínio inteiro. Segundo, a origem do runner de QA interfere na leitura de latência: se o runner roda em uma região de nuvem como sa-east-1 (São Paulo), meça o RTT de rede separadamente do tempo de resolução do CAPTCHA — senão você atribui uma lentidão de rede ao solver por engano. Uma página de staging dedicada, com sitekey própria, elimina os dois riscos: nada do que acontece no teste afeta contas reais, e cada métrica de tempo tem uma causa clara.

Monte a página e o backend de staging para o teste

Crie uma página interna com sitekey de QA, um usuário fictício e um payload previsível. O endpoint de verificação deve ficar separado do endpoint de produção — mesmo que rode no mesmo serviço, use uma rota distinta (/qa-captcha/verify, por exemplo) para que uma falha de configuração não valide nem rejeite tráfego real por engano.

Use identificadores que deixem claro que o registro é de teste, como qa_user_001, qa_session_001 e qa_case_001. O backend deve aceitar apenas tokens vinculados ao domínio de staging autorizado e gravar o resultado em uma tabela de testes — nunca na tabela de produção.

Envie a tarefa para a CaptchaAI a partir do runner de QA

Com a página de staging pronta, o runner autorizado envia a tarefa à API e registra o ID retornado para rastreabilidade. O exemplo abaixo cobre o envio (in.php) e o polling do resultado (res.php) para um reCAPTCHA de teste:

import os, time, requests

API_KEY = os.environ['CAPTCHAAI_API_KEY']
SITEKEY = os.environ['QA_CAPTCHA_SITEKEY']

def criar_tarefa_captcha(pageurl):
    resposta = requests.post('https://ocr.captchaai.com/in.php', data={
        'key': API_KEY,
        'method': 'userrecaptcha',
        'googlekey': SITEKEY,
        'pageurl': pageurl,
        'json': 1,
    }).json()
    return resposta['request']

def aguardar_resultado(task_id):
    while True:
        time.sleep(5)
        resposta = requests.get('https://ocr.captchaai.com/res.php', params={
            'key': API_KEY,
            'action': 'get',
            'id': task_id,
            'json': 1,
        }).json()
        if resposta.get('status') == 1:
            return resposta['request']

task_id = criar_tarefa_captcha('https://staging.example.com/captcha-demo')
token_qa = aguardar_resultado(task_id)
print({'token_recebido': bool(token_qa)})

O runner registra apenas se recebeu um token (token_recebido), sem gravar o valor completo no log.

Valide o token no endpoint interno de staging

Depois de receber o token, encaminhe-o para o endpoint interno (https://staging.example.com/qa-captcha/verify). O backend confirma a resposta junto ao provedor do CAPTCHA e devolve só um resultado de teste — sucesso, falha ou erro de validação. Nenhuma chamada deste fluxo deve tocar o endpoint de produção.

Registre logs com rastreabilidade para auditoria

Grave sitekey, pageurl, tipo de CAPTCHA, horário de envio, tempo de resposta, status do backend e o identificador do caso de QA. Esses campos bastam para depurar uma regressão sem expor dados sensíveis. Trate os dados fictícios com a mesma disciplina de dados reais: não misture identificadores de teste com informação pessoal real, e leve em conta as obrigações da LGPD ao definir por quanto tempo os logs de teste ficam retidos.

Resolva problemas comuns no ambiente de staging

Se o teste falhar, confira nesta ordem: a sitekey corresponde à página de staging, o domínio está na lista autorizada, o token não expirou, o relógio do runner está sincronizado e o comportamento do navegador não diverge do da chamada direta à API. Faça retentativas com backoff exponencial apenas dentro da suíte de QA — nunca contra um domínio de produção.

Checklist antes de promover a mudança para produção

Antes de considerar o teste concluído, confirme que a documentação aponta para o ambiente de staging, que todos os exemplos usam dados fictícios e que nenhum endpoint de produção foi acionado durante a suíte. A página de staging precisa manter domínio autorizado, sitekey esperada, configuração de backend separada da produção e uma política clara de expiração de token. Quando o resultado variar entre execuções, trate os números como amostra interna: repita a medição, anote a janela de execução e compare apenas cenários equivalentes.

Perguntas frequentes

Preciso duplicar toda a infraestrutura de produção para esse teste?

Não. Uma página com sitekey de QA, um endpoint de verificação separado e dados fictícios bastam — não é preciso replicar bancos de produção nem serviços externos reais.

Quanto tempo leva para o token voltar no ambiente de staging?

Depende do tipo de desafio. O Cloudflare Turnstile normalmente resolve em menos de 10 segundos, e o reCAPTCHA v2 em menos de 60 segundos — use esses valores como referência ao definir o timeout do polling na sua suíte.

O plano BASIC (US$ 15/mês, 5 threads) é suficiente para os testes de QA?

Na maioria dos casos, sim: 5 threads cobrem várias execuções sequenciais ou um pequeno lote em paralelo. Se a suíte crescer para dezenas de casos simultâneos, avalie um plano com mais threads, como o STANDARD (US$ 30/mês, 15 threads).

Posso rodar vários casos de QA em paralelo sem estourar o limite de threads?

Sim, desde que o número de tarefas simultâneas fique dentro do limite de threads do seu plano. Cada thread processa uma tarefa por vez; ao terminar, fica livre para a próxima.

O que acontece se o token expirar antes da validação no backend?

O backend rejeita a resposta e o teste deve ser registrado como falha controlada. O token do CaptchaAI vale por cerca de 120 segundos — valide logo após recebê-lo e trate a expiração como um cenário normal do plano de testes, não como bug.

Guias relacionados

Abra uma conta na CaptchaAI e monte o primeiro teste de CAPTCHA em staging em poucos minutos.

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