CAPTCHA de texto (ImageToText)
y CapMonster Cloud

Resolución de captcha, integración en el sitio web y pruebas.

Precios de la solución CAPTCHA de texto (ImageToText)

CAPTCHA
Precio (USD)
$ 0.30
1000 tokens
¿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 CAPTCHA de texto (ImageToText), 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 CAPTCHA de texto (ImageToText) 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 ImageToText CAPTCHA
Qué es ImageToText CAPTCHA
ImageToText CAPTCHA es un sistema clásico de protección de sitios web basado en el reconocimiento de texto a partir de una imagen. El usuario debe introducir los caracteres (letras, números o una combinación de ambos) que se muestran en una imagen distorsionada. Este enfoque permite distinguir a una persona de scripts automatizados. Se utiliza para proteger formularios de registro, inicio de sesión, envío de mensajes, comentarios y para prevenir solicitudes automáticas masivas.

Cómo resolver ImageToText CAPTCHA con CapMonster Cloud

Al probar formularios con ImageToText CAPTCHA, a menudo es necesario verificar que el captcha funcione correctamente y esté bien integrado.
Puede probar manualmente el captcha integrado en su sitio web:
  • Abra la página con el formulario y asegúrese de que el captcha se muestre.
  • Intente enviar el formulario sin resolver el captcha: el servidor debe devolver un error.
  • Después de resolver correctamente el captcha, el formulario debe enviarse sin errores.
Para el reconocimiento automático del captcha, puede utilizar servicios especializados como CapMonster Cloud, una herramienta que recibe los parámetros del captcha, los procesa en sus servidores y devuelve una solución lista. Esta respuesta se puede insertar en el campo correspondiente para pasar la verificación sin la participació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 captchas de imagen con bibliotecas listas para usar
El servicio CapMonster Cloud proporciona bibliotecas listas para un uso cómodo en Python, JavaScript (Node.js) y C#.
Python
JavaScript
C#
Resolución, inserción de la respuesta y envío del formulario
Ejemplo en Node.js del ciclo completo de reconocimiento de captcha en su página web. Los enfoques posibles incluyen el uso de solicitudes HTTP para obtener el HTML y los parámetros del sistema de protección, enviar la respuesta y procesar el resultado. O, como en el ejemplo siguiente, utilizar herramientas de automatización (por ejemplo, Playwright): abrir la página, esperar la verificación, enviar los parámetros a través del cliente de CapMonster Cloud, obtener el resultado, insertarlo en el campo correspondiente (para pruebas puede usar datos correctos o incorrectos) y observar el resultado.

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

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

const API_KEY = "YOUR_API_KEY"; // Indique su clave API de CapMonster Cloud

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

    // Opcionalmente, puede comprobar su saldo
    const balance = await cmcClient.getBalance();
    console.log("Balance:", balance);

    // 1. Iniciar Playwright y abrir la página con el formulario
    const browser = await chromium.launch({ headless: false });
    const context = await browser.newContext();
    const page = await context.newPage();
    await page.goto("https://example.com/form"); // 2. Obtener la URL del captcha desde la página (ejemplo mediante el selector <img>)

    // 2. Obtener la URL del captcha desde la página (ejemplo mediante el selector <img>)
    const captchaUrl = await page.getAttribute("#captcha-img", "src");

    // 3. Descargar la imagen y convertirla a Base64
    const response = await fetch(captchaUrl);
    const imageBuffer = await response.arrayBuffer();
    const imageBase64 = Buffer.from(imageBuffer).toString('base64');

    // 4. Crear una solicitud para resolver ImageToText
    const imageToTextRequest = new ImageToTextRequest({
        body: imageBase64,
        CapMonsterModule: CapMonsterModules.YandexWave, // u otro módulo
        Case: true,
        numeric: 0,
        recognizingThreshold: 65,
        math: false
    });

    // 5. Obtener la solución del captcha
    const result = await cmcClient.Solve(imageToTextRequest);
    console.log("Captcha solution:", result.solution.text);

    // 6. Insertar la solución en el campo del formulario y enviar
    await page.fill("#captcha-input", result.solution.text); // Reemplace con su selector
    await page.click("#submit-button"); // Reemplace con el selector de su botón
    await page.waitForLoadState("networkidle");

    console.log("Formulario enviado con la solución del captcha");

    // 7. Cerrar el navegador
    await browser.close();
}

solveImageToTextAndFillField().catch(console.error);


  
Cómo conectar un CAPTCHA de texto a su sitio web
Para orientarse con seguridad en el funcionamiento del captcha en su sitio web, comprender la lógica de verificación, volver a conectarlo o reconfigurarlo, recomendamos estudiar esta sección. Describe el proceso de integración de la protección y ayuda a comprender rápidamente todos los matices.

Paso 1. Elegir el enfoque

Primero debe decidir cómo utilizará el captcha:

Opción 1 — Proveedor externo

Adecuado si la rapidez de implementación y el mantenimiento mínimo son importantes.

Ventajas:

  • Integración rápida
  • Protección contra bots lista para usar
  • No es necesario actualizar los algoritmos por su cuenta

Desventajas:

  • Dependencia de un servicio externo
  • Personalización limitada

Opción 2 — CAPTCHA de texto personalizada

Adecuado si necesita control total e integración adaptada a sus necesidades.

Ventajas:

  • Control total sobre la lógica y el diseño
  • Sin dependencias externas
  • Se puede adaptar a escenarios específicos

Desventajas:

  • Debe implementar la protección contra bots por su cuenta
  • Requiere mantenimiento y mejoras con el tiempo

Paso 2. Implementar la generación del captcha

Para un proveedor

  • Regístrese en el servicio
  • Obtenga las claves (site key / secret key)
  • Conecte el script en la página con el formulario

Para un captcha personalizado

  • Genere una cadena aleatoria (números o letras)
  • Represéntela en una imagen (Canvas, SVG o generación del lado del servidor)
  • Añada distorsiones: ruido, líneas, rotación de caracteres

Paso 3. Mostrar el captcha al usuario

  • Inserte la imagen del captcha junto al formulario
  • Añada un campo de entrada de texto
  • Implemente un botón para actualizar el captcha

Importante: cada carga debe generar un nuevo código.

Paso 4. Enviar los datos al servidor

Al enviar el formulario, envíe:

  • El texto introducido por el usuario
  • El identificador del captcha o el token de sesión

Para un captcha personalizado, el código no debe almacenarse en el cliente, solo en el servidor.

Paso 5. Verificar el captcha en el servidor

Proveedor

  • Envíe el token del captcha al servidor del proveedor
  • Reciba el resultado de la verificación (correcto / error)

Captcha personalizado

  • Compare el texto introducido con el valor almacenado
  • Tenga en cuenta el tiempo de vida del captcha (por ejemplo, 1–2 minutos)

Paso 6. Tomar una decisión

  • Si el captcha se ha superado, ejecute la acción (inicio de sesión, registro, envío del formulario)
  • Si no, muestre un error y genere un nuevo captcha

Paso 7. Reforzar la protección (recomendado)

Incluso para un captcha de texto, se recomienda añadir:

  • Límite en el número de intentos
  • Vinculación a IP, sesión o cookies
  • Tokens temporales (de un solo uso)
  • Registro de actividades sospechosas
Background
Posibles errores y depuración
Bug Icon
El captcha de imagen no se carga
(Imagen vacía, 404/500 o error de generación): la causa más común es una lógica de generación incorrecta. Asegúrese de que el servidor cree correctamente la imagen y la devuelva al cliente, y de que la ruta del endpoint esté especificada correctamente.
Bug Icon
Código de captcha inválido o vacío
Compruebe que la entrada del usuario se envía realmente al servidor y se compara con el valor del captcha almacenado.
Bug Icon
Los códigos no coinciden con una entrada correcta

Asegúrese de que:

  • El captcha no se regenere antes de la verificación;
  • El código se almacene por separado para cada sesión o token;
  • El captcha no haya expirado.
Bug Icon
Tiempo de vida del captcha expirado
Aumente el TTL del captcha en el servidor o actualícelo en intentos de entrada repetidos.
Pruebas de resistencia de la protección
Después de la integración, es importante asegurarse de que el captcha de texto realmente protege el formulario.
Consejos de seguridad y optimización
Guarde la respuesta correcta del captcha solo en el <span class="font-bold">servidor</span> (en memoria, Redis o una base de datos) y no la envíe al cliente.
Utilice tokens de un solo uso o identificadores de captcha.
Limite el número de intentos de entrada para un solo captcha.
Utilice siempre HTTPS para transmitir los datos del formulario y las respuestas del captcha.
Registre los errores de generación y verificación del captcha (hora, IP, motivo del rechazo): esto facilita la depuración y el análisis de ataques.
Actualice periódicamente el algoritmo de generación (fuentes, distorsiones, ruido).
Conclusión

Si ha heredado un sitio web con un captcha u otro sistema de protección ya instalado y no tiene acceso al código, ¡no hay problema! Determinar qué tecnología se utiliza es bastante sencillo. Para comprobar el funcionamiento correcto, puede utilizar el servicio de reconocimiento de CapMonster Cloud en un entorno de prueba aislado para asegurarse de que la lógica de procesamiento de tokens y validación funcione correctamente.

En el caso de un captcha basado en imágenes, basta con identificar el sistema, estudiar su comportamiento y asegurarse de que la protección funcione correctamente. En este artículo mostramos cómo identificar un captcha de imagen (ComplexImage) y cómo conectarlo o reconfigurarlo para mantener y controlar la protección con confianza.

Conclusion
Enlaces útiles
DocIconDocumentación de CapMonster Cloud (trabajo con CAPTCHA de texto)DocIconGuía: cómo crear tu propio CAPTCHADocIconRegistro en CapMonster Cloud

Preguntas frecuentes sobre ImageToText CAPTCHA

  • Almacene las respuestas CAPTCHA solo en el servidor, por ejemplo en memoria, Redis o una base de datos, y nunca las exponga al cliente.
  • Vincule cada CAPTCHA a una sesión única o a un token de un solo uso para que no pueda reutilizarse entre solicitudes.
  • Establezca un tiempo de expiración corto, como 1–2 minutos, para que los códigos antiguos queden inválidos automáticamente.
  • Invalida la CAPTCHA inmediatamente después de una verificación exitosa para que sea de un solo uso.
  • Limite el número de intentos y genere una nueva CAPTCHA después de cada intento fallido en lugar de reutilizar la misma imagen.
  • Vincule cada CAPTCHA a una dirección IP, sesión o cookie para evitar abusos entre solicitudes.
  • Registre los fallos de generación y validación de CAPTCHA, incluyendo marca de tiempo, IP y motivo del rechazo, para detectar patrones de ataque y ajustar umbrales.
  • Utilice siempre HTTPS para proteger los datos del formulario y las respuestas CAPTCHA en tránsito.
  • Actualice periódicamente la configuración de generación de desafíos, como fuentes, distorsión y ruido, para dificultar la resolución automatizada.

Si la imagen CAPTCHA está en blanco o no se carga, compruebe que el endpoint de generación del servidor crea la imagen correctamente, la devuelve adecuadamente al cliente y que la URL del endpoint es correcta.

Si los usuarios introducen el código correcto pero la validación falla, asegúrese de que la CAPTCHA no se regenere entre la carga de la página y el envío del formulario.

Verifique que el valor CAPTCHA almacenado esté vinculado a la misma sesión o token utilizado durante la validación.

Compruebe si la CAPTCHA expiró antes del envío, ya que un código caducado provocará una discrepancia incluso si la entrada es correcta.

Además de los campos obligatorios type y body, puede usar cinco parámetros opcionales para afinar el reconocimiento:

  • recognizingThreshold: Establezca un valor de 0 a 100 para controlar el umbral de confianza; valores más bajos aceptan más resultados, mientras que valores más altos son más estrictos.
  • case: Establezca en true si la CAPTCHA distingue entre mayúsculas y minúsculas
  • numeric: Establezca en 1 si la imagen contiene solo dígitos
  • math: Establezca en true si la imagen contiene una expresión matemática
  • capMonsterModule: Especifique un módulo de reconocimiento como yandex para mejorar la precisión en proveedores compatibles. Para ver el conjunto completo de módulos, consulte la documentación.

Hay una excepción importante: al usar el módulo captcha_math mediante el parámetro capMonsterModule, no debe establecer math: true en la misma solicitud. Para todos los demás módulos en los que la imagen CAPTCHA contiene una expresión matemática, establecer math: true indica al solver que evalúe y devuelva el resultado numérico en lugar de la cadena de caracteres original. Leer más