Skip to content

Schnellstart

Diese Anleitung hilft Ihnen, CaptchaLa CAPTCHA in 5 Minuten zu integrieren.

In 30 Sekunden in Aktion sehen

demo-v1.captcha.la — reines HTML + PHP, MIT-lizenziert, Quelltext auf jeder Seite einsehbar.

1. Konto erstellen

Registrieren Sie sich kostenlos im Dashboard.

Jetzt registrieren →

2. Anwendung anlegen

Legen Sie im Dashboard eine Anwendung an, um Ihren App Key zu erhalten.

3. SDK installieren

Wählen Sie Ihre bevorzugte Installationsmethode.

html
<!-- CDN loader (recommended): auto-fallback CDN, ~6 KB gzip -->
<script src="https://cdn.captcha-cdn.net/captchala-loader.js"></script>
bash
# or via npm
npm install captchala

4. CAPTCHA initialisieren

Initialisieren Sie die CAPTCHA-Komponente auf Ihrer Seite.

html
<button id="login-btn">Sign in</button>

<script>
loadCaptchala(function () {
  Captchala.init({
    appKey: 'YOUR_APP_KEY',
    product: 'bind',          // popup | float | bind | embed
    action: 'login',
    lang: 'auto',
  })
  .onSuccess(function (res) {
    // res.token starts with pt_ — POST it to your backend
    submitLogin(res.token);
  })
  .onError(function (err) { console.error(err.message); })
  .bindTo('#login-btn');     // popup/bind use bindTo; float/embed use appendTo
});
</script>

5. Serverseitige Validierung

Validieren Sie den Token auf Ihrem Server.

bash
POST https://apiv1.captcha.la/v1/validate
X-App-Key: YOUR_APP_KEY
X-App-Secret: YOUR_APP_SECRET
Content-Type: application/json

{ "pass_token": "<from onSuccess>", "client_ip": "<end-user IP>" }
json
{
  "code": 0,
  "data": {
    "valid": true,
    "action": "login",
    "challenge_id": "ch_xxx",
    "uid": null,
    "client_ip": "1.2.3.4",
    "risk_score": 12
  }
}

WARNING

Prüfen Sie stets, dass data.valid === true und dass data.action mit der erwarteten Szene übereinstimmt. Pass-Tokens sind Einmal-Tokens; derselbe pt_xxx kann nicht zweimal validiert werden.

Servergenerierter-Token-Modus (für die Produktion empfohlen)

Für sensible Aktionen (Anmeldung, Registrierung, Bezahlung) empfehlen wir den servergenerierten Token-Flow: Ihr Backend fordert zunächst einen kurzlebigen server_token an, den der Browser anschließend zur Initialisierung des CAPTCHA verwendet. Dies verhindert Missbrauch durch einen geleakten app_key.

Wann sollte er verwendet werden?

  • Empfohlen: Registrierung, Anmeldung, Passwort-Zurücksetzen, Bezahlung, Punkte-Einlösung sowie jeder Endpoint, den ein Angreifer skripten kann.
  • Optional: einfache öffentliche Formulare, Suchfelder und geringwertige Interaktionen, bei denen Komfort wichtiger ist.

1. Backend stellt server_token aus

Rufen Sie /v1/server/challenge/issue von Ihrem eigenen Server aus auf, unter Verwendung der Header X-App-Key und X-App-Secret. Geben Sie diese Header niemals an den Browser weiter.

bash
# Server-side only — never call this from a browser
curl -X POST https://apiv1.captcha.la/v1/server/challenge/issue \
  -H "X-App-Key: YOUR_APP_KEY" \
  -H "X-App-Secret: YOUR_APP_SECRET" \
  -d "action=login&ttl=300&max_uses=1&bind_ip=1.2.3.4"

# → { "code": 0, "data": { "server_token": "sct_...", "expires_in": 300 } }

2. Frontend rendert CaptchaLa mit dem server_token

Übergeben Sie den Token an Ihre CaptchaLa-Komponente. Das SDK reicht ihn bei der Initialisierung der Challenge weiter.

js
// Browser fetches the token from YOUR backend, not from CaptchaLa directly
const { serverToken } = await fetch('/api/captcha/issue').then(r => r.json());

Captchala.init({
  appKey: 'YOUR_APP_KEY',
  serverToken,             // single-use, short-lived
  product: 'popup',
  action: 'login',
})
.appendTo('#captcha-container')
.onSuccess(res => submitForm(res.token));

Sicherheitshinweise

  • Geben Sie app_secret niemals in Frontend-Code, mobilen Apps oder öffentlichen Repositories preis. Es muss serverseitig bleiben.
  • Aktivieren Sie im Dashboard "Servergenerierten Challenge-Token erforderlich", um jede Challenge ohne server_token abzulehnen.
  • Halten Sie ttl kurz (Standard 300 s, max. 900 s) und bevorzugen Sie max_uses=1, um die Auswirkungen eines Token-Leaks zu minimieren.

Nächste Schritte

MIT-licensed examples · CaptchaLa is operated independently