Wie lade ich ReCaptcha mit JavaScript neu?

Lesezeit: 4 Minuten

Ich habe ein Anmeldeformular mit AJAX, sodass ich das Recaptcha-Bild jedes Mal aktualisieren möchte, wenn ein Fehler auftritt (dh der Benutzername wird bereits verwendet).

Ich suche einen Code, der mit ReCaptcha kompatibel ist, um ihn mit JavaScript neu zu laden.

  • Mach dir keine Sorgen. Warum das CAPTCHA ändern, wenn der Benutzername vergeben ist?

    – SLaks

    30. Juli 2010 um 12:25 Uhr

  • @SLaks: wahrscheinlich, weil er zuerst Captcha überprüft und dann den Benutzer überprüft – und sobald Captcha verwendet wird, ist es nicht mehr gültig. Wenn Sie dies umgekehrt tun, kann der böswillige Benutzer den Server leicht beschädigen und die Liste aller Benutzer mit Brute Force abrufen, ohne mit Captcha belästigt zu werden.

    – Tomasz Nurkiewicz

    11. Oktober 2011 um 9:50 Uhr

  • @TomaszNurkiewicz UPDATE: Der böswillige Benutzer kann dasselbe Re-Captcha nicht mehr als einmal zur Validierung einreichen. Also nein, Bruteforce ist hier nicht möglich. Der Grund für die Aktualisierung des Captchas besteht darin, dass der Benutzer es einfach erneut eingeben kann.

    – Tonysepie

    14. September 2017 um 16:11 Uhr

  • Ich glaube, ein erfahrener Angreifer könnte Timing-Angriffe ausnutzen, um herauszufinden, welche Daten falsch sind, je nachdem, wo sich die Bot-Validierung befindet. Ich ziehe es vor, meine als erste Prüfung zu behalten und alles sofort abzulehnen, wenn sie fehlschlagen. Dies hilft auch, die Last auf meinem Server zu reduzieren, sodass ich keine DB-Abfragen durchführe, wenn sie sowieso abgelehnt werden

    – Steve Byrne

    16. Oktober 2018 um 4:33 Uhr

Benutzer-Avatar
ahmet alp balkan

Verwenden Sie für reCaptcha v2:

grecaptcha.reset();

Wenn Sie reCaptcha v1 verwenden (wahrscheinlich nicht):

Recaptcha.reload();

Dies reicht aus, wenn sich bereits ein geladenes Recaptcha auf dem befindet window.

(Aktualisiert basierend auf dem Kommentar von @SebiH unten.)

  • Für alle, die das neue reCAPTCHA verwenden: Die Zeile hat sich jetzt zu geändert grecaptcha.reset(); (Dokumentation)

    – SebiH

    6. Januar 2015 um 8:36 Uhr

  • Ich benutze das grecaptcha.reset(); für meine Reaktions-Apps, und es funktioniert perfekt

    – Yusan

    16. April 2016 um 16:41 Uhr

  • Wenn Sie nicht sicher sind, ob grecaptcha geladen ist, verwenden Sie if (window.grecaptcha) grecaptcha.reset();

    – fred727

    19. Juli 2016 um 19:39 Uhr

  • Obwohl dadurch das Captcha neu geladen wird, scheint der Feldwert für die Captcha-Antwort nicht entfernt worden zu sein, sodass mein Formular gültig bleibt.

    – Damian Grün

    28. September 2016 um 12:51 Uhr

Wenn Sie Version 1 verwenden

Recaptcha.reload();

Wenn Sie Version 2 verwenden

