So verbessern Sie Ihren reCAPTCHA-v3-Score: Sechs Fixes, die funktionieren

Sie können keinen reCAPTCHA-v3-Score festlegen. Google vergibt ihn pro Anfrage, und nichts in Ihrem Code ändert ihn direkt. Was Sie ändern können, ist das, was ihn beeinflusst: wie Sie Actions benennen, wann Sie das Token anfordern, auf wie viel Ihrer Website reCAPTCHA überhaupt läuft und was Ihr Backend mit dem Ergebnis macht. Beheben Sie das, und die Verteilung verschiebt sich.
Sechs Änderungen, geordnet danach, wie viel sie typischerweise bringen. Messen Sie zuerst, denn die Hälfte der Websites, die glauben, ein Scoring-Problem zu haben, haben ein Schwellenwert-Problem.
Was der Score tatsächlich bedeutet
v3 gibt bei jeder Verifizierung eine Zahl zwischen 0.0 und 1.0 zurück. Googles Formulierung: 1.0 ist sehr wahrscheinlich eine gute Interaktion, 0.0 ist sehr wahrscheinlich ein Bot. Es gibt keine Checkbox und kein Rätsel, die Zahl ist also das gesamte Signal.
Daraus folgen zwei Dinge, und beide sind wichtig:
- Der Score ist pro Anfrage und pro Action, nicht pro Nutzer. Derselbe Besucher kann auf Ihrer Startseite 0,9 und beim Checkout 0,3 erreichen.
- Googles vorgeschlagener Anfangsschwellenwert ist 0.5. Das ist ein Standardwert, von dem man wegjustieren sollte, kein Ziel, das man treffen muss.
Wenn Ihnen’neu ist, wie sich v3 von der Checkbox-Version unterscheidet, unsere Erklärung zu wie reCAPTCHA funktioniert behandelt die Mechanik.
Messen Sie, bevor Sie etwas ändern
Die reCAPTCHA-Admin-Konsole zeigt eine Score-Verteilung für Ihre Website und eine Aufschlüsselung Ihrer zehn wichtigsten Actions. Sehen Sie sich das an, bevor Sie den Code anfassen. Sie suchen nach einer von drei Formen:
- Alles auf 0,9, und Sie blockieren immer noch Menschen. Ihr Schwellenwert oder Ihre Backend-Logik ist das Problem, nicht der Score.
- Eine breite Streuung mit einem Anstieg am unteren Ende. Normal. Passen Sie den Schwellenwert pro Action an.
- Alles bei 0.1 bis 0.3. Etwas Strukturelles stimmt nicht. Normalerweise der Token, nicht der Traffic.
Google warnt außerdem, dass Scores in der Staging-Umgebung oder direkt nach der Installation von v3 von denen in der Produktion abweichen, weil das Modell noch keine Historie für die Website hat. Geben Sie ihm eine Woche echten Traffic, bevor Sie Schlüsse ziehen. Um eine einzelne Anfrage isoliert zu überprüfen, bietet unser Live-reCAPTCHA-v3-Testseite gibt den rohen Score für eine Lösung zurück.
Fix 1: benennen Sie Ihre Actions, und benennen Sie sie korrekt
Das ist der größte Einzelgewinn, und er wird routinemäßig übersprungen. Google bewertet jede Action separat und nutzt die eigene Historie der Action als Kontext. Eine generische Action für die gesamte Website bedeutet eine vermischte Historie, und jede Seite erbt das Schlechteste davon.
// One action per meaningful event. Not one for the whole site.
grecaptcha.ready(function () {
grecaptcha.execute("YOUR_SITEKEY", { action: "login" })
.then(function (token) {
document.getElementById("recaptcha-token").value = token;
});
});Regeln, die Google durchsetzt: Actions dürfen nur alphanumerische Zeichen, Schrägstriche und Unterstriche enthalten und sie dürfen nicht benutzerspezifisch sein. Also checkout/payment ist in Ordnung, checkout_user_8842 ist es nicht. Eine nutzerspezifische action zersplittert die Historie in Tausende von Buckets ohne Daten in irgendeinem davon, was schlimmer ist, als actions gar nicht zu benennen.
Fix 2: reCAPTCHA auf mehr als nur dem Formular ausführen
v3 bewertet Verhalten, und Verhalten braucht mehr als einen Datenpunkt. Wenn das Skript nur auf Ihrer Login-Seite geladen wird, sieht Google einen Besucher, der aus dem Nichts an einem Formular auftaucht und absendet, und genau so sieht ein Bot aus.
Googles eigene Empfehlung ist, v3 auf der gesamten Website zu laden, auch auf Seiten ohne Formular. Auf diesen Seiten müssen Sie nicht verifizieren. Allein die Ausführung des Skripts gibt dem Modell etwas an die Hand, bis der Besucher die Aktion erreicht, auf die es Ihnen ankommt.
Das ist auch die Korrektur, die Menschen versehentlich rückgängig machen. Wenn Sie das Skript in eine Bedingung verschieben, die nur auf der Checkout-Route auslöst, sinken Ihre Scores innerhalb von Tagen.
Lösung 3: Holen Sie das Token beim Absenden, nicht beim Laden der Seite
reCAPTCHA-v3-Tokens laufen zwei Minuten nach ihrer’Ausstellung ab. Generieren Sie eines in ready() beim Laden der Seite, und jeder Besucher, der Ihr Formular länger als das liest, übermittelt einen toten Token. Je nachdem, wie Ihr Backend den Fehler behandelt, wird das als schlechte Bewertung oder als harte Ablehnung gelesen.
// Solve on submit so the token is always fresh.
form.addEventListener("submit", function (e) {
e.preventDefault();
grecaptcha.execute("YOUR_SITEKEY", { action: "login" })
.then(function (token) {
tokenField.value = token;
form.submit();
});
});Bei langen Formularen, mehrstufigen Checkouts und allem mit Datei-Upload wirkt sich das am stärksten aus.
Fix 4: serverseitig verifizieren und auch die Action prüfen
Das Token ist wertlos, bis Ihr Backend es einlöst. Dieser Austausch liefert den Score, die Action und einen Hostnamen zurück, und Sie sollten alle drei prüfen.
# Exchange the token for the score. Server side only.
curl -X POST https://www.google.com/recaptcha/api/siteverify \
-d secret=YOUR_SECRET_KEY \
-d response=THE_TOKEN_FROM_THE_PAGE
# {"success":true,"score":0.9,"action":"login","hostname":"example.com"}Wenn Sie nur prüfen success, verwenden Sie überhaupt kein v3. success bedeutet, dass der Token geparst wurde, nicht dass der Besucher menschlich wirkte. Und wenn Sie nicht vergleichen action gegen das, was dieser Endpunkt erwartet hat, funktioniert ein Token, das auf Ihrem geringwertigen Newsletter-Formular erzeugt wurde, problemlos an Ihrem Login-Endpunkt.
Fix 5: Legen Sie einen Schwellenwert pro action fest, nicht einen für die Website
Ein Checkout und eine Newsletter-Anmeldung sollten sich keinen Schwellenwert teilen. Sobald Sie eine Woche an Daten pro Action haben, setzen Sie jeden Wert dorthin, wo Ihr Traffic tatsächlich liegt.
| Action-Typ | Vernünftiger Ausgangspunkt | Was darunter zu tun ist |
|---|---|---|
| Newsletter, Suche, Seitenaufruf | 0.3 | Durchlassen, den Score loggen |
| Login, Kommentar | 0.5 | Fügen Sie einen zweiten Faktor oder ein v2-Kontrollkästchen hinzu |
| Checkout, Passwort-Reset | 0.7 | Zu einer manuellen Herausforderung hochstufen |
Beachten Sie, dass keine dieser Zeilen „blockieren“ sagt. Hartes Blockieren bei niedriger Bewertung ist der Grund, warum v3-Bereitstellungen echte Kunden in Unternehmens-VPNs und Datenschutzbrowsern aussperren. Verschärfen Sie stattdessen die Herausforderung.
Fix 6: Schließen Sie die üblichen Score-Killer aus
Wenn alle strukturellen Korrekturen vorhanden sind und die Scores weiterhin niedrig sind, arbeiten Sie diese durch:
| Ursache | Warum es niedrig bewertet |
|---|---|
| Zwei reCAPTCHA-Skripte auf einer Seite | Der zweite Ladevorgang überschreibt den ersten, und der Token bindet sich an den falschen Kontext |
| Geteilte oder Rechenzentrums-IPs | Büro-NAT, VPNs und Cloud-Egress tragen alle die Historie anderer Leute’s |
| Aggressive Datenschutz-Erweiterungen | Blockierte Cookies und blockierter Speicher lassen dem Modell nichts zum Auslesen |
| iFrame- oder eingebettete Formulare | Cross-Origin-Kontext schwächt das Signal |
| Sitekey- und Domain-Nichtübereinstimmung | Prüfen Sie die hostname Feld in der verify-Antwort |
Eine Sache, die nicht auf dieser Liste: das Ausblenden des Badges. Das ist eine Frage von CSS und Attribution und hat keine Auswirkung auf das Scoring. Den regelkonformen Weg dafür haben wir behandelt in das reCAPTCHA-v3-Badge ausblenden.
Das Problem, das Tuning nicht lösen wird
Wenn der Traffic automatisiert ist, erhält er einen niedrigen Score, weil genau das der Grund ist, für den v3 entwickelt wurde. Keine noch so gute Action-Benennung behebt einen Headless-Browser. Zum Testen Ihrer eigenen Website oder für Automatisierung, die Sie ausführen dürfen, erhalten Sie einen Token von einem Löser statt von der Seite:
# pip install capskip
from capskip import CapSkip
solver = CapSkip(host="127.0.0.1", port=8080)
result = solver.recaptcha(
sitekey="YOUR_SITEKEY",
url="https://example.com/page-with-recaptcha",
version="v3",
action="login", # must match the page
)
print(result["code"]) # token, inject it and submitBeachten Sie den action erneut. Es ist auf dieser Seite genauso wichtig wie auf Ihrer, und zwar aus genau demselben Grund: Das Backend vergleicht ihn.
Was Sie nicht tun können, ist einen Score vorzugeben. Es gibt keinen Mindest-Score-Parameter in der Lösungsanfrage. Die Zahl ist Googles Entscheidung, getroffen bei der Verifizierung Ihres Tokens – ein Löser übergibt Ihnen also einen Token und nichts weiter.
Häufig gestellte Fragen
Warum ist mein reCAPTCHA-v3-Score immer 0.1?
Ein konstanter Wert von 0.1 über den gesamten Traffic ist fast nie ein Verhaltensproblem. Prüfen Sie auf ein doppeltes Script-Tag, ein veraltetes Token, das mehr als zwei Minuten vor der Übermittlung ausgestellt wurde, oder einen Sitekey, der für eine andere Domain registriert ist. Der hostname -Feld in der Verify-Antwort klärt das letzte sofort.
Wie lange dauert es, bis Score-Änderungen sichtbar werden?
Mehrere Tage. Das Modell nutzt eine Historie pro Website und pro Action, sodass eine neue Action ohne Kontext startet und sich einpendelt, je mehr Traffic sich ansammelt. Beurteilen Sie eine Änderung nicht anhand der Daten eines einzigen Nachmittags.
Macht ein höherer Score-Schwellenwert meine Website sicherer?
Nur bis zu einem gewissen Punkt, und es kostet Sie echte Nutzer. Jeden Endpunkt auf 0,9 anzuheben blockiert Menschen mit geteilten IPs und Datenschutz-Browsern lange bevor es einen entschlossenen Angreifer aufhält. Legen Sie den Schwellenwert pro Aktion fest und verschärfen Sie die Challenge, statt direkt abzulehnen.
Kann ich den Score sehen, ohne Backend-Code zu schreiben?
Ja. Die Admin-Konsole zeigt die Verteilung für Ihre eigene Website, und unsere v3-Demoseite gibt den Rohscore für eine einzelne Lösung zurück, sodass Sie eine Anfrage mit dem vergleichen können, was Ihr eigener Endpoint meldet.
Zusammenfassung
Benennen Sie eine Action pro Event, laden Sie v3 auf der gesamten Website, erzeugen Sie das Token zum Zeitpunkt der Übermittlung, verifizieren Sie serverseitig und vergleichen Sie die Action, und legen Sie dann einen Schwellenwert pro Endpoint fest statt einer einzigen globalen Grenze. Prüfen Sie die Admin-Konsole eine Woche später, nicht am selben Tag.
Für die Funktionsweise des v3-Scorings und die dazugehörigen Optionen siehe reCAPTCHA v3-Lösen, und Googles eigene v3-Dokumentation ist die maßgebliche Quelle für Schwellenwerte und Action-Benennung. Wenn Sie Ihre eigenen Formulare gegen einen niedrigen Score testen, ist CapSkip ein Captcha-Löser das lokal läuft, sodass Sie den ganzen Tag Tokens generieren können, ohne Rechnung pro Lösung.
