Integrações

Puppeteer + CaptchaAI para testes QA em navegadores próprios

Este guia se limita a ambientes próprios, QA, staging ou pré-produção com autorização explícita. Os exemplos usam páginas internas, dados fictícios e endpoints de validação controlados pela equipe. Não há orientação para automatizar serviços de terceiros, compras reais, filas públicas ou controles de acesso fora do seu ambiente.

Escopo seguro

Use Puppeteer apenas em páginas próprias como https://staging.example.com/qa-form, https://staging.example.com/captcha-demo e https://staging.example.com/checkout-test.

Configuração do Puppeteer para QA

Execute Chrome em modo padrão de teste, com logs, traces e variáveis de ambiente para sitekey de QA. Use usuários fictícios, formulários fictícios e pagamento sandbox.

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/qa-form')
token_qa = aguardar_resultado(task_id)
print({'token_recebido': bool(token_qa)})

Detectar widget CAPTCHA em página staging própria

Aguarde o seletor do widget, leia atributos públicos da página e confirme que a pageurl corresponde ao ambiente esperado.

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/qa-form')
token_qa = aguardar_resultado(task_id)
print({'token_recebido': bool(token_qa)})

Enviar tarefa para CaptchaAI

Envie a tarefa CaptchaAI a partir do runner QA depois de confirmar tipo, sitekey e URL staging.

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/qa-form')
token_qa = aguardar_resultado(task_id)
print({'token_recebido': bool(token_qa)})

Validar resposta contra endpoint QA interno

O backend interno deve validar o token e retornar pass, fail ou retryable_error para a suíte.

Logging e rastreabilidade

Inclua trace id, screenshot de teste, task id, tempo de resposta, status backend e commit da aplicação.

Solução de problemas

Quando testes de navegador falham e API passa, compare timing do widget, renderização do iframe, domínio permitido e action configurada.

Critérios de publicação

Antes de publicar a mudança testada, confirme que a documentação aponta para ambiente próprio, que os exemplos usam dados fictícios, que nenhum endpoint de produção é acionado pelo teste e que os logs contêm correlação suficiente para auditoria. A página staging deve ter domínio autorizado, sitekey esperada, configuração de backend separada e política clara de expiração. Quando o resultado variar, trate os números como amostra interna: repita a medição, anote a janela de execução e compare apenas cenários equivalentes.

Guias relacionados seguros

Valide a integração CAPTCHA do seu ambiente próprio com a CaptchaAI.

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