
Adélia Cruz
Neural Network Developer

Cloudflare Turnstile está rápidamente convirtiéndose en la alternativa preferida de CAPTCHA para los sitios web modernos. A diferencia de los CAPTCHAs tradicionales que obligan a los usuarios a resolver acertijos de imágenes, Turnstile funciona en segundo plano de forma silenciosa, lo que lo hace más difícil de detectar y evitar con herramientas de automatización estándar.
¿Pero qué pasa si pudieras crear tu propia API para resolver Turnstile — una que reciba un desafío y devuelva un token válido, sin escribir ni una línea de código tradicional?
En esta guía, aprenderás a combinar n8n (una herramienta visual de automatización de flujos de trabajo) con CapSolver (un servicio de resolución de CAPTCHA impulsado por inteligencia artificial) para crear un punto de entrada de API potente que resuelva desafíos de Cloudflare Turnstile a petición.
Lo que construirás:
Cloudflare Turnstile es una alternativa inteligente a los CAPTCHA diseñada para verificar usuarios sin la fricción de los desafíos tradicionales. En lugar de pedir a los usuarios que hagan clic en casillas de verificación o identifiquen objetos en imágenes, Turnstile valida a los visitantes automáticamente utilizando señales del navegador y análisis de comportamiento.
| Característica | Cloudflare Turnstile |
|---|---|
| Interacción del usuario | Ninguna — se ejecuta automáticamente en segundo plano |
| Cómo funciona | Utiliza desafíos del navegador y señales de comportamiento para verificar a los visitantes |
| Visibilidad | Muestra un pequeño widget, pero no hay acertijos que resolver |
| Modos del widget | Gestionado, No interactivo, Invisible |
| Caso de uso común | Formularios de inicio de sesión, registros, páginas de pago, cualquier página protegida por Cloudflare |
| ¿Se ve la clave del sitio? | Sí |
Turnstile ofrece tres modos de widget que los sitios web pueden elegir:
| Modo | Descripción |
|---|---|
| Gestionado | Cloudflare decide si mostrar un desafío interactivo o validar en segundo plano |
| No interactivo | Nunca muestra un desafío — siempre valida en segundo plano |
| Invisible | Completamente oculto — no se renderiza ningún widget en la página |
Desde el punto de vista de la resolución, el modo no cambia cómo configuras CapSolver — siempre necesitas los mismos parámetros: websiteURL y websiteKey.
No confundas Turnstile con el desafío de página completa de Cloudflare — aquel que muestra "Verificación de seguridad en curso" con una barra de carga antes de permitirte acceder al sitio. Ese es un Desafío de Cloudflare (también conocido como desafío JS o desafío gestionado), no Turnstile.
| Cloudflare Turnstile | Cloudflare Challenge | |
|---|---|---|
| Dónde aparece | Incrustado dentro de una página (por ejemplo, en un formulario de inicio de sesión) | Página completa intersticial antes de poder acceder al sitio |
| ¿Cómo se ve? | Un pequeño widget en la página | "Verificación de seguridad en curso..." con una barra de carga |
| Cómo se implementa | El propietario del sitio lo agrega a su formulario | Cloudflare lo agrega automáticamente según las reglas de seguridad |
| Enfoque de resolución | Usa la operación Turnstile de CapSolver (esta guía) | Diferente — requiere un solucionador de desafíos de Cloudflare |
Si ves la pantalla de "Verificación de seguridad en curso" de toda la página, eso no es Turnstile — es un desafío de Cloudflare y requiere un enfoque diferente. Consulta diferencias clave más importantes
Antes de comenzar, asegúrate de tener lo siguiente:
Importante: Asegúrate de tener suficiente saldo en tu cuenta de CapSolver. Las tareas de resolución de Turnstile consumen créditos según el uso.
CapSolver está disponible como una integración oficial en n8n — no se requiere instalar ningún nodo de la comunidad. Puedes encontrarlo directamente en el panel de nodos al construir tus flujos de trabajo.
Como es una integración oficial, necesitas crear una credencial en n8n para que el nodo de CapSolver se autentique con tu cuenta.
Ve a tu instancia de n8n y navega a Configuración → Credenciales. Verás todas tus credenciales configuradas aquí.

Todos (por defecto)n8n probará automáticamente la conexión. Deberías ver un mensaje verde "Conexión probada con éxito" confirmando que tu clave de API es válida.

Importante: Todos los nodos de CapSolver en tus flujos referirán a esta credencial. Solo necesitas crearla una vez — todos tus flujos de solución compartirán la misma credencial.
¡Ahora estás listo para construir tu flujo de solución de Turnstile!
Antes de poder resolver un desafío de Turnstile, necesitas conocer sus parámetros — específicamente websiteURL y websiteKey (también llamada clave del sitio).
Turnstile solo requiere dos parámetros, por lo que encontrarlos es sencillo:
Esta es simplemente la URL completa de la página que tiene el widget de Turnstile. Cópiala desde la barra de direcciones de tu navegador.
La clave del sitio está incrustada en el HTML de la página. Aquí hay varias formas de encontrarla:
1. Buscar en el código fuente de la página por data-sitekey
Haz clic derecho en la página → Ver código fuente (o presiona Ctrl+U) y busca data-sitekey:
<div class="cf-turnstile" data-sitekey="0x4AAAAAAADV8V8V8V8V8V8V"></div>
2. Buscar turnstile.render() en JavaScript
Algunos sitios renderizan Turnstile a través de JavaScript en lugar de atributos HTML. Busca turnstile.render en el código fuente de la página:
turnstile.render('#widget', {
sitekey: '0x4AAAAAAADV8V8V8V8V8V8V',
});
3. Verificar la pestaña de Red en DevTools
Abre DevTools (F12) → pestaña Red → filtra por turnstile o challenges.cloudflare.com. A menudo, la clave del sitio aparece en las URLs de solicitud o en los datos de respuesta.
4. Buscar challenges.cloudflare.com en el HTML
Turnstile carga su script desde Cloudflare. Busca este dominio en el código fuente de la página — la clave del sitio suele estar cerca:
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
Consejos:
- La clave del sitio siempre comienza con
0xy es una cadena alfanumérica larga- Si el sitio utiliza el desafío gestionado de Cloudflare (desafío de toda la página antes de acceder al sitio), el widget de Turnstile puede no estar en el código fuente de la página — se sirve desde la página de desafío de Cloudflare en su lugar
Este flujo de trabajo crea un punto de entrada POST que acepta parámetros de Turnstile y devuelve un token resuelto.

