logo
bars

Cloudflare Challenge
y CapMonster Cloud

Resolución de captcha, instalación en el sitio web y pruebas.
¿Heredaste un sitio con una captcha u otra capa de protección pero sin acceso al código fuente? Entonces es normal preguntarse: ¿qué solución está instalada, está configurada correctamente y cómo se puede probar?

En este artículo hemos intentado responder a todas las preguntas clave. Para empezar a resolver la tarea, primero hay que determinar qué sistema de protección se está utilizando. Para ello, puedes consultar la lista de captchas y sistemas de protección antibot más populares, donde se muestran ejemplos visuales y señales clave que te ayudarán a identificar rápidamente con qué estás tratando.

Si descubres que tu sitio web utiliza Cloudflare Challenge, el siguiente paso será analizar con más detalle sus propiedades y su funcionamiento. En este mismo artículo también puedes consultar la guía de integración de Cloudflare Challenge para comprender por completo cómo funciona en tu sitio. Esto te permitirá no solo entender la protección actual, sino también planificar correctamente su mantenimiento.

Qué es Cloudflare Challenge
Qué es Cloudflare Challenge
Cloudflare Challenge (o Páginas Intermedias de Desafío) es un sistema de verificación de Cloudflare diseñado para proteger sitios web de bots, spam y tráfico malicioso. Cuando Cloudflare sospecha que una solicitud no proviene de un visitante real (por ejemplo, por una IP sospechosa o falta de JavaScript), muestra un Challenge — es decir, una 'prueba' que debe completarse para confirmar que eres humano. Este tipo de verificación se diferencia de Turnstile en que primero el usuario ve una página intermedia con el mensaje “Just a moment…” y “Verifying you are human. This may take a few seconds.”

Cómo resolver Cloudflare Challenge con CapMonster Cloud

Al probar la protección con Cloudflare Challenge, es importante asegurarse de que la verificación funcione correctamente y filtre adecuadamente el tráfico sospechoso.
Puedes probar manualmente el challenge instalado en tu página:
  • Abre la página en modo incógnito donde se espera el Challenge y asegúrate de que se muestre el captcha.
  • Intenta insertar cookies cf_clearance incorrectas en el navegador (ver más detalles abajo) — el servidor debería devolver un error.
  • Después de resolver el captcha con éxito, la página real del sitio web debería abrirse sin verificación.
Para pruebas automáticas y reconocimiento de captcha, puedes usar servicios especializados como CapMonster Cloud — una herramienta que recibe parámetros del captcha, los procesa en sus servidores y devuelve una solución lista. Esta solución (token o cookie) puede insertarse en un formulario o navegador para pasar la verificación sin interacción del usuario.

Trabajar con CapMonster Cloud mediante la API suele implicar los siguientes pasos:

Creación de la tareaCreación de la tarea
arrow
Enviar una solicitud APIEnviar una solicitud API
arrow
Recepción del resultadoRecepción del resultado
arrow
Inserción de cf_clearanceInserción de cf_clearance
arrow
Reconocimiento de Cloudflare Challenge usando bibliotecas listas
CapMonster Cloud proporciona bibliotecas listas para Python, JavaScript (Node.js) y C#.
Python
JavaScript
C#
Resolución del Challenge e inserción de cookie
Ejemplo en Node.js para el ciclo completo de reconocimiento de captcha en tu página web. Enfoques: usar solicitudes HTTP para obtener HTML y parámetros de protección, enviar respuesta y procesar el resultado. O con herramientas de automatización (como Playwright) — abrir página, esperar la verificación, enviar parámetros a través de CapMonster Cloud, obtener resultado, insertar cookie en el navegador (para pruebas se pueden usar valores correctos o incorrectos) y ver el resultado.

  // npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium

import { chromium } from 'playwright';
import {
  CapMonsterCloudClientFactory,
  ClientOptions,
  TurnstileRequest
} from '@zennolab_com/capmonstercloud-client';

// Configuración — reemplazar con tus valores
const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://www.example.com';
const SITE_KEY = 'xxxxx'; // se puede enviar cualquier cadena
const USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36';

// Configuración de proxy
const proxy = {
  proxyType: 'http',
  proxyAddress: '8.8.8.8',
  proxyPort: 8080,
  proxyLogin: 'proxyLogin',
  proxyPassword: 'proxyPassword'
};

