Migrationsanleitung

Von reCAPTCHA zu CaptchaLa migrieren

Drop-in-Ersatz in unter 10 Minuten. Behalten Sie Ihre Formulare, tauschen Sie nur den Verifizierungsanbieter. Funktioniert mit Vanilla-HTML, WordPress, Flarum und jedem Backend.

GreCAPTCHACurrent setup~10 minCaptchaLaDrop-in target

So sieht die Code-Änderung aus

Before — reCAPTCHA v2
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
After — CaptchaLa
<button id="login-btn">Sign in</button>
<script src="https://cdn.captcha-cdn.net/captchala-loader.js"></script>
<script>
  loadCaptchala(() => Captchala.init({ appKey: 'YOUR_APP_KEY', action: 'login' })
    .onSuccess(res => onToken(res.token))
    .bindTo('#login-btn'));
</script>
Before — reCAPTCHA server verify (Node)
const res = await fetch('https://www.google.com/recaptcha/api/siteverify', {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: new URLSearchParams({
    secret: process.env.RECAPTCHA_SECRET,
    response: req.body['g-recaptcha-response'],
  }),
})
const data = await res.json()
if (!data.success) return res.status(400).json({ error: 'bot' })
After — CaptchaLa server verify (Node)
const res = await fetch('https://apiv1.captcha.la/v1/validate', {
  method: 'POST',
  headers: {
    'X-App-Key': process.env.CAPTCHALA_APP_KEY,
    'X-App-Secret': process.env.CAPTCHALA_APP_SECRET,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ pass_token: req.body['captchala-token'] }),
})
const { data } = await res.json()
if (!data || !data.valid) return res.status(400).json({ error: 'bot' })

Migrationsschritte

  1. 1

    Registrieren & App Key + Secret holen

    Legen Sie ein kostenloses CaptchaLa-Konto an, fügen Sie eine Site hinzu und kopieren Sie den App Key (öffentlich) und das App Secret (serverseitig). Keine Karte erforderlich.

  2. 2

    Widget-Tag im Formular austauschen

    Ersetzen Sie das reCAPTCHA-div und die Script-src durch die CaptchaLa-Entsprechungen. Die Tag-Klasse ändert sich von g-recaptcha zu captchala, data-sitekey wird zu data-app-key, und die Script-URL zeigt auf unser CDN.

  3. 3

    Feldnamen beim Formular-Submit anpassen

    reCAPTCHA fügt ein verstecktes Feld namens g-recaptcha-response ein. CaptchaLa verwendet captchala-token. Wenn Ihr Formular-Handler das Feld über den Namen ausliest, benennen Sie die Konstante um; andernfalls fließt das versteckte Input automatisch durch.

  4. 4

    Serverseitige Verifizierung aktualisieren

    Richten Sie die Verify-Anfrage auf apiv1.captcha.la/v1/validate aus, mit App-Zugangsdaten in den Headern (X-App-Key / X-App-Secret) und pass_token im JSON-Body. Die Antwortstruktur liefert dasselbe valid-Flag (data.valid) wie reCAPTCHA, sodass bestehende Verzweigungslogik unverändert bleibt.

  5. 5

    Schrittweise ausrollen

    Die meisten Teams gehen zuerst mit einem Formular live (oft dem mit dem geringsten Traffic – Newsletter-Anmeldung oder Kontakt), beobachten ein paar Stunden lang Conversion und Challenge-Rate und weiten dann aus. Es gibt kein Minimum und keinen Vertrag, daher ist Canarying kostenlos.

Häufige Fragen

Muss ich alle Formulare auf einmal migrieren?

Nein. Die beiden Systeme koexistieren auf derselben Site – sie teilen weder Status noch Cookies. Migrieren Sie ein Formular nach dem anderen.

Was ist mit den Risk-Scores von reCAPTCHA Enterprise? Werden Scores übertragen?

Scores werden nicht übertragen (sie sind anbieterintern), aber CaptchaLa liefert in der Verify-Antwort einen eigenen Risk-Score. Wertebereich und Entscheidungslogik sind dokumentiert; Teams bilden ihren bestehenden Score-Schwellenwert (z. B. 0,5) typischerweise innerhalb einer Stunde auf unseren ab.

Brechen meine Google Site Verification oder andere Google-Integrationen?

Nein. reCAPTCHA ist von Search Console / Site Verification / Analytics getrennt. Das Entfernen des reCAPTCHA-Tags hat keine Auswirkungen auf andere Google-Dienste.

Gibt es ein Migrationsskript für Sites mit vielen eingebetteten reCAPTCHA-Tags?

Wir liefern keines (das Suchen-und-Ersetzen ist ein Regex pro Repo, und das Templating jeder Codebasis unterscheidet sich). Das 10-zeilige Shell-Snippet, das die meisten Teams nutzen, steht in den Docs.