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
- Início rápido da CaptchaAI
- Testes de CAPTCHA em QA autorizado
- Testes de endpoint CAPTCHA em formulários próprios
- Depuração: navegador falha, API funciona
- Como resolver reCAPTCHA v2 pela API
- Como resolver Cloudflare Turnstile pela API
- Como resolver GeeTest v3 pela API
Abra uma conta na CaptchaAI e monte o primeiro teste de CAPTCHA em staging em poucos minutos.