Verificación humana sin rastreo

# AgentHouse HumanProof

Frene bots y spam en formularios HTML — sin cookies, huella ni widgets CAPTCHA de terceros. Un archivo JavaScript y verificación en servidor; la prueba corre en segundo plano.

Sin cookies

Script en un archivo

Verificado en el servidor

## Una alternativa moderna a los CAPTCHA

Los CAPTCHA clásicos frenan a la gente, dificultan la accesibilidad y suelen traer scripts de terceros muy invasivos. HumanProof usa un desafío firmado de corta vida y prueba de trabajo ligera en el navegador — sin puzzles, imágenes ni widgets extra.

* Sin huella ni perfil de seguimiento entre sitios por una red de widgets.
* No hace falta Google ni otro proveedor CAPTCHA externo en su página.
* Los secretos quedan en su servidor: el navegador nunca tiene la clave de verificación.

## Cómo funciona

Del desafío al envío verificado en cuatro pasos.

* El SDK solicita un desafío firmado para su clave de sitio pública e id de formulario.
* El navegador resuelve una pequeña prueba de trabajo (fuera del hilo principal si es posible).
* La prueba se adjunta como campo oculto al enviar el formulario.
* Su servidor llama a la API de verificación con la clave secreta y recibe accept, quarantine o fake-success.

## Pensado para sitios privacy-first

Encaja en equipos conscientes del RGPD y hosting UE: superficie pequeña, sin scripts ad-tech en su formulario.

* No se requieren cookies para el widget.
* El tráfico queda entre su origen y la API de AgentHouse — sin scripts de redes de anuncios.
* En verificación, registro mínimo y consciente de la retención.
* Usted decide cada resultado — aceptar, cuarentena o fake-success — en su propio backend.

## Un solo archivo JavaScript — nada más

Sin npm, bundler ni framework: cargue un script desde la API AgentHouse, ponga atributos data en sus formularios y listo. Un script puede proteger varios formularios en la misma página. Línea opcional «Powered by AgentHouse» incluida por defecto.

## Integración amigable para desarrolladores

Front: un script. Back-end: una POST JSON para verificar. Sirve con cualquier pila — Node.js, PHP, Python o lo que pueda llamar a HTTPS.

Las URLs de script/API siguen la configuración (prod: api.agenthouse.org; humanproof.publicSdkBase para dev).

Si el SDK debe pedir la challenge y resolver el PoW al enviar, dispara en window el CustomEvent humanproof.securingForm (detail: form, siteKey, formId) para que su app muestre progreso. Si falla: humanproof-error en el formulario.

```
window.addEventListener('humanproof.securingForm', function (e) { /* e.detail.form, siteKey, formId */ });
```

El PoW exige antes la challenge del servidor. Opcional: data-prefetch-challenge-delay-ms en el script (ms tras la carga) para obtener la challenge y resolver en segundo plano; al enviar se reutiliza la prueba si sigue válida. data-prefetch-expiry-margin-ms exige ese margen de TTL restante (desfase de reloj). Por formulario: data-humanproof-prefetch-challenge-delay-ms y data-humanproof-prefetch-expiry-margin-ms.

HTML HTML multi-formulario Node.js PHP Python 

```
<form id="contact-form" data-humanproof="YOUR_FORM_ID">
  <label>Email <input type="email" name="email" required></label>
  <button type="submit">Send</button>
</form>
<script
  src="https://api.agenthouse.org/humanproof/humanproof.js"
  data-site-key="YOUR_PUBLIC_SITE_KEY"
  data-powered-by="true"
  data-endpoint="https://api.agenthouse.org/humanproof"
  data-prefetch-challenge-delay-ms="2500"
  data-prefetch-expiry-margin-ms="15000"
></script>
```

```
<form id="a" data-humanproof="form-a">...</form>
<form id="b" data-humanproof="form-b">...</form>
<script
  src="https://api.agenthouse.org/humanproof/humanproof.js"
  data-site-key="YOUR_PUBLIC_SITE_KEY"
  data-powered-by="true"
  data-endpoint="https://api.agenthouse.org/humanproof"
  data-prefetch-challenge-delay-ms="2500"
  data-prefetch-expiry-margin-ms="15000"
></script>
```

```
// POST https://api.agenthouse.org/humanproof/verify — JSON body (Node 18+ fetch)
const verifyUrl = 'https://api.agenthouse.org/humanproof/verify';
const secretKey = ''; // set from your secrets store before use
const payload = JSON.parse(formFields.humanproof);
const body = {
  secretKey,
  siteKey: payload.siteKey,
  formId: payload.formId,
  challengeId: payload.challengeId,
  challenge: payload.challenge,
  nonce: payload.nonce,
  signature: payload.signature,
  algorithm: payload.algorithm,
  salt: payload.salt,
  expiresAt: payload.expiresAt,
  difficulty: payload.difficulty,
  boundHost: payload.boundHost,
  boundAction: payload.boundAction,
  submitDurationMs: payload.submitDurationMs
};
const res = await fetch(verifyUrl, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(body)
});
const result = await res.json();
// result.status: 'ok' | 'suspicious' | 'reject'
// result.suggestedAction: 'accept' | 'quarantine' | 'fake-success' | 'reject'
```

```
<?php
$url = 'https://api.agenthouse.org/humanproof/verify';
$secret = ''; // set from your server secret store before use
$payload = json_decode($_POST['humanproof'], true);
$body = array_merge(['secretKey' => $secret], $payload);
$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
  CURLOPT_POSTFIELDS => json_encode($body),
  CURLOPT_RETURNTRANSFER => true,
]);
$out = curl_exec($ch);
$result = json_decode($out, true);
?>
```

```
import json
import urllib.request

VERIFY_URL = "https://api.agenthouse.org/humanproof/verify"

def verify_humanproof(secret_key: str, payload: dict) -> dict:
    body = {"secretKey": secret_key, **payload}
    req = urllib.request.Request(
        VERIFY_URL,
        data=json.dumps(body).encode("utf-8"),
        headers={"Content-Type": "application/json"},
        method="POST",
    )
    with urllib.request.urlopen(req, timeout=30) as resp:
        return json.load(resp)
```

## Marca

HumanProof muestra por defecto una línea breve «Powered by AgentHouse». Elimínela con una suscripción mensual sencilla: mismo producto, mismas garantías de privacidad.

* Línea breve «Powered by» incluida en el nivel gratuito.
* El plan de pago oculta la línea; el comportamiento y la verificación son los mismos.
* Contáctenos cuando quiera licenciar.

## Por qué los equipos eligen HumanProof

Beneficios prácticos para producto y cumplimiento.

* Menos interrupciones que los CAPTCHA de imagen o rompecabezas: nada nuevo que pulsar.
* Mejor accesibilidad: sin paso visual obligatorio, compatible con flujo por teclado.
* Privacidad sólida: sin CAPTCHA de terceros ni widget publicitario en su formulario.
* Rápido de integrar: un script, una API de verificación, ejemplos para backends habituales.
* Política bajo su control: dificultad por formulario y manejo de envíos sospechosos.

## Pruébelo en vivo

Envíe el formulario de abajo: la prueba de trabajo corre en segundo plano y la demo publica en nuestro servidor (no se guarda nada).

Nombre 

Correo 

Empresa 

Mensaje 

Enviar formulario 

### Resultado de la demo

OK 

## Empiece a proteger sus formularios

Configure la clave de sitio y reglas por formulario en AgentHouse, añada el script y verifique cada envío en su backend. Esa es toda la integración — podemos ayudar con el despliegue.

[Empezar](/es/consulting/#cta)