El flujo consta de tres nodos:
| Configuración | Valor |
|---|---|
| Método HTTP | POST |
| Ruta | solver-turnstile |
| Modo de respuesta | Nodo de respuesta |
Esto crea un punto de entrada en: https://your-n8n-instance.com/webhook/solver-turnstile
| Parámetro | Valor | Descripción |
|---|---|---|
| Operación | Cloudflare Turnstile |
Debe establecerse en Cloudflare Turnstile |
| Tipo | AntiTurnstileTaskProxyLess |
Este tipo de tarea no requiere un proxy |
| URL del sitio web | {{ $json.body.websiteURL }} |
La URL de la página con el widget de Turnstile |
| Clave del sitio | {{ $json.body.websiteKey }} |
La clave del sitio de Turnstile |
| metadata.action | (Opcional) | Algunos sitios requieren una cadena de acción específica para el desafío de Turnstile |
| metadata.cdata | (Opcional) | Datos personalizados que algunos sitios pasan al widget de Turnstile para verificación |
Algunos sitios también requieren metadata.action y/o metadata.cdata — puedes agregar estos campos en la sección Opcional del nodo. También selecciona tus credenciales de CapSolver en este nodo.
| Configuración | Valor |
|---|---|
| Responder con | JSON |
| Cuerpo de la respuesta | {{ JSON.stringify($json.data) }} |
Esto devuelve la respuesta completa de CapSolver, incluido el token de Turnstile resuelto.
Envía una solicitud POST a tu punto de entrada de webhook:
curl -X POST https://your-n8n-instance.com/webhook/solver-turnstile \
-H "Content-Type: application/json" \
-d '{
"websiteURL": "https://example.com/login",
"websiteKey": "0x4AAAAAAADV8V8V8V8V8V8V"
}'
Respuesta esperada:
{
"taskId": "abc123...",
"solution": {
"token": "0.XXXXXXXXXXXXXXXX..."
},
"status": "ready"
}
Copia el JSON siguiente e introdúcelo en n8n mediante Menú → Importar desde JSON:
{
"name": "Solucionador de Turnstile",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "solver-turnstile",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [-208, 0],
"id": "137be4f0-1762-4f0c-b993-c512d27e35de",
"name": "Webhook",
"webhookId": "3d32ad61-d925-4a09-8fe5-7226e6664a98"
},
{
"parameters": {
"operation": "Cloudflare Turnstile",
"websiteURL": "={{ $json.body.websiteURL }}",
"websiteKey": "={{ $json.body.websiteKey }}",
"optional": {}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [192, 80],
"id": "954ff1f0-d5de-4468-b0d1-fbce03676676",
"name": "Cloudflare Turnstile",
"credentials": {
"capSolverApi": {
"id": "sLg2YDZd7WtYJJJ4",
"name": "Cuenta de CapSolver"
}
}
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [400, 0],
"id": "db264e2b-48ce-4887-9b2b-2b8077993c30",
"name": "Responder al Webhook"
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Cloudflare Turnstile",
"type": "main",
"index": 0
}
]
]
},
"Cloudflare Turnstile": {
"main": [
[
{
"node": "Responder al Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
}
}
El punto de entrada de la API solucionadora de Turnstile acepta los siguientes parámetros:
| Parámetro | Requerido | Descripción |
|---|---|---|
websiteURL |
Sí | La URL de la página que aloja el widget de Turnstile |
websiteKey |
Sí | La clave del sitio de Turnstile |
metadata.action |
No | Cadena de acción requerida por algunos sitios para el desafío de Turnstile |
metadata.cdata |
No | Datos personalizados pasados al widget de Turnstile por algunos sitios |
Consejo: Puedes identificar
websiteURLywebsiteKeyinspeccionando el código fuente de la página — consulta Cómo identificar los parámetros de Turnstile.
En comparación con reCAPTCHA, Turnstile es más sencillo — solo necesitas dos parámetros requeridos. Algunos sitios también pueden requerir los campos metadata.action o metadata.cdata opcionales — agrega estos en la sección Opcional del nodo si el token no es aceptado.
El flujo de trabajo de la API anterior muestra cómo obtener un token de Turnstile resuelto. Pero ¿qué haces realmente con él?
En la automatización del mundo real, resolver el desafío es solo la mitad del trabajo. Necesitas enviar el token al sitio web objetivo — exactamente como lo haría un navegador — para desbloquear los datos o la acción detrás del protector de Turnstile.
Este es el patrón general:
cf-turnstile-response)Ejemplo: https://example.com/ — Un sitio web protegido por Turnstile
Disparador manual → CapSolver Turnstile → Solicitud HTTP POST → IF (comprobar éxito) → Editar campos (extraer datos)
Cloudflare Turnstilehttps://example.com/login0x4AAAAAAA... (encuéntrala inspeccionando el código fuente de la página — consulta Cómo identificar los parámetros de Turnstilecf-turnstile-responsenombre de usuario, contraseña)Concepto clave: Cada sitio web maneja el envío de tokens de forma diferente. En este ejemplo, el token se envía en un campo de formulario
cf-turnstile-responsemediante POST — pero otros sitios pueden esperarlo en un nombre de campo diferente, como un cuerpo JSON, un encabezado o a través de un punto de conexión completamente diferente. Siempre inspecciona el envío real del formulario del sitio (usando la pestaña Network de DevTools) para ver exactamente cómo debe enviarse el token.
websiteURL y websiteKey inspeccionando el código fuente de la páginacf-turnstile-response, pero verifica el formulario real)Nota: Este ejemplo usa Trigger manual por simplicidad, pero puedes reemplazarlo con cualquier nodo de desencadenador — Webhook (para construir una API), Cron (para ejecutar cada hora), Evento de aplicación (para reaccionar a mensajes de Telegram), u otro cualquiera. Consulta Formas de desencadenar tus flujos de trabajo para ver todas las opciones.
Los ejemplos de esta guía usan Trigger manual (para flujos de scrap) y Webhook (para el flujo de API), pero n8n ofrece muchas más formas de iniciar un flujo de trabajo. Puedes cambiar el nodo de desencadenador para que se ajuste a tu caso de uso:
| Desencadenador | Descripción | Mejor para |
|---|---|---|
| Ejecutar manualmente | Haz clic en "Ejecutar flujo de trabajo" en n8n | Pruebas y ejecuciones puntuales |
| En un horario | Se ejecuta cada día, hora o intervalo personalizado (cron) | Trabajos de scrap recurrentes (por ejemplo, revisar un sitio cada hora) |
| Al recibir una llamada web | Se ejecuta al recibir una solicitud HTTP | Construir APIs que otros servicios puedan llamar |
| Al ocurrir un evento de aplicación | Se ejecuta cuando algo sucede en Telegram, Notion, Airtable, etc. | Reaccionar a eventos (por ejemplo, un nuevo mensaje de Telegram desencadena una resolución) |
| Al enviar un formulario | Genera un formulario web en n8n y pasa las respuestas al flujo de trabajo | Permitir que los usuarios envíen parámetros de captcha a través de un formulario |
| Al ser ejecutado por otro flujo de trabajo | Llamado por el nodo Ejecutar flujo de trabajo desde otro flujo de trabajo | Arquitectura modular — mantener tu solucionador como un sub-flujo reutilizable |
| Al recibir un mensaje de chat | Se ejecuta cuando un usuario envía un mensaje de chat (nodos de IA) | Integraciones de chatbots que necesitan resolver desafíos a demanda |
| Otras formas | Errores en el flujo de trabajo, cambios en archivos, etc. | Disparadores de automatización avanzada |
Por ejemplo, para ejecutar tu flujo de scrap cada hora, simplemente reemplaza el Trigger manual con un nodo Trigger de horario y establece el intervalo en 1 hora. El resto del flujo de trabajo permanece exactamente igual.
Una vez que tu flujo resuelva un desafío de Turnstile y obtenga datos del sitio objetivo, querrás almacenar o exportar esos datos. n8n proporciona nodos integrados para transformación de datos y salida.
Antes de guardar, puedes transformar los datos extraídos usando los nodos integrados de n8n:
| Nodo | Descripción |
|---|---|
| Combinar | Combinar datos de fuentes múltiples |
| Resumir | Sumar, contar, máximo, etc., entre elementos |
| Convertir a archivo | Convertir datos JSON a CSV, Excel u otros formatos binarios |
| Extraer de archivo | Convertir datos binarios a JSON |
| HTML | Analizar y extraer datos de respuestas HTML |
| XML | Convertir entre JSON y XML |
| Renombrar claves | Renombrar campos para que coincidan con tu formato de salida deseado |
| Ordenar | Reordenar elementos antes de exportar |
Después del nodo IF que valida la respuesta, puedes agregar cualquiera de estos nodos para guardar los datos:
| Destino | Cómo |
|---|---|
| Google Sheets | Añadir filas a una hoja de cálculo — ideal para seguir resultados con el tiempo |
| Archivo Excel / CSV | Usa el nodo Convertir a archivo para generar .xlsx o .csv, luego guárdalo con el nodo Escribir archivo binario o sube a Google Drive |
| Base de datos (MySQL, PostgreSQL, MongoDB) | Insertar directamente en una tabla de base de datos para almacenamiento estructurado |
| Airtable / Notion | Enviar datos a tus herramientas de gestión de proyectos |
| Google Drive / S3 | Subir archivos a almacenamiento en la nube |
| Telegram / Slack / Correo electrónico | Enviar notificaciones con los datos extraídos |
| Archivo JSON local | Escribir resultados en un archivo .json en disco |
Consejo: Puedes combinar múltiples salidas — por ejemplo, guardar en Google Sheets y enviar una notificación de Telegram al mismo tiempo conectando ambos nodos a la salida "true" del nodo IF.
| Síntoma | El nodo CapSolver falla con un error de clave API |
| Causa | Tu clave API es incorrecta o no está configurada |
| Solución | Verifica tu clave API en Configuración → Credenciales. Cópiala directamente desde el Panel de CapSolver |
| Síntoma | La creación de la tarea falla con un error de saldo |
| Causa | Tu cuenta de CapSolver no tiene créditos |
| Solución | Recarga tu saldo en el Panel de CapSolver |
| Síntoma | El token devuelto es rechazado por el sitio web objetivo |
| Causa | Los tokens de Turnstile caducan después de un corto período |
| Solución | Usa el token inmediatamente después de recibirla |
| Síntoma | CapSolver devuelve un token correctamente, pero el sitio web lo rechaza |
| Causa | Algunos sitios tienen protecciones adicionales más allá de Turnstile, o requieren parámetros específicos que no se incluyeron |
| Solución | Verifica que estés enviando el token exactamente como lo espera el sitio (nombre de campo correcto, método y punto de conexión). Asegúrate de usar la clave de sitio correcta. Si el token aún no es aceptado, contacta al equipo de soporte de CapSolver para asistencia — pueden ayudarte a diagnosticar problemas específicos del sitio |
| Síntoma | El webhook tarda demasiado o se agota |
| Causa | La resolución de captchas puede tomar unos segundos dependiendo de la carga |
| Solución | Aumenta el tiempo de espera del webhook en la configuración de n8n. Considera agregar lógica de reintentos para casos de producción |
Usar tokens inmediatamente — Los tokens de Turnstile caducan rápidamente. Envía el token al sitio web objetivo tan pronto como lo recibas de tu API de solución.
Verificar los parámetros antes de configurar — Siempre confirma la clave de sitio correcta inspeccionando el código fuente de la página antes de configurar tu flujo de trabajo.
Mantener tu clave API segura — Nunca expongas tu clave API de CapSolver en código del lado del cliente. Estos flujos de trabajo de n8n mantienen tu clave del lado del servidor, lo cual es la forma recomendada.
Monitorear tu saldo — Configura alertas de saldo en el panel de CapSolver para evitar fallas inesperadas en tus flujos de trabajo debido a créditos insuficientes.
Agregar manejo de errores — Para flujos de producción, agrega un nodo IF después del nodo CapSolver para verificar errores y manejarlos de forma adecuada (por ejemplo, reintentar, notificar o registrar el fallo).
Has aprendido cómo construir una API de resolución de Cloudflare Turnstile y un patrón de flujo de scrap usando n8n y CapSolver — ¡sin necesidad de programación tradicional!
En esta guía, cubrimos:
La clave del mensaje: resolver el desafío de Turnstile es solo la mitad del trabajo — también necesitas enviar el token al sitio web objetivo para desbloquear los datos protegidos.
¿Listo para comenzar? Regístrate en CapSolver y usa el código de bonificación n8n para obtener un 8% adicional en tu primer recarga!

Cloudflare Turnstile es una alternativa a CAPTCHA que verifica a los visitantes sin que tengan que resolver acertijos. Funciona en segundo plano usando señales del navegador y análisis de comportamiento para determinar si un visitante es humano.
El nodo de CapSolver en n8n soporta Cloudflare Turnstile, reCAPTCHA v2, reCAPTCHA v2 Invisible, reCAPTCHA v3 y más. Consulta la página de integración de CapSolver en n8n para ver la lista completa.
El precio varía según el uso. Consulta la página de precios de CapSolver para ver las tarifas actuales de Turnstile.
Los desafíos de Turnstile suelen resolverse en unos segundos, ya que no hay desafíos de imágenes involucrados.
¡Sí! Este flujo funciona tanto con n8n autohospedado como con n8n Cloud. El nodo de CapSolver ya está disponible como integración oficial — solo agrega tus credenciales de API.
Busca data-sitekey en el código fuente de la página o busca turnstile.render() en el JavaScript. También puedes abrir DevTools (F12) → pestaña Network y filtrar por turnstile para encontrar la clave de sitio en las solicitudes. Consulta Cómo identificar los parámetros de Turnstile para una guía detallada.
Turnstile es la alternativa a CAPTCHA de Cloudflare que se enfoca en privacidad y experiencia del usuario — rara vez muestra desafíos visibles. reCAPTCHA es el sistema de detección de bots de Google que puede requerir que los usuarios resuelvan acertijos de imágenes (v2) o asignar un puntaje de comportamiento (v3). Ambos pueden resolverse con CapSolver en n8n.
El nodo de CapSolver devolverá un error. Para flujos de producción, se recomienda agregar manejo de errores (por ejemplo, un nodo IF para verificar errores y un mecanismo de reintentos o notificación).
Aprende una arquitectura de raspado web escalable en Rust con reqwest, scraper, raspado asíncrono, raspado con navegador sin cabeza, rotación de proxies y manejo de CAPTCHA conforme.

Automatiza la resolución de CAPTCHA con Nanobot y CapSolver. Utiliza Playwright para resolver reCAPTCHA y Cloudflare autónomamente.
