Make no incluye un módulo oficial de CaptchaAI y, en la práctica, no lo necesitas: con dos módulos HTTP > Realizar una solicitud envías el CAPTCHA a CaptchaAI, consultas el resultado y sigues el escenario con el token ya resuelto. Todo ocurre dentro del lienzo visual de Make, sin servidores propios ni código desplegado.
Aquí montas ese escenario para reCAPTCHA v2: estructura del webhook, parámetros exactos hacia in.php y res.php, bucle de sondeo con el módulo Repetidor, controladores de errores y diagnóstico cuando el flujo se queda colgado.
Antes de empezar
- Una cuenta de CaptchaAI con saldo y tu clave API de 32 caracteres.
- Un escenario de Make con margen de operaciones: el plan gratuito corta la ejecución a los 5 minutos.
- El sitekey y la URL del formulario que vas a automatizar, que debe ser tuyo o estar autorizado.
- Un formulario de staging donde probar antes de tocar el flujo real.
Cuándo conviene resolver el CAPTCHA dentro de Make
El patrón encaja cuando el escenario ya vive en Make y el CAPTCHA es el único punto donde todo se detiene. Caso típico: una agencia en Ciudad de México hace QA diario del alta de su propio producto y el formulario con reCAPTCHA v2 mata la ejecución ahí. La misma situación aparece en:
- portales con cita previa y trámites en línea,
- formularios de contacto de alto volumen,
- monitoreo de fichas de producto en marketplaces regionales.
Automatiza solo flujos propios o autorizados, y respeta los términos de servicio y la normativa de protección de datos aplicable.
Cuánto cuesta el lado de CaptchaAI
CaptchaAI no cobra por resolución: factura por thread concurrente, con resoluciones ilimitadas dentro del plan.
| Plan | Precio | Threads | Encaja con |
|---|---|---|---|
| BASIC | $15/mes | 5 | escenarios secuenciales |
| STANDARD | $30/mes | 15 | varios escenarios en paralelo |
| ADVANCE | $90/mes | 50 | equipos con webhooks simultáneos |
Ese costo mensual en USD es predecible para agencias que facturan en monedas volátiles. Lo que sí se consume por ejecución son las operaciones de Make, así que ajusta las pausas con cuidado.
Paso 1: crea el escenario en Make
Abre Make, crea un escenario nuevo y añade los módulos en este orden.
Módulo 1: disparador de webhook (webhook personalizado)
Este módulo recibe las solicitudes de resolución con esta estructura de datos:
{
"sitekey": "6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-",
"pageurl": "https://example.com/form",
"captcha_type": "recaptcha_v2"
}
- Añade un módulo Webhooks > Webhook personalizado
- Haz clic en Add para crear un webhook nuevo
- Copia la URL del webhook
- Define la estructura de datos con los campos
sitekey,pageurlycaptcha_type
Módulo 2: solicitud HTTP que envía la tarea a CaptchaAI
Añade un módulo HTTP > Realizar una solicitud apuntando a in.php. Deja Analizar respuesta en JSON: sin esa opción Make trata la respuesta como texto plano y los módulos siguientes no encuentran nada que mapear.
| Ajuste del módulo | Valor |
|---|---|
| URL | https://ocr.captchaai.com/in.php |
| Método | GET |
| Analizar respuesta | JSON |
Cadena de consulta: key |
Tu clave API de CaptchaAI |
Cadena de consulta: method |
userrecaptcha |
Cadena de consulta: googlekey |
{{1.sitekey}} (asignado desde el webhook) |
Cadena de consulta: pageurl |
{{1.pageurl}} (asignado desde el webhook) |
Cadena de consulta: json |
1 |
Cuando el módulo se ejecuta, la respuesta contiene el identificador de la tarea:
{
"status": 1,
"request": "TASK_ID_12345"
}
Módulo 3: pausa antes del primer sondeo
Añade un módulo Herramientas > Sleep de 15 segundos. Esa pausa le da margen a CaptchaAI antes del primer sondeo y te ahorra operaciones desperdiciadas.
Módulo 4: solicitud HTTP que consulta el resultado
Añade otro módulo HTTP > Realizar una solicitud, esta vez hacia res.php:
| Ajuste del módulo | Valor |
|---|---|
| URL | https://ocr.captchaai.com/res.php |
| Método | GET |
Cadena de consulta: key |
Tu clave API de CaptchaAI |
Cadena de consulta: action |
get |
Cadena de consulta: id |
{{2.data.request}} (ID de tarea del módulo 2) |
Cadena de consulta: json |
1 |
Módulo 5: Router que decide qué hacer con la respuesta
Añade un Router después del módulo de sondeo, con dos rutas:
| Ruta | Condición del filtro | Qué hace |
|---|---|---|
| 1: CAPTCHA resuelto | {{4.data.status}} es igual a 1 |
continúa hacia la siguiente acción: respuesta del webhook, inserción en base de datos, lo que toque |
| 2: todavía no está listo | {{4.data.request}} es igual a CAPCHA_NOT_READY |
conecta de vuelta al módulo 3 (Sleep) y forma el bucle de sondeo |
Paso 2: controla el bucle de sondeo
Make itera con el módulo Repetidor o reconectando módulos a etapas anteriores:
- Añade un módulo Control de flujo > Repetidor con 10 repeticiones y valor inicial
{{2.data.request}}, el ID de tarea - Dentro del repetidor coloca la secuencia Sleep -> consulta -> Router
- El Router rompe el bucle en cuanto
status = 1
Cada iteración espera 5 segundos, sondea a CaptchaAI y comprueba si el resultado ya está disponible: margen suficiente para reCAPTCHA v2 sin agotar el tiempo de ejecución del escenario.
Paso 3: usa el token resuelto
Resuelto el CAPTCHA, el token vive en {{4.data.request}}. Desde ahí tienes tres salidas habituales.
Opción A: devolverlo por respuesta de webhook
Añade un módulo Webhooks > Respuesta de webhook:
{
"token": "{{4.data.request}}",
"status": "solved"
}
Opción B: enviar el formulario
Añade un módulo HTTP > Realizar una solicitud con método POST hacia la URL de acción del formulario de destino y manda los datos del formulario incluyendo g-recaptcha-response: {{4.data.request}}. El token de reCAPTCHA v2 dura poco: envíalo en la misma ejecución, no lo guardes para después.
Opción C: registrarlo en una hoja o base de datos
Añade un módulo de Google Sheets, Airtable o Database para dejar traza de cada resolución y medir cuántas ejecuciones caen en el controlador de errores.
Flujo completo del escenario
[Webhook Trigger]
↓
[HTTP: Submit to CaptchaAI in.php]
↓
[Sleep: 15 seconds]
↓
[Repeater: 10 iterations]
↓ (each iteration)
[Sleep: 5 seconds]
[HTTP: Poll CaptchaAI res.php]
[Router]
Route 1 (solved) → [Use Token] → [Webhook Response]
Route 2 (not ready) → continue loop
Route 3 (error) → [Error Handler]
Errores y diagnóstico rápido
Configura controladores de errores sobre los dos módulos HTTP: clic derecho sobre el módulo -> Add error handler -> Resume (omitir y continuar) o Rollback (cancelar el escenario). En monitoreo, Resume es lo sensato: un CAPTCHA fallido no debería tumbar la ejecución completa.
| Señal | Dónde aparece | Qué hacer |
|---|---|---|
ERROR_ZERO_BALANCE |
módulo 2, envío | recarga el saldo de la cuenta |
ERROR_WRONG_USER_KEY |
módulo 2, envío | comprueba que la clave tenga 32 caracteres, sin espacios de más |
ERROR_CAPTCHA_UNSOLVABLE |
módulo 4, consulta | verifica el sitekey y la URL de la página |
| El webhook no se dispara | disparador | confirma que la URL del webhook esté activa en Make |
| El bucle nunca resuelve | módulo 4 | revisa la asignación del ID de tarea; sube la pausa a 10 segundos |
| El escenario supera el tiempo límite | ejecución de Make | amplía el plan o reduce el intervalo de sondeo |
| Error al analizar el JSON | módulos HTTP | activa "Analizar respuesta" y usa json=1 en las solicitudes |
Los errores de red se reintentan sin más. Si el repetidor consume todas las iteraciones sin resultado, enruta hacia un controlador que registre el fallo junto con el ID de tarea.
Preguntas frecuentes
¿Cuántos threads necesito para un escenario de Make?
Depende del paralelismo, no del volumen. Un escenario secuencial funciona con los 5 threads de BASIC ($15/mes); si activas ejecuciones simultáneas, calcula un thread por cada una.
¿Es seguro guardar la clave API dentro del escenario?
Guárdala en las conexiones o variables del escenario, no escrita en el módulo HTTP. Así no queda expuesta al exportar el blueprint ni al compartir el escenario con el equipo.
¿Este flujo sirve para hCaptcha?
No. CaptchaAI no es compatible con hCaptcha ni con FunCaptcha, y GeeTest v4 figura como próximamente. Desde este mismo escenario sí puedes resolver:
- reCAPTCHA v2 y v3
- Cloudflare Turnstile y Cloudflare Challenge
- GeeTest v3
- CAPTCHA de imagen y texto
¿Puedo resolver Cloudflare Turnstile con el mismo escenario?
Sí. Cambia el parámetro method a turnstile y usa sitekey en lugar de googlekey en la solicitud de envío. El token llega en el mismo campo request de res.php.
¿Qué hago si el escenario se corta por el límite de tiempo de Make?
Reduce la pausa inicial, baja las iteraciones o divide el flujo en dos escenarios enlazados por webhook: uno envía la tarea y otro recibe el resultado.
Artículos relacionados
- Resolver el callback de reCAPTCHA v2 con la API
- reCAPTCHA v2 y Turnstile en el mismo sitio
- Cómo funciona el mecanismo de callback de reCAPTCHA v2
Próximos pasos
Arma los cinco módulos, prueba el webhook contra un formulario de staging propio y obtén tu clave API de CaptchaAI para la primera ejecución real.
Guías relacionadas: