Warum keine CAPTCHA-Rätsel
CAPTCHAs tauschen Spam-Reduktion gegen Reibung: Sie verlangsamen oder blockieren echte Besucher, sie funktionieren nicht mit Screenreadern und anderer assistiver Technologie, und zunehmend stoppen sie nicht einmal mehr Bots, moderne Lösungsdienste überwinden die meisten davon günstig. Außerdem blockieren sie genau die Zielgruppe, für die Formpaste gebaut ist: Ein KI-Agent, der legitim im Auftrag eines Menschen ein Formular absendet, sollte kein Rätsel lösen müssen, das dafür entworfen wurde, ihn als nicht-menschlich zu erkennen. Stattdessen wird jede Einsendung durch günstige Inline-Heuristiken bewertet, kein externer API-Aufruf, keine Kosten pro Einsendung, keine sichtbare Herausforderung. Die vollständige Mechanik findest du unter Spam-Filterung; in dieser Anleitung geht es darum, sie gut zu nutzen.1. Den Honeypot verdrahten (botcheck)
Das Wertvollste, was du tun kannst, ist, das Feld botcheck einzubinden und es korrekt
zu verstecken:
- Verstecke es mit CSS (
display:none), nicht mittype="hidden". Unraffinierte Bots, die gezielttype="hidden"-Felder überspringen, füllen trotzdem eintext-Input aus, das lediglich unsichtbar gestylt ist, genau das fängt sie. - Entferne es nicht “weil ja nichts drin steht”. Ein leeres
botcheck-Feld, das zusammen mit echten Daten erfolgreich abgesendet wird, ist genau das, was bei einem menschlichen Besucher passieren soll, es ist unauffällig und kostenlos. Es zählt nur, wenn etwas anderes, ein Bot oder eine Browser-Erweiterung, die jedes auffindbare Feld automatisch ausfüllt, es befüllt.
botcheck bereits verdrahtet; falls du dein Formular stattdessen selbst gebaut hast,
füge es hinzu.
2. Das Timing-Feld hinzufügen (_ts)
Ein optionales Feld _ts trägt den Zeitstempel, zu dem dein Formular gerendert wurde.
Eine Einsendung, die unplausibel schnell eintrifft, schneller, als ein Mensch das
Formular plausibel hätte lesen und eine Antwort tippen können, wird als verdächtig
bewertet. Das ist ein günstiger Weg, um skriptgesteuerte Einsendungen zu erkennen, die
das Rendern komplett überspringen und einfach einen Payload per POST senden.
Date.now()
in JavaScript, oder die Server-Render-Zeit bei einer statischen Seite).
3. Den Rest automatisch laufen lassen
Sobaldaccess_key verdrahtet ist, brauchen die übrigen Heuristiken keine Einrichtung
und laufen bei jeder Einsendung:
- Link-Dichte, eine Nachricht voller mehrerer URLs wird als wahrscheinlicher Spam eingestuft.
- Rate Limiting, wiederholte Einsendungen aus derselben Quelle in einem kurzen Zeitfenster werden gedrosselt, unabhängig vom Inhalt.
- Erkennung von Wegwerf-/Duplikat-E-Mails, Einsendungen von Anbietern für
Wegwerf-E-Mail-Adressen sowie nahezu identische Wiederholungseinsendungen werden
markiert. Falls dein Anwendungsfall legitim Wegwerf-Adressen erwartet, aktiviere
allow_disposable_emailfür dieses Formular unter Domain-Zulassungsliste, statt gegen die Standardeinstellung anzukämpfen.
4. Die Domain-Zulassungsliste absichern
access_key ist dafür gedacht, im öffentlichen Seitenquelltext zu stehen, es ist kein
Geheimnis, und CORS auf /submit ist absichtlich permissiv, damit jede Origin POSTen
kann. Die Liste der erlaubten Domains an jedem Formular ist die eigentliche Grenze,
die verhindert, dass jemand deinen Schlüssel kopiert und fremden Traffic (einschließlich
Spam) in deinen Posteingang leitet. Eine leere Zulassungsliste akzeptiert jede Origin,
das ist während der Einrichtung in Ordnung, sollte aber auf deine echte(n) Domain(s)
eingeschränkt werden, sobald das Formular live ist. Siehe
Domain-Zulassungsliste.
5. Quarantäne als Prüfwarteschlange behandeln, nicht als schwarzes Loch
Nichts, was mit einem gültigenaccess_key ankommt, wird stillschweigend verworfen.
Alles, was als verdächtig eingestuft wird, landet im Spam-Tab des Formulars im
Dashboard statt in deinem Posteingang, prüfe ihn regelmäßig
auf False Positives. Auf Free ist die Quarantäne nur lesbar, eine legitime Einsendung,
die fälschlich markiert wurde, erfordert, dass der Besucher erneut absendet, sobald du
behoben hast, was die Heuristik ausgelöst hat (meist ein Problem mit der
botcheck-Verdrahtung oder eine zu strenge Einstellung für Wegwerf-E-Mails).
Pro fügt eine Ein-Klick-”Kein Spam”-Rettung hinzu, die
sie direkt erneut zustellt.
Was das nicht leistet
Heuristische Bewertung reduziert das Spam-Volumen, sie garantiert kein Nullergebnis. Ein entschlossener, gut finanzierter Angreifer, der dein Formular in einem echten Headless-Browser rendert, eine plausible Zeit wartet und jeweils eine Einsendung von einer Residential-IP sendet, kann trotzdem durchkommen, genauso wie er ein CAPTCHA überwinden könnte. Das Ziel ist, die Kosten für Formular-Spam deutlich über die Kosten der Alternative zu heben (ein echter Posteingang ganz ohne Filterung), nicht eine unüberwindbare Mauer zu bauen.Spam-Filterung
Was geprüft wird und wie die Bewertung funktioniert.
Quarantäne
Wohin markierte Einsendungen gehen und wie du sie prüfst.
Domain-Zulassungsliste
Die echte Sicherheitsgrenze hinter einem öffentlichen access_key.
Fehlerreferenz
Einschließlich
rate_limited und weiterer spam-naher Codes.