grecaptcha.reset();

  • Die akzeptierte Antwort kopiert und 3 Jahre später erneut veröffentlicht. Urg.

    – Paul Danelli

    26. Februar 2020 um 14:03 Uhr

  • @PRWhitehead Bitte sehen Sie sich den Bearbeitungsverlauf an. Übrigens, danke für die Ablehnung.

    – Dasun

    28. Februar 2020 um 12:39 Uhr

  • Ich habe es getan, Sie haben Ihre nicht bearbeitet und Sie haben sie erstmals 3 Monate nach der Aktualisierung der akzeptierten Antwort hinzugefügt, um eine Änderung an der API widerzuspiegeln, die sich auf die Relevanz der ursprünglichen Antwort und Jahre nach ihrer ersten Hinzufügung auswirkt. Ich habe es abgelehnt, weil dies die akzeptierte Antwort nützlicher ist.

    – Paul Danelli

    29. Februar 2020 um 18:08 Uhr

  • Ich habe diese Antwort hinzugefügt, weil ich vor demselben Problem stand. Obwohl die akzeptierte Antwort zu diesem Zeitpunkt die richtige Antwort widerspiegelte, war sie nicht klar genug. Zumindest für mich habe ich mich deshalb entschieden, als neue Antwort mit klarer Trennung hinzuzufügen (in der akzeptierten Antwort wurden die Unterschiede zu den Versionen nicht vermerkt).

    – Dasun

    1. März 2020 um 10:50 Uhr

Benutzer-Avatar
abhiagNitk

Wichtig: Version 1.0 der reCAPTCHA-API wird nicht mehr unterstützt. Bitte aktualisieren Sie auf Version 2.0.

Sie können verwenden grecaptcha.reset(); um das Captcha zurückzusetzen.

Quelle: https://developers.google.com/recaptcha/docs/display#js_api

grecaptcha.reset(opt_widget_id)

Setzt das reCAPTCHA-Widget zurück. Eine optionale Widget-ID kann übergeben werden, andernfalls setzt die Funktion das erste erstellte Widget zurück. (von der Google-Webseite)

Oder Sie simulieren einfach einen Klick auf den Refresh-Button

// If recaptcha object exists, refresh it
    if (typeof Recaptcha != "undefined") {
      jQuery('#recaptcha_reload').click();
    }

  • Aus irgendeinem Grund, Recaptcha und grecaptcha sind beide auf meiner Seite undefiniert. Das hat bei mir funktioniert, mit einer kleinen Modifikation: if( $("#recaptcha_reload").length > 0 ){ ....

    – Nate-Bit Int

    7. Januar 2015 um 23:46 Uhr

  • Ich habe das verwendet, um zu wissen, wann die Iteration eines Arrays beendet ist, ohne seine Elemente zu zählen.

    – m3nda

    16. Januar 2015 um 22:20 Uhr

Benutzer-Avatar
Tim

Versuche dies

<script type="text/javascript" src="https://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
<script type="text/javascript">
          function showRecaptcha() {
            Recaptcha.create("YOURPUBLICKEY", 'captchadiv', {
              theme: 'red',
              callback: Recaptcha.focus_response_field
            });
          }
 </script>

<div id="captchadiv"></div>

Wenn Sie showRecaptcha aufrufen, wird das Captchadiv mit einer neuen Recaptcha-Instanz gefüllt.

  • Aus irgendeinem Grund, Recaptcha und grecaptcha sind beide auf meiner Seite undefiniert. Das hat bei mir funktioniert, mit einer kleinen Modifikation: if( $("#recaptcha_reload").length > 0 ){ ....

    – Nate-Bit Int

    7. Januar 2015 um 23:46 Uhr

  • Ich habe das verwendet, um zu wissen, wann die Iteration eines Arrays beendet ist, ohne seine Elemente zu zählen.

    – m3nda

    16. Januar 2015 um 22:20 Uhr

Benutzer-Avatar
Marcel C.

Für AngularJS-Benutzer:

$window.grecaptcha.reset();

  • In meinem Fall ohne $ – window.grecaptcha.reset();

    – Tonysepie

    14. September 2017 um 16:09 Uhr

1297960cookie-checkWie lade ich ReCaptcha mit JavaScript neu?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy