logo
bars

GeeTest CAPTCHA v4
y CapMonster Cloud

Resolución de captchas, integració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 GeeTest CAPTCHA v4, 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 GeeTest CAPTCHA v4 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 GeeTest CAPTCHA v4
Qué es GeeTest CAPTCHA v4
GeeTest CAPTCHA v4 (Adaptive CAPTCHA/Behavior Verification) es una versión más moderna en comparación con v3, diseñada para proteger los sitios web de acciones automatizadas que pueden dañar el recurso. El sistema rastrea el comportamiento y las características del dispositivo del visitante del sitio y selecciona una tarea adecuada: para una persona real la verificación será lo más sencilla posible — basta con un clic en el widget de la captcha, y si hay sospecha de automatización, al usuario se le mostrará una tarea más compleja que debe superar.
Background
Ejemplos de GeeTest CAPTCHA v4
No CAPTCHA
No CAPTCHA
La verificación del usuario se realiza principalmente en función de su comportamiento e interacción con el sitio, sin necesidad de resolver tareas explícitas.
Icon CAPTCHA
Icon CAPTCHA
Seleccionar imágenes en el orden indicado.
IconCrush CAPTCHA
IconCrush CAPTCHA
Intercambiar elementos para alinear tres iconos idénticos en una fila (como en los puzles de «match-3»).
Slide CAPTCHA
Slide CAPTCHA
Un deslizador para montar un puzle o alinear elementos de la imagen.
Gobang CAPTCHA
Gobang CAPTCHA
Un deslizador para montar un puzle o alinear elementos de la imagen.

Cómo resolver GeeTest CAPTCHA v4 con CapMonster Cloud

Al probar formularios que incluyen GeeTest CAPTCHA v4, normalmente debes verificar que la captcha funcione y esté integrada correctamente.

Puedes comprobar manualmente la captcha incrustada en tu sitio.

  • Abre la página del formulario y verifica que la captcha se renderice.
  • Intenta enviar el formulario sin resolverla: el servidor debe devolver un error.
  • Tras una solución correcta, el formulario debe enviarse sin inconvenientes.

Para la resolución automática puedes usar herramientas como CapMonster Cloud, que reciben los parámetros de la captcha, los procesan en sus servidores y devuelven un token listo para usar. Inserta ese token en el formulario 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
Colocar el token en la páginaColocar el token en la página
arrow
Reconocimiento de GeeTest CAPTCHA v4 utilizando bibliotecas listas para usar
El servicio CapMonster Cloud proporciona bibliotecas listas para trabajar cómodamente en Python, JavaScript (Node.js) y C#.
Python
JavaScript
C#
Resolución, inserción del token y envío del formulario
Ejemplo en Node.js para el ciclo completo de reconocimiento de la captcha en tu página web. Posibles enfoques: usar solicitudes HTTP para obtener el HTML y los parámetros de la captcha, enviar la respuesta y procesar el resultado; o, mediante herramientas de automatización (por ejemplo, Playwright), abrir la página, esperar a que aparezca la captcha, enviar los parámetros (para pruebas puedes enviar datos correctos e incorrectos), obtener la solución a través del cliente de CapMonster Cloud, insertar el token en el formulario y ver el resultado.
// npm install playwright @zennolab_com/capmonstercloud-client

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

const CAPMONSTER_API_KEY = "YOUR_CAPMONSTER_API_KEY";

async function solveGeetestV4(pageUrl) {
  const browser = await chromium.launch({ headless: false });
  const context = await browser.newContext({ viewport: null });
  const page = await context.newPage();

  let detected = null;
  let solutionObj = null;

  // 1. Interceptar la respuesta de /load (determinar captcha_id, challenge, etc.)
  page.on("response", async (response) => {
    const url = response.url();
    if (!url.startsWith("https://gcaptcha4.geetest.com/load?")) return;

    const params = new URLSearchParams(url.split("?")[1] || "");
    const captchaId = params.get("captcha_id");
    const challenge = params.get("challenge");
    const captchaType = params.get("captcha_type");

    if (captchaId && challenge) {
      detected = { captchaId, challenge, captchaType };
      console.log("Detected GeeTest v4 load:", detected);
    }
  });

  // 2. Cargar la página
  console.log("Opening page:", pageUrl);
  await page.goto(pageUrl, { waitUntil: "domcontentloaded" });

  // 3. Esperar hasta capturar /load
  console.log("Waiting for GeeTest /load...");
  while (!detected) {
    await page.waitForTimeout(500);
  }

  // 4. Enviar la tarea a CapMonster Cloud
  console.log("Sending task to CapMonster...");
  const cmc = CapMonsterCloudClientFactory.Create(
    new ClientOptions({ clientKey: CAPMONSTER_API_KEY })
  );

  const task = new GeeTestRequest({
    websiteURL: pageUrl,
    gt: detected.captchaId,
    challenge: detected.challenge,
    version: "4",
    initParameters: {
      riskType: detected.captchaType || "slide"
    }
  });

  const solveRes = await cmc.Solve(task);
  const sol = solveRes.solution || solveRes;

  solutionObj = {
    captcha_id: sol.captcha_id || detected.captchaId,
    captcha_output: sol.captcha_output,
    lot_number: sol.lot_number,
    pass_token: sol.pass_token
  };

  console.log("Got solution from CapMonster:", solutionObj);

  // 5. Insertar tus valores en /verify para obtener una respuesta satisfactoria
  await page.route("https://gcaptcha4.geetest.com/verify*", async (route) => {
    console.log("Intercepted /verify, injecting fake success...");
    const body = `geetest_${Date.now()}(${JSON.stringify({
      status: "success",
      data: {
        result: "success",
        seccode: {
          captcha_id: solutionObj.captcha_id,
          captcha_output: solutionObj.captcha_output,
          lot_number: solutionObj.lot_number,
          pass_token: solutionObj.pass_token
        }
      }
    })})`;

    await route.fulfill({
      status: 200,
      contentType: "application/javascript",
      body
    });
  });

  // 6. Imitar la acción del usuario (por ejemplo, hacer clic en el botón de la captcha)
  console.log("Waiting for captcha interaction...");
  await page.waitForTimeout(3000);

  // Ejemplo de llamada de verificación:
  try {
    await page.click('.geetest_btn'); // botón de la captcha
    console.log("Clicked captcha button");
  } catch {
    console.log("Captcha button not found");
  }

  // A veces es necesario llamar a verify() manualmente:
  await page.evaluate(() => {
    if (window.initGeetest4 && typeof verify === "function") {
      verify();
    }
  });

  console.log("Waiting for verification request...");
  await page.waitForTimeout(3000);

  await browser.close();

  return { detected, solution: solutionObj };
}
(async () => {
  const url = "https://example.com"; // sustituir por una página con GeeTest v4
  const res = await solveGeetestV4(url);
  console.log("FINISHED:", res);
})();
Cómo conectar GeeTest CAPTCHA v4 a tu sitio
Para orientarte con seguridad en el funcionamiento de la captcha en tu sitio, entender la lógica de verificación y poder reconectarla o reconfigurarla, te recomendamos estudiar esta sección. Aquí se describe el proceso de conexión de la protección, lo que te ayudará a comprender rápidamente todos los matices.

1. Regístrate o accede a tu cuenta de GeeTest.

2. Ve al Captcha Dashboard y selecciona Behavior Verification v4:

HowTo Connect image 1

3. En el panel de control haz clic en + Create application.

4. Indica APP/website name (el nombre del sitio o aplicación donde se utilizará la captcha), Address (el dominio principal del sitio donde se instalará la captcha, por ejemplo, https://example.com), Industry (la categoría del sitio, por ejemplo, “E-commerce”, “Social Media”, etc.) y haz clic en Confirm.

5. Haz clic en Add events junto al nombre de la aplicación recién creada. Especifica Event: el nombre del escenario concreto (evento) en el que se utilizará la captcha, por ejemplo login, register, etc.; Device: la plataforma (por ejemplo Web/Wap); Business types: el tipo de escenario de uso de la captcha (por ejemplo, Sign-up / Sign-in — registro / inicio de sesión). Haz clic en Add.

6. Ahora en tu panel verás el ID (se utiliza en el cliente y el servidor) y la Key (se utiliza en el servidor para la verificación) de la captcha creada:

HowTo Connect image 2

7. Conecta la parte cliente

Incluye el script:

<script src="https://static.geetest.com/v4/gt4.js"></script>

Inicializa la CAPTCHA:

initGeetest4(
  { captchaId: "Your CaptchaId" },
  function (captcha) {
    captcha.appendTo("#captcha"); // insertar en un elemento de la página
  }
);

Importante:

  • La CAPTCHA debe inicializarse al cargar la página; de lo contrario, no podrá rastrear el comportamiento del usuario.
  • Si utilizas varias CAPTCHAs en una misma página, llama a initGeetest4 por separado para cada una.
  • Si utilizas la CAPTCHA dentro de un iframe, añade sandbox="allow-scripts allow-popups".

Ejemplo de códigoEjemplo de código
arrow

8. Configura la parte servidor.

Cuando el usuario supera la CAPTCHA en el frontend, se genera un conjunto de parámetros. Es necesario enviarlos al backend y luego verificarlos a través de la API secundaria de GeeTest para confirmar que la verificación ha sido correcta.

API secundaria de verificación:

url
http://gcaptcha4.geetest.com/validate

  • Método: GET/POST
  • Content-Type: application/x-www-form-urlencoded
  • Respuesta: JSON

Parámetros principales de la solicitud

  • lot_number: número de serie de la verificación
  • captcha_output: datos de la verificación
  • pass_token: token de verificación
  • gen_time: hora de generación de la verificación
  • captcha_id: ID de la CAPTCHA
  • sign_token: firma para la verificación

Ejemplo de respuesta correctaEjemplo de respuesta correcta
arrow

Ejemplo de verificación de la CAPTCHA en PHPEjemplo de verificación de la CAPTCHA en PHP
arrow

Background
Posibles errores y depuración
Bug Icon
Parámetros no válidos
La captcha no se muestra o devuelve errores como invalid-captcha-id / invalid-challenge. Comprueba que estás utilizando valores actualizados de captcha_id y challenge que correspondan a tu página. Estos parámetros se generan dinámicamente en cada solicitud /load.
Bug Icon
Tiempo de espera agotado
La solución de la captcha no se ha recibido a tiempo. Aumenta el tiempo de espera cuando utilices servicios de resolución automática (por ejemplo, CapMonster Cloud) y asegúrate de que la conexión con la API sea estable.
Bug Icon
Campos vacíos
captcha_output, pass_token o lot_number no se envían a la página o a la solicitud de verificación. Asegúrate de que estos valores se insertan correctamente en los campos ocultos del formulario o en el cuerpo de la solicitud a tu servidor.
Bug Icon
Respuesta success=false
El token ha caducado, se ha reutilizado o es falso. Activa el registro de todas las solicitudes y respuestas del servidor de verificación para poder rastrear campos como error_code o error_msg.
Pruebas de resistencia de la protección
Después de la integración, asegúrate de que el sistema realmente proteja el sitio contra acciones automatizadas.
Consejos de seguridad y optimización
Almacena la <b>clave de la captcha (KEY secreta) solo en el servidor</b> y nunca la expongas en la parte cliente.
Registra los códigos de error durante la verificación (<b>error-codes</b> o campos de la respuesta del servidor) para entender las causas de las validaciones fallidas.
Añade enlaces a la <b>Política de privacidad</b> y a los <b>Términos de uso de GeeTest</b> al final del formulario, si así lo requiere la licencia o tus políticas internas.
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 GeeTest CAPTCHA v4, 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 GeeTest CAPTCHA v4 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