Primeros pasos

Cree un sitio, añada el widget, compruebe el token: el camino más corto a una protección funcional.

Documentación

Integra CaptchaCore en tu proyecto en 5 minutos.

1 Crear sitio y claves

  1. Inicio de sesión en /admin
  2. Crear un sitio nuevo en Sitios (nombre + dominio)
  3. Generar un par de claves en Claves API
  4. Guarda de forma segura las claves cc_pub_... (pública) y cc_sec_... (secreta)

2 Integrar el widget (frontend)

La public key (cc_pub_) se usa en el navegador.

<!-- In deinem HTML, vor </body> -->
<script src="https://src-eu.captchacore.eu/widget/captchacore-v2.min.js"
        data-service-url="https://api.captchacore.eu"
        data-site-key="cc_pub_DEIN_KEY"
        async defer></script>

<!-- Formular mit CaptchaCore -->
<form data-captchacore="interactive" method="post">
    <!-- Deine Formularfelder -->
    <div data-captchacore-widget></div>
    <button type="submit">Absenden</button>
</form>

3 Verificar el token (backend)

La secret key (cc_sec_) se usa en el servidor.

POST https://api.captchacore.eu/api/v2/verify
Header: X-CaptchaCore-Key: cc_sec_DEIN_SECRET

Body:
{
    "token":     "<captchacore_token aus dem Formular>",
    "form_type": "register"
}

Response:
{
    "valid":      true,
    "decision":   "allow",        // allow | challenge | step_up | block
    "risk_score": 8,
    "confidence": 0.94,           // 0.0–1.0 Signalabdeckung
    "reasons":    ["pow_valid", "behavior_human_like", "ip_clean"],
    "step_up":    null             // Step-Up-Challenge falls noetig
}

Integración HTML

Para páginas estáticas, proyectos PHP, Node.js o cualquier otro backend.

Frontend

El widget se adjunta automáticamente a todos los formularios con el atributo data-captchacore. Inserta un campo oculto captchacore_token.

Backend (cualquier lenguaje)

# curl Beispiel
curl -X POST https://api.captchacore.eu/api/v2/verify \
  -H "X-CaptchaCore-Key: cc_sec_DEIN_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"token":"TOKEN_AUS_FORMULAR","form_type":"contact"}'

# Antwort prüfen: valid=true UND action != "block"