async function main() {

  const cmcClient = CapMonsterCloudClientFactory.Create(
    new ClientOptions({ clientKey: API_KEY })
  );

  // Iniciar navegador
  const browser = await chromium.launch({
    headless: false,
    proxy: proxy.proxyAddress ? {
      server: `${proxy.proxyType}://${proxy.proxyAddress}:${proxy.proxyPort}`,
      username: proxy.proxyLogin,
      password: proxy.proxyPassword
    } : undefined
  });

  // Crear contexto con User-Agent requerido y tamaño de ventana (opcional)
  const context = await browser.newContext({ userAgent: USER_AGENT, viewport: { width: 1280, height: 800 } });

  // Crear página y cargar URL objetivo
  const page = await context.newPage();
  const resp = await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Estado de la solicitud inicial:', resp?.status());

  // Obtener HTML de la página y convertir a Base64 para CapMonster
  const htmlBase64 = Buffer.from(await page.content(), 'utf-8').toString('base64');

  // Crear tarea Turnstile para obtener cf_clearance
  const solveResult = await cmcClient.Solve(new TurnstileRequest({
    websiteURL: TARGET_URL,
    websiteKey: SITE_KEY,
    cloudflareTaskType: 'cf_clearance',
    htmlPageBase64: htmlBase64,
    userAgent: USER_AGENT,
    proxy: proxy.proxyAddress ? proxy : undefined
  }));

  const cf_clearance = solveResult?.solution?.cf_clearance;
  if (!cf_clearance) {
    console.error('No se pudo obtener cf_clearance de CapMonster:', solveResult);
    await browser.close();
    return;
  }
  console.log('cf_clearance obtenido:', cf_clearance);

  // Agregar cookie cf_clearance al contexto del navegador
  await context.addCookies([{
    name: 'cf_clearance',
    value: cf_clearance,
    domain: '.' + new URL(TARGET_URL).hostname,
    path: '/',
    httpOnly: true,
    secure: true
  }]);
  console.log('Cookie cf_clearance agregada con éxito en el navegador.');

  // Volver a abrir página con cf_clearance establecido
  const page2 = await context.newPage();
  const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Estado de la solicitud después de establecer cf_clearance:', resp2?.status());

  await browser.close();
  console.log('Script finalizado.');
}

main().catch(err => {
  console.error('Ocurrió un error:', err);
  process.exit(1);
});
  
Cómo conectar Cloudflare Challenge a tu sitio web
Para comprender cómo funciona el captcha en tu sitio, la lógica de verificación y cómo reconectarlo o reconfigurarlo, recomendamos esta sección. Explica el proceso de configuración de protección, ayudándote a comprender todos los detalles rápidamente.
1. Regístrate o inicia sesión y conecta tu dominio a Cloudflare.
2. Habilita Challenge mediante una regla WAF.
Ve a: Security → Custom Rules → Create rule
HowTo Connect image 1

Ejemplo de condición (revisar toda la página de login):
http.request.uri.path contains "/login"
3. Elige una acción:
Managed Challenge (recomendado) — el sistema decide automáticamente si mostrar un challenge y cuál.
Configura las opciones restantes y haz clic en Deploy.
Después de la verificación, el usuario recibe una cookie cf_clearance, que permite el acceso repetido desde el mismo navegador/dispositivo sin Challenge.
Background
Posibles errores y depuración
Bug Icon
Dominio incorrecto o configuración de regla
El Challenge no se muestra. Verifica que la regla WAF esté asignada al URI, ruta o host correcto.
Bug Icon
Tiempo de carga de página o Challenge agotado
El navegador o cliente no esperó la respuesta de Cloudflare. Aumenta los timeouts en pruebas y monitoreo.
Bug Icon
Revisión repetida o cf_clearance expirado
Si el visitante usa un cf_clearance expirado, el sistema mostrará el Challenge nuevamente.
Bug Icon
Después del Challenge sigue otra verificación
El uso simultáneo de Challenge + reglas personalizadas puede causar verificaciones en bucle. Sigue las recomendaciones de Cloudflare para resolverlo.
Pruebas de resistencia de la protección
Consejos de seguridad y optimización
Configura las reglas WAF y Managed/JS/Interactive Challenge según el nivel de riesgo.
Registra eventos de seguridad y estado de los Challenge para entender bloqueos y falsos positivos.
Para transparencia y cumplimiento, añade enlaces a la <b>Política de privacidad</b> y a los <b>Términos de uso</b> de Cloudflare/sitio en las páginas con Challenge.
Conclusión

Si has heredado un sitio web que ya tiene un captcha u otro sistema de protección instalado y no tienes acceso al código, no pasa nada. Identificar qué tecnología se está utilizando es bastante sencillo. Para comprobar que todo funciona correctamente, puedes usar el servicio de reconocimiento CapMonster Cloud en un entorno de pruebas aislado, para asegurarte de que el mecanismo de procesamiento de tokens y la lógica de verificación funcionan correctamente.

En el caso de Cloudflare Challenge, basta con detectar el sistema, analizar su comportamiento y confirmar que la protección funciona correctamente. En el artículo hemos mostrado cómo identificar Cloudflare Challenge y dónde encontrar las instrucciones para su integración o reconfiguración, de modo que puedas mantener la protección con confianza y controlar su funcionamiento.

Conclusion