Menschliche Verifikation ohne Tracking

# AgentHouse HumanProof

Wehren Sie Bots und Spam auf HTML-Formularen ab — ohne Cookies, Fingerprinting oder Drittanbieter-CAPTCHA-Widgets. Eine JavaScript-Datei und ein serverseitiger Verify-Aufruf; der Nachweis läuft unauffällig im Hintergrund.

Keine Cookies

Ein Script

Serverseitig verifiziert

## Eine moderne Alternative zu CAPTCHAs

Klassische CAPTCHAs bremsen Nutzer, belasten die Barrierefreiheit und ziehen oft tracking-lastige Drittanbieter-Skripte nach sich. HumanProof nutzt kurzlebige signierte Challenges und leichten Proof-of-Work im Browser — ohne Rätsel, Bilder oder Extra-Widgets.

* Kein Fingerprinting und kein Cross-Site-Tracking-Profil durch ein Widget-Netzwerk.
* Kein Google- oder externer CAPTCHA-Anbieter muss auf Ihrer Seite eingebunden werden.
* Geheimnisse bleiben auf Ihrem Server — der Browser enthält nie den Verify-Key.

## So funktioniert es

Von der Challenge bis zur verifizierten Einsendung in vier Schritten.

* Das SDK fordert eine signierte Challenge für Ihren öffentlichen Site-Key und die Form-ID an.
* Der Browser löst einen kleinen Proof-of-Work (wenn möglich außerhalb des Main-Threads).
* Der Nachweis wird als verstecktes Feld beim normalen Formular-Submit angehängt.
* Ihr Server ruft die Verify-API mit dem Secret-Key auf und erhält accept, quarantine oder fake-success.

## Für privacy-first Websites gebaut

Passt zu GDPR-bewussten Teams und EU-first Hosting: kleine Angriffsfläche, keine Ad-Tech-Skripte auf Ihrem Formular.

* Für das Widget sind keine Cookies erforderlich.
* Der Datenverkehr verläuft zwischen Ihrem Origin und der AgentHouse-API — keine Ad-Netzwerk-Skripte.
* Auf der Verifikationsseite minimale, retention-orientierte Protokollierung.
* Sie entscheiden pro Ergebnis — annehmen, unter Quarantäne stellen oder Fake-Success — auf Ihrem eigenen Backend.

## Eine JavaScript-Datei — mehr brauchen Sie nicht

Kein npm, kein Bundler, kein Framework: laden Sie ein Script von der AgentHouse-API, setzen Sie data-Attribute auf Ihre Formulare — fertig. Ein Script kann viele Formulare auf derselben Seite schützen. Optional: Zeile „Powered by AgentHouse“ standardmäßig dabei.

## Entwicklerfreundliche Integration

Frontend: ein Script einbinden. Backend: ein JSON-POST zur Verifikation. Funktioniert mit jedem Stack — Node.js, PHP, Python oder allem, das HTTPS kann.

Backend: Denselben JSON-Body an POST …/humanproof/verify senden. Die Antwort enthält u. a. status, suggestedAction, reasonCode und accept (boolean — nur true, wenn die Eingabe als verifizierte Übermittlung gelten soll). Nur serverseitig aufrufen — der secretKey darf nie im Browser landen.

Manche Formulare verlangen beim Verify ein Feld hostname (muss mit boundHost im Client-Payload übereinstimmen — der Host, mit dem die Challenge angefordert wurde). Ist requireVerifyHostname aktiv und fehlt hostname, liefert die API reasonCode HOSTNAME\_REQUIRED. 127.0.0.1 und localhost sind unterschiedlich; tragen Sie beide in hostnames ein oder stimmen Sie Entwicklungs-URL und data-challenge-hostname mit dem Verify-Body ab.

Script- und API-URLs auf dieser Seite folgen Ihrer Konfiguration (Produktion: api.agenthouse.org; humanproof.publicSdkBase in secrets.json für eine Dev-API).

Wenn das SDK beim Absenden Challenge und Proof-of-Work ausführen muss, feuert es auf window das CustomEvent humanproof.securingForm (detail: form, siteKey, formId), damit Ihre App Fortschritt anzeigen kann. Bei Fehlern: humanproof-error auf dem Formular.

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

Proof-of-Work ist erst nach einer Server-Challenge möglich. Optional: data-prefetch-challenge-delay-ms am Script (Millisekunden nach dem Laden), um Challenge und Lösung im Hintergrund zu starten; beim Absenden wird die Lösung wiederverwendet, solange sie gültig ist. data-prefetch-expiry-margin-ms verlangt so viel verbleibende TTL vor der Wiederverwendung (Uhrenabweichung). Pro Formular: data-humanproof-prefetch-challenge-delay-ms und data-humanproof-prefetch-expiry-margin-ms.

HTML HTML Mehrfach 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>
```

```
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, ...payload };
if (typeof body.hostname !== 'string' || !body.hostname.trim()) {
  if (typeof body.boundHost === 'string' && body.boundHost.trim()) {
    body.hostname = body.boundHost.trim();
  }
}
const result = await (await fetch(verifyUrl, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(body)
})).json();
if (!result.accept) return; // do not process as a verified submit
```

```
<?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);
if (empty($body['hostname']) && !empty($body['boundHost'])) {
  $body['hostname'] = $body['boundHost'];
}
$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);
// if (empty($result['accept'])) { return; }
?>
```

```
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}
    if not (isinstance(body.get("hostname"), str) and body["hostname"].strip()):
        bh = body.get("boundHost")
        if isinstance(bh, str) and bh.strip():
            body["hostname"] = bh.strip()
    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:
        r = json.load(resp)
    # if not r.get("accept"): return
    return r
```

## Branding

HumanProof zeigt standardmäßig eine kleine Zeile „Powered by AgentHouse“. Mit einem einfachen monatlichen Abo blenden Sie sie aus — gleiches Produkt, gleiche Datenschutzgarantien.

* Kleine „Powered by“-Zeile in der kostenlosen Variante inklusive.
* Bezahlplan blendet die Zeile aus; Verhalten und Verifikation bleiben gleich.
* Kontaktieren Sie uns, wenn Sie lizenzieren möchten.

## Warum Teams HumanProof wählen

Konkrete Vorteile für Produkt- und Compliance-Teams.

* Weniger Unterbrechungen als Bild- oder Rätsel-CAPTCHAs — nichts Neues zum Anklicken.
* Bessere Barrierefreiheit: kein visueller Challenge-Schritt, nutzbar mit Tastatur-Flows.
* Starkes Privacy-Profil: kein Drittanbieter-CAPTCHA oder Ad-Widget auf Ihrem Formular.
* Schnell live: ein Script, eine Verify-API, Beispiele für gängige Backends.
* Richtlinien unter Ihrer Kontrolle: Schwierigkeit pro Formular und Umgang mit verdächtigen Einsendungen.

## Live ausprobieren

Senden Sie das Formular unten ab: Proof-of-Work läuft im Hintergrund, danach POST an unseren Demo-Server (keine Speicherung).

Name 

E-Mail 

Firma 

Nachricht 

Formular absenden 

### Demo-Ergebnis

OK 

## Ihre Formulare jetzt schützen

Richten Sie Site-Key und Regeln pro Formular in AgentHouse ein, fügen Sie das Script ein und verifizieren Sie jede Einsendung auf Ihrem Backend. Das ist die ganze Integration — wir helfen gern beim Rollout.

[Jetzt starten](/de/consulting/#cta)