O Retool permite que as equipes criem ferramentas internas rapidamente. Quando essas ferramentas precisam interagir com serviços externos protegidos por CAPTCHA – envio de formulários, extração de dados de portais ou automatização de fluxos de trabalho de terceiros –CaptchaAIlida com a solução por meio de consultas da API REST do Retool.
Este guia mostra como configurar CaptchaAI como um recurso da API REST no Retool, criar consultas para enviar e recuperar soluções CAPTCHA e conectá-las à interface do usuário do seu aplicativo.
Cenário do mundo real
Sua equipe de operações usa um aplicativo Retool para enviar dados a um portal governamental que exige reCAPTCHA v2. Em vez de resolver CAPTCHAs manualmente, o aplicativo Retool:
- Toma a chave do site e o URL da página como entrada
- Envia o CAPTCHA para CaptchaAI
- Enquetes para o resultado
- Exibe o token resolvido para uso no envio do formulário
Etapa 1: Crie CaptchaAI como um recurso da API REST
Em Retool, navegue até Recursos → Criar novo → API REST:
| Campo | Valor |
|---|---|
| Nome | CaptchaAI |
| URL base | https://ocr.captchaai.com |
| Autenticação | Nenhum (chave de API enviada como parâmetro de consulta) |
Salve o recurso. Você fará referência a ele em consultas.
Etapa 2: criar a consulta de envio
Crie uma nova consulta chamada submitCaptcha:
| Configuração | Valor |
|---|---|
| Recurso | CaptchaAI |
| Tipo de ação | OBTER |
| Caminho do URL | /in.php |
Parâmetros de consulta:
| Chave | Valor |
|---|---|
key |
{{secretsStore.CAPTCHAAI_API_KEY}} |
method |
userrecaptcha |
googlekey |
{{sitekeyInput.value}} |
pageurl |
{{pageurlInput.value}} |
json |
1 |
Armazene sua chave de API no Retool's Secrets Store (Configurações → Segredos) para evitar codificá-la.
Transformador (opcional):
// Parse the response
const data = {{ submitCaptcha.data }};
if (data.status === 1) {
return { taskId: data.request, status: 'submitted' };
}
return { error: data.request, status: 'failed' };
Etapa 3: criar a consulta de enquete
Crie uma consulta chamada pollResult:
| Configuração | Valor |
|---|---|
| Recurso | CaptchaAI |
| Tipo de ação | OBTER |
| Caminho do URL | /res.php |
Parâmetros de consulta:
| Chave | Valor |
|---|---|
key |
{{secretsStore.CAPTCHAAI_API_KEY}} |
action |
get |
id |
{{submitCaptcha.data.request}} |
json |
1 |
Transformador:
const data = {{ pollResult.data }};
if (data.status === 1) {
return { token: data.request, status: 'solved' };
}
if (data.request === 'CAPCHA_NOT_READY') {
return { status: 'pending' };
}
return { error: data.request, status: 'error' };
Etapa 4: construir o ciclo de votação com JavaScript
Crie uma consulta JavaScript chamada solveCaptcha que orquestra o ciclo de envio e pesquisa:
// solveCaptcha — JavaScript Query
async function solve() {
// Submit the CAPTCHA task
await submitCaptcha.trigger();
const submitResult = submitCaptcha.data;
if (submitResult.status !== 1) {
return { error: submitResult.request, status: 'submit_failed' };
}
const taskId = submitResult.request;
// Wait 15 seconds before first poll
await new Promise(r => setTimeout(r, 15000));
// Poll up to 20 times (100 seconds max)
for (let i = 0; i < 20; i++) {
await pollResult.trigger({
additionalScope: { taskId: taskId }
});
const result = pollResult.data;
if (result.status === 1) {
return { token: result.request, status: 'solved' };
}
if (result.request !== 'CAPCHA_NOT_READY') {
return { error: result.request, status: 'error' };
}
// Wait 5 seconds before next poll
await new Promise(r => setTimeout(r, 5000));
}
return { error: 'Polling timeout', status: 'timeout' };
}
return solve();
Etapa 5: construir a IU
Crie um layout simples do aplicativo Retool:
Seção de entrada
- Entrada de texto (
sitekeyInput): rótulo "reCAPTCHA Sitekey" - Entrada de texto (
pageurlInput): rótulo "URL da página" - Botão (
solveButton): Etiqueta "Resolver CAPTCHA", onClick →solveCaptcha.trigger()
Seção de status
- Texto componente:
{{ solveCaptcha.isFetching ? "Solving..." : "" }} - Indicador de carregamento: Visível quando
{{ solveCaptcha.isFetching }}
Seção de resultados
- Área de texto (
tokenOutput): - Valor:
{{ solveCaptcha.data?.token || '' }} - Rótulo: "Token Resolvido"
- Somente leitura
- Botão Copiar: copia o token para a área de transferência
- Selo de status: Mostra sucesso/error com base em
{{ solveCaptcha.data?.status }}
Etapa 6: use o token em consultas downstream
Depois de resolvido, use o token em outra consulta do Retool que envie o formulário:
Crie uma consulta chamada submitForm:
| Configuração | Valor |
|---|---|
| Recurso | Sua API de destino |
| Tipo de ação | POSTAR |
| Corpo | Dados do formulário incluindo g-recaptcha-response: {{solveCaptcha.data.token}} |
Conecte isso a um botão "Enviar formulário" que é ativado somente quando {{ solveCaptcha.data?.status === 'solved' }}.
Solução de problemas
| Problema | Causa | Correção |
|---|---|---|
ERROR_WRONG_USER_KEY |
A chave de API não está no Secrets Store ou tem valor errado | Verifique a chave em Configurações -> Segredos |
| A consulta retorna texto bruto em vez de JSON | Parâmetro json=1 ausente |
Adicione json: 1 aos parâmetros de consulta |
| Tempo limite de votação | O tipo CAPTCHA precisa de mais tempo de resolução | Aumente as iterações de pesquisa de 20 para 30 |
submitCaptcha.data é indefinido |
A consulta ainda não foi executada | Certifique-se de que a consulta de envio seja executada antes da enquete |
| Tempo limite da consulta JavaScript | Limite de 120 segundos do Retool para consultas JS | Reduza a votação para 20 iterações com intervalos de 5 segundos |
Perguntas frequentes
Posso armazenar a chave API CaptchaAI com segurança no Retool?
Sim. Use o Secrets Store do Retool (Environment → Secrets) e referencie-o como {{secretsStore.CAPTCHAAI_API_KEY}}. Isso mantém a chave fora das definições de consulta visíveis para os criadores de aplicativos.
Isso funciona com Retool Cloud e auto-hospedado?
Sim, ambas as versões suportam recursos da API REST e consultas JavaScript. O Retool auto-hospedado também pode acessar a API do CaptchaAI diretamente, sem requisitos de proxy.
Posso construir um módulo reutilizável de resolução de CAPTCHA no Retool?
Sim. Crie um módulo Retool com as consultas submit/poll e componentes de UI e, em seguida, incorpore-o em qualquer aplicativo que precise de solução CAPTCHA.
Quais tipos de CAPTCHA posso resolver através do Retool?
Qualquer tipo CaptchaAI suporta - reCAPTCHA v2/v3, Cloudflare Turnstile, CAPTCHAs de imagem. Ajuste o method e os parâmetros na consulta de envio de acordo.
Artigos relacionados
- Como resolver o retorno de chamada do Recaptcha V2 usando API
- Torniquete Recaptcha V2 no mesmo local
- Mecanismo de retorno de chamada Recaptcha V2
Próximas etapas
Adicione a solução CAPTCHA às suas ferramentas internas do Retool -obtenha sua chave API CaptchaAIe configure o recurso REST API.
Guias relacionados: