Captcha Manager

El captcha propio de CosasDNS para las webs que gestionas.

Captcha propio

Protege tus formularios sin depender de terceros

Captcha Manager ofrece el captcha propio de CosasDNS para tus webs: imagen, híbrido o invisible, siempre con proof-of-work, una API key y una lista de dominios permitidos. Sin Google reCAPTCHA, hCaptcha ni Turnstile.

Empezar

No hay registro propio: el botón te lleva a admin.cosasdns.com, donde usas tu sesión de siempre.

Qué incluye

Tres modos, proof-of-work y control por app para validar el captcha en tu web.

Captcha local

La imagen se genera y se valida en CosasDNS. Sin proveedor externo y sin claves de terceros.

Proof-of-work obligatorio

En los tres modos, el cliente resuelve un reto de proof-of-work antes de validar. Sin PoW no hay validación.

API key por app

Cada integración tiene su propia API key. Se envía en la cabecera X-API-Key.

Dominios permitidos

Autoriza dominios exactos (sub.test.com) o wildcard (*.test.com). El servidor comprueba Origin y Referer contra esa lista.

Límite de peticiones

El API aplica rate limit por clave e IP para frenar el abuso.

Errores claros

401 si la API key no vale, 403 si el dominio no está permitido, 429 si se supera el límite y 422 si falta algún dato.

Tres modos de verificación

Cada app decide cómo pedir la verificación. El proof-of-work se mantiene siempre.

Imagen

Siempre pide el código de la imagen y el proof-of-work. Es el modo más explícito y el fallback seguro.

Híbrido

Calcula un score invisible; si el riesgo sube, muestra la imagen. Permite forzar la imagen manualmente.

Invisible

Calcula el score sin mostrar imagen; si el riesgo sube, hace fallback automático a imagen y PoW.

La gestión vive en el Admin

Captcha Manager no tiene panel propio: todo se configura en admin.cosasdns.com → Dashboard → Captcha.

1

Entra en el Admin

Abre admin.cosasdns.com con tu cuenta de CosasDNS. Si no tienes sesión, el propio Admin te permite entrar o registrarte.

2

Abre Captcha

En el Dashboard, dentro del bloque APIs, pulsa Captcha.

3

Crea la app y copia la clave

Ponle título, añade los dominios, activa la app y copia la API key para tu web.

Ir al Admin

La sesión, el login y el registro son los de admin.cosasdns.com. Esta landing no pide credenciales.

Cómo se integra

El modo elegido cambia el reto, pero el flujo es el mismo:

  1. Tu web pide el reto al API con su API key; la app decide imagen o token según su modo y riesgo.
  2. El usuario resuelve la imagen y el proof-of-work, o solo el proof-of-work si el modo devuelve un token de un solo uso.
  3. El API comprueba la API key, el dominio, el PoW, el riesgo y el límite; consume el token si aplica.
  4. Si todo cuadra, devuelve la validación a tu formulario.

Código de integración

Añade el componente al formulario y valida el captcha en tu servidor antes de procesar los datos.

1. Cliente (JavaScript)

El componente pinta la imagen o resuelve el reto invisible, calcula el proof-of-work y añade captcha_id, captcha_input, captcha_token y pow_* al payload.

<script type="module">
import CosasCaptchaForm from 'https://cdn.cosasdns.com/components/captcha/form.js?v=160';

new CosasCaptchaForm({
  form: '#contact-form',
  result: '#form-result',
  captchaContainer: '#captcha',
  apiKey: 'TU_API_KEY',
  lang: 'es',

  // El componente añade captcha_id, captcha_input, captcha_token y pow_* al payload.
  submit: async (payload) => {
    const response = await fetch('/contact.php', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    });

    return response.json();
  }
}).init();
</script>

2. Servidor (PHP)

Envía id/input para el modo imagen y captcha_token para invisible/híbrido. Valida contra la API con la misma API key y el dominio del formulario; no proceses el formulario si valid es false.

<?php
$payload = json_decode(
    file_get_contents('php://input'),
    true,
    512,
    JSON_THROW_ON_ERROR
);

$ch = curl_init('https://api.cosasdns.com/captcha/app/validate');

curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'X-API-Key: ' . getenv('CAPTCHA_API_KEY'),
        'X-Captcha-Domain: ' . $_SERVER['HTTP_HOST'],
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'id' => $payload['captcha_id'] ?? '',
        'input' => $payload['captcha_input'] ?? '',
        'captcha_token' => $payload['captcha_token'] ?? '',
        'pow_challenge' => $payload['pow_challenge'] ?? '',
        'pow_signature' => $payload['pow_signature'] ?? '',
        'pow_nonce' => $payload['pow_nonce'] ?? '',
    ], JSON_THROW_ON_ERROR),
]);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode((string) $response, true, 512, JSON_THROW_ON_ERROR);

if (!($result['data']['valid'] ?? false)) {
    http_response_code(422);
    exit('Captcha inválido');
}

// Continúa con el alta, contacto, etc.

La API key está limitada a los dominios de la app. No la uses como sustituto de la validación en servidor: el navegador puede omitir cualquier comprobación del cliente.

Preguntas frecuentes

¿Necesito crear otra cuenta?

No. Captcha Manager usa la cuenta y la sesión de admin.cosasdns.com. Desde esta landing solo te llevamos allí.

¿Usa reCAPTCHA, hCaptcha o Turnstile?

No. El captcha es propio: imagen generada en CosasDNS más un proof-of-work obligatorio. Cada app puede usar modo imagen, híbrido o invisible.

¿Cómo limito qué webs pueden usar mi API key?

Cada app tiene su lista de dominios. Puedes autorizar el dominio exacto o un wildcard como *.test.com. El API comprueba Origin y Referer contra esa lista.

¿Dónde veo la API key?

En Admin → Dashboard → Captcha. La clave se puede consultar y rotar desde ahí; no se muestra en esta landing.

¿Qué pasa si alguien usa mi clave desde otro dominio?

El API devuelve 403 y no valida el captcha: el dominio de origen no está en la lista de la app.