Um formulário trava no meio de uma automação n8n por causa de um CAPTCHA? Dá para resolver sem escrever código: basta encadear nós HTTP Request com um loop de consulta que tenta de novo até a CaptchaAI devolver o token. Diferente do Zapier, o n8n tem suporte nativo a loops — e o token quase nunca chega na primeira tentativa.
n8n ou Zapier: qual escolher para resolver CAPTCHA sem código?
Antes de montar o fluxo, compare as duas ferramentas mais usadas para esse tipo de automação:
| Recurso | n8n | Zapier |
|---|---|---|
| Suporte a loop/retentativa | Nativo (loops com IF, nó Loop) | Limitado (apenas Paths) |
| Opção auto-hospedada | Sim (grátis) | Não (somente nuvem) |
| Nós de código | JavaScript completo | Limitado |
| Custo | Grátis (auto-hospedado) ou nuvem paga | Pago (por tarefa) |
| Facilidade de configuração | Moderada | Fácil |
O n8n leva vantagem: o nó Loop Over Items e os nós Code cobrem o padrão que a resolução de CAPTCHA exige — enviar, consultar, usar o resultado.
Como funciona o fluxo de resolução no n8n
O fluxo completo tem quatro nós HTTP Request e um loop de consulta entre eles:
Manual Trigger / Cron
↓
HTTP Request: Submit CAPTCHA
↓
Wait: 10 seconds
↓
Loop: Poll until solved
├── HTTP Request: Get result
├── IF: status == 1? → Exit loop
└── Wait: 5 seconds → Loop again
↓
HTTP Request: Use token
Nó 1: enviar o CAPTCHA para a CaptchaAI
Adicione um nó HTTP Request com:
- Método:
POST - URL:
https://ocr.captchaai.com/in.php - Tipo de conteúdo corporal:
Form URL Encoded
Parâmetros corporais:
| Nome | Valor |
|---|---|
key |
{{ $credentials.captchaaiApiKey }} ou codifique sua chave |
method |
userrecaptcha |
googlekey |
6Le-SITEKEY |
pageurl |
https://example.com |
json |
1 |
Resposta:
{
"status": 1,
"request": "71823456"
}
Nó 2: aguardar antes da primeira consulta
Adicione um nó Aguarde (Wait) com:
- Tempo de espera:
10 - Unidade:
Seconds
Isso dá tempo para o solver processar antes da primeira consulta do loop.
Nó 3: consultar o resultado em loop
O n8n permite loops pelo nó Loop Over Items ou conectando a saída falsa de um nó IF de volta a um nó anterior.
Opção A: loop simples com nó IF
Adicione um nó HTTP Request (consulta) com:
- Método:
GET - URL:
https://ocr.captchaai.com/res.php - Parâmetros de consulta:
key,action=get,id={{ $json.request }},json=1
Conecte-o a um nó IF com a condição {{ $json.status }} Equal 1:
- Saída verdadeira → segue para a próxima ação (usar o token)
- Saída falsa → Aguarde (5 segundos) → volta para o nó de consulta
Opção B: nó Code para mais controle
Para ter controle total sobre o retry, use um nó Code:
const apiKey = 'YOUR_API_KEY';
const taskId = $input.first().json.request;
for (let i = 0; i < 24; i++) {
await new Promise(r => setTimeout(r, 5000));
const resp = await fetch(
`https://ocr.captchaai.com/res.php?key=${apiKey}&action=get&id=${taskId}&json=1`
);
const data = await resp.json();
if (data.status === 1) {
return [{ json: { token: data.request, taskId } }];
}
if (data.request !== 'CAPCHA_NOT_READY') {
throw new Error(`CaptchaAI error: ${data.request}`);
}
}
throw new Error(`Task ${taskId} timed out`);
Nó 4: enviar o token resolvido ao formulário
Adicione outro nó HTTP Request para enviar o formulário de destino já com o token resolvido:
- Método:
POST - URL:
https://staging.example.com/submit - Tipo de conteúdo corporal:
Form URL Encoded
Os parâmetros do corpo incluem os dados do seu formulário mais o campo g-recaptcha-response, com o valor {{ $json.token }}.
Como guardar a chave de API com segurança
Use o sistema de Credenciais do n8n:
- Vá em Credentials → Add Credential → Header Auth
- Nome:
CaptchaAI API Key - Guarde a chave com segurança
Ou use variáveis de ambiente:
# In your n8n environment
export CAPTCHAAI_API_KEY="your_key_here"
Referência dentro dos nós: {{ $env.CAPTCHAAI_API_KEY }}.
Dica de produção: hospede o n8n numa região próxima do Brasil (São Paulo, ou
sa-east-1na AWS) para reduzir a latência de cada chamada do loop. Se o fluxo grava em log os dados do formulário resolvido, trate isso como dado pessoal sob a LGPD (RGPD em Portugal) — guarde só o necessário.
Fluxo para CAPTCHA de imagem (OCR)
Para CAPTCHAs de imagem, ajuste o nó de envio:
| Nome | Valor |
|---|---|
method |
base64 |
body |
Imagem codificada em Base64 (de um nó ou URL anterior) |
Para converter uma URL de imagem em base64 no n8n, adicione um nó Code antes do envio:
const imageUrl = $input.first().json.imageUrl;
const resp = await fetch(imageUrl);
const buffer = Buffer.from(await resp.arrayBuffer());
const base64 = buffer.toString('base64');
return [{ json: { imageBase64: base64 } }];
Automatize a verificação de saldo
Crie um fluxo separado, disparado por agenda, para nunca ser pego de surpresa com o saldo baixo:
Cron (daily at 9 AM)
↓
HTTP Request: GET res.php?action=getbalance
↓
IF: balance < 5
↓
Slack / Email: "CaptchaAI balance low: $X.XX"
Perguntas frequentes
Dá para processar vários CAPTCHAs no mesmo fluxo?
Sim, com o nó Split In Batches, cada item com seu próprio ciclo de envio e consulta.
O n8n resolve Cloudflare Turnstile também?
Sim. Troque method para turnstile e use sitekey no lugar de googlekey.
Preciso do plano pago do n8n para automatizar CAPTCHA?
Não. A versão auto-hospedada é gratuita e já traz loops, nó Code e Credenciais.
Vale mais a pena usar n8n ou escrever um script direto?
Depende do time: um script dá mais controle, mas o n8n monta o mesmo fluxo mais rápido, com o retry já pronto em nós visuais.
Problemas comuns e como corrigir
| Problema | Causa | Correção |
|---|---|---|
| O loop de consulta nunca termina | Sem limite máximo de iterações | Adicione uma variável de contador e interrompa após 24 iterações |
CAPCHA_NOT_READY sem parar |
Espera inicial curta demais antes da primeira consulta | Aumente a espera inicial para 15–20 segundos |
| Token não chega no próximo nó | Caminho de expressão errado | Confira se {{ $json.token }} corresponde à saída real |
| Credenciais não encontradas | Variável de ambiente não definida | Reinicie o n8n depois de definir as env vars |
Monte seu primeiro fluxo de resolução de CAPTCHA no n8n
Pegue sua chave de API em captchaai.com e implemente esse fluxo em poucos minutos.