Verwenden von reCAPTCHA auf localhost

286

Ich entwickle eine Website mit PHP und möchte in einer der Sitzungen eine menschliche Überprüfung durchführen. Für die Entwicklung führe ich das System zunächst lokal aus und wenn es fertig ist, werde ich es in einer bestimmten Domäne installieren.

Auf der reCAPTCHA-Website wird angegeben, dass das Plugin nur für die angegebene Domain (und Subdomains) funktioniert.

Meine Frage ist: Gibt es eine Möglichkeit, das reCAPTCHA-Plugin auf einem lokalen Host zu verwenden?

rlc
quelle
Löschen Sie Cookies, wenn Sie localhost nachträglich hinzugefügt haben.
Mike Flynn
3
in der Liste der Domain geben Sie einfachlocalhost
csandreas1

Antworten:

356

Aktualisieren

Die ursprüngliche Antwort ist nicht mehr korrekt. Im Entwicklerhandbuch heißt es nun:

"Wenn Sie" localhost "für die Entwicklung verwenden möchten, müssen Sie es der Liste der Domänen hinzufügen."

Dies funktioniert nur, wenn Sie mit 127.0.0.1/...anstatt auf localhost zugreifen localhost/....

Die ursprüngliche Antwort bleibt unten erhalten.


Laut dem reCAPTCHA-Entwicklerhandbuch :

"localhost-Domains werden standardmäßig nicht mehr unterstützt. Wenn Sie sie weiterhin für die Entwicklung unterstützen möchten, können Sie sie zur Liste der unterstützten Domains für Ihren Site-Schlüssel hinzufügen. Gehen Sie zur Administratorkonsole, um Ihre Liste der unterstützten Domains zu aktualisieren. Wir empfehlen dies Verwenden Sie einen separaten Schlüssel für Entwicklung und Produktion und lassen Sie localhost nicht auf Ihrem Produktionsstandortschlüssel zu. "

Mit anderen Worten, verwenden Sie einfach denselben Schlüssel.

Nathan Osman
quelle
8
Ich überprüfte, ob die Wörter auf dieser Seite waren. Es war weg! Im Jahr 2015 finden Sie das obige Zitat @ developer.google.com/recaptcha/docs/start
Joshua Plicque
11
Diese Antwort ist korrekt, aber es gibt eine wichtige Einschränkung, die mich überrascht hat: Bei der Migration von reCAPTCHA v1 auf v2 müssen die API-Schlüssel neu generiert werden, damit diese Nachricht verschwindet. Wenn Sie wie ich sind und Testdomänen in Ihrer lokalen / Entwicklungsumgebung einrichten, indem Sie Einträge in die "Hosts" -Datei des Betriebssystems einfügen, müssen Sie diese "gefälschten" Domänen zu den zulässigen Domänen für hinzufügen das betreffende reCAPTCHA-Konto, um den Fehler "FEHLER: Ungültige Domäne für Standortschlüssel" zu beheben.
Ben Johnson
5
Wenn Ihr localhost nicht "localhost" heißt, funktioniert es nicht.
Hexodus
12
Google scheint die Möglichkeit zum Testen auf localhost entfernt zu haben.
IrishChieftain
4
Während localhost bei mir nicht funktionierte, konnte ich sowohl 127.0.0.1 als auch eine * .xip.io-Adresse verwenden.
Davidbates
104

Bitte beachten Sie, dass ReCaptcha ab 2016 localhost nicht mehr naiv unterstützt . Aus den FAQ:

localhost-Domänen werden standardmäßig nicht mehr unterstützt. Wenn Sie sie weiterhin für die Entwicklung unterstützen möchten, können Sie sie zur Liste der unterstützten Domänen für Ihren Site-Schlüssel hinzufügen. Wechseln Sie zur Administratorkonsole, um Ihre Liste der unterstützten Domänen zu aktualisieren. Wir empfehlen, einen separaten Schlüssel für Entwicklung und Produktion zu verwenden und localhost nicht auf Ihrem Produktionsstandortschlüssel zuzulassen.

Fügen Sie einfach localhostIhrer Liste der Domains für Ihre Website hinzu, und Sie werden gut.

CC Inc.
quelle
12
Ich habe hinzugefügt localhost, erhalte aber immer noch die Fehlermeldung "Localhost ist nicht die Liste der unterstützten Domänen für diesen Site-Schlüssel."
aadi1295
6
@ArbazAbid Möglicherweise müssen Sie eine Stunde oder so warten, bis Google ihr System aktualisiert ...
CC Inc
1
Wenn Sie viele Projekte haben und die Windows-Hosts-Datei und VirtualHosts einrichten, z. B. in WAMP, finden Sie diese hier: C: \ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.conf. Registrieren Sie dann Ihre Projekt Servername. Getestet und funktioniert gut.
Jeffz
@ Jeffz Die Hosts-Datei ist nicht Windows-spezifisch - dies ist ein guter allgemeiner Rat.
Nathan Hornby
79

Das hat bei mir funktioniert:

"Mit den folgenden Testschlüsseln erhalten Sie immer kein CAPTCHA und alle Überprüfungsanforderungen werden bestanden.

Site-Schlüssel: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

Geheimer Schlüssel: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Das reCAPTCHA-Widget zeigt eine Warnmeldung an, die besagt, dass es nur zu Testzwecken dient. Bitte verwenden Sie diese Schlüssel nicht für Ihren Produktionsverkehr. "

Auszug aus hier: https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do

BR!

Pablo
quelle
1
großartig! Danke dafür.
Sam
1
Wenn dies nicht mehr funktioniert, wechsle ich zur Automattic-Lösung. Ihre Lösung hier ist das einzige, was mich davon abhält, diese nervige Technologie fallen zu lassen.
PJ Brunet
1
Dies scheint die "richtige Antwort" zu sein, da dadurch Ihre Entwicklungsumgebung von Ihrer Produktumgebung unterschieden wird.
ChronoFish
67

Es ist so einfach:

  1. Gehen Sie zu Ihrem Google ReCaptcha-Administrationsbereich
  2. Fügen Sie localhost& 127.0.0.1zu Domains einer neuen Site wie im folgenden Bild hinzu.

Geben Sie hier die Bildbeschreibung ein


Aktualisieren:

Wenn Ihre Frage ist , wie setzen reCaptchafür die Verwendung in localhost in Google - Website, dann schrieb ich war es oben , aber wenn Sie neugierig sind , dass , wie Sie verwenden , können reCAPTCHAauf beiden localhost und website hostdurch minimal - Codes in Ihrem Controller und verhindert , dass einige Codes wie ConfigurationManager.AppSettings["ReCaptcha:SiteKey"]in es dann Ich helfe Ihnen mit dieser zusätzlichen Beschreibung und den Codes in meiner Antwort.

Mögen Sie die folgenden GET- und POST-Aktionen?

Es unterstützt reCaptcha und benötigt keine weiteren Codes für die Behandlung von reCaptcha.

[HttpGet]
[Recaptcha]
public ActionResult Register()
{
    // Your codes in GET action
}

[HttpPost]
[Recaptcha]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterViewModel model, string reCaptcha_SecretKey){
   // Your codes in POST action
   if (!ModelState.IsValid || !ReCaptcha.Validate(reCaptcha_SecretKey))
   {
       // Your codes
   }
   // Your codes
}

In Ansicht: ( Referenz )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

@if (ViewBag.RecaptchaLastErrors != null)
{
    <div>Oops! Invalid reCAPTCHA =(</div>
}

Um es zu benutzen

A) Fügen Sie ActionFilterIhrem Webprojekt Folgendes hinzu :

public class RecaptchaAttribute : FilterAttribute, IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var setting_Key = filterContext.HttpContext.Request.IsLocal ? "ReCaptcha_Local" : "ReCaptcha";
        filterContext.ActionParameters["ReCaptcha_SecretKey"] = ConfigurationManager.AppSettings[$"{setting_Key}:SecretKey"];
    }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var setting_Key = filterContext.HttpContext.Request.IsLocal ? "ReCaptcha_Local" : "ReCaptcha";
        filterContext.Controller.ViewBag.Recaptcha = ReCaptcha.GetHtml(publicKey: ConfigurationManager.AppSettings[$"{setting_Key}:SiteKey"]);
        filterContext.Controller.ViewBag.publicKey = ConfigurationManager.AppSettings[$"{setting_Key}:SiteKey"];
    }
}

B) Fügen Sie die reCaptchaEinstellungsschlüssel für beide hinzu localhostund websitemögen Sie es in Ihrer webconfigDatei:

<appSettings>

    <!-- RECAPTCHA SETTING KEYS FOR LOCALHOST -->
    <add key="ReCaptcha_Local:SiteKey" value="[Localhost SiteKey]" />
    <add key="ReCaptcha_Local:SecretKey" value="[Localhost SecretKey]" />
    <!-- RECAPTCHA SETTING KEYS FOR WEBSITE -->
    <!--<add key="ReCaptcha:SiteKey" value="[Webite SiteKey]" />
    <add key="ReCaptcha:SecretKey" value="[Webite SecretKey]" />-->

    <!-- OTHER SETTING KEYS OF YOUR PROJECT -->

</appSettings>

Hinweis: Auf diese Weise mussten Sie weder reCaptcha_SecretKeyParameter in der Post-Aktion noch ViewBagmanuell für reCaptcha in Ihren Aktionen und Ansichten festlegen. Alle Parameter werden zur Laufzeit automatisch mit den entsprechenden Werten gefüllt, je nachdem, ob Sie das Projekt auf dem lokalen Host oder auf der Website ausgeführt haben .😉

RAM
quelle
16

Wenn Sie Domains in Google Recaptcha hinzufügen

Neue Domain hinzufügen: Localhost nicht localhost

"L" ist Großbuchstabe

Viel Glück

Yoni Ayalon
quelle
8

Google hat kürzlich geändert, dass localhost standardmäßig nicht mehr zulässig ist. (wie von @Artur Cesar De Melo angesprochen) Dies ist unter ihren FAQs:

Ich erhalte die Fehlermeldung "Localhost ist nicht in der Liste der unterstützten Domänen enthalten". Das hat vorher funktioniert, was soll ich tun?

localhost-Domänen werden standardmäßig nicht mehr unterstützt. Wenn Sie sie weiterhin für die Entwicklung unterstützen möchten, können Sie sie zur Liste der unterstützten Domänen für Ihren Site-Schlüssel hinzufügen. Wechseln Sie zur Administratorkonsole, um Ihre Liste der unterstützten Domänen zu aktualisieren. Wir empfehlen, einen separaten Schlüssel für Entwicklung und Produktion zu verwenden und localhost nicht auf Ihrem Produktionsstandortschlüssel zuzulassen.

1: Erstellen Sie einen separaten Schlüssel für Ihre Entwicklungsumgebung

2: Fügen Sie 127.0.0.1 zur Liste der zulässigen Domänen hinzu

3: Speichern Sie die Änderungen und warten Sie bis zu 30 Minuten, bis die Änderungen wirksam werden

tony09uk
quelle
5

Per Google recaptcha Dokumentation

localhost-Domänen werden standardmäßig nicht mehr unterstützt. Wenn Sie sie weiterhin für die Entwicklung unterstützen möchten, können Sie sie zur Liste der unterstützten Domänen für Ihren Site-Schlüssel hinzufügen. Wechseln Sie zur Administratorkonsole, um Ihre Liste der unterstützten Domänen zu aktualisieren. Wir empfehlen, einen separaten Schlüssel für Entwicklung und Produktion zu verwenden und localhost nicht auf Ihrem Produktionsstandortschlüssel zuzulassen

Artur Cesar De Melo
quelle
5

Entfernen Sie den aktuellen REcaptcha-Schlüssel, registrieren Sie den neuen Schlüssel und legen Sie Ihre Schlüsseleinstellungen für Domänen fest: 127.0.0.1 localhost

Mykhailo
quelle
3

Recaptcha funktioniert nicht localhost/

Use `127.0.0.1/` instead of `localhost/`
alianjum0
quelle
Wie unterscheidet sich diese Antwort von der akzeptierten?
Smottt
1
Es ist eine einfachere Version der akzeptierten. Beide Antworten sind in der akzeptierten falsch. Zu 1) Sie müssen localhost nicht zur Liste der akzeptierten Domains hinzufügen. Für 2) Es funktioniert nicht mit localhost.
Alianjum0
2
  1. Registrieren Sie Ihre Website unter - https://www.google.com/recaptcha/admin
  2. Fügen Sie die Klasse js plugin 3.add und Ihren von Google bereitgestellten Site-Key hinzu Geben Sie hier die Bildbeschreibung ein
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>
Saquib Azam
quelle
1

Wenn Sie einen alten Schlüssel haben, sollten Sie Ihren API-Schlüssel neu erstellen. Beachten Sie auch die Proxies.

Soheil Novinfard
quelle
Was ist das Problem mit Proxies? Der Proxy muss die Kommunikation über die Google-API ermöglichen?
smoore4
1
@SQLDBA Entweder ist es nicht gut konfiguriert oder der neue Standort (IP) stammt aus Sanktionsländern. Dies kann zu Problemen führen.
Soheil Novinfard
1

Sie können "localhost" oder "127.0.0.1" schreiben, die URL muss jedoch identisch sein

Beispiel: Google Domains Add-> localhost URL => localhost / login.php

Beispiel: Google Domains Add-> 127.0.0.1 URL => 127.0.0.1/login.php

Mert Yılmaz
quelle
1

localhost funktioniert jetzt. Denken Sie jedoch daran, dass es nach dem Hinzufügen von localhost zur Liste der Domainnamen bis zu 30 Minuten dauert, bis es wirksam wird (gemäß dem Hilfetipp, der in der Liste der Domainnamen angezeigt wird).

Gautam Jain
quelle
0

Ja, dies ist eine ältere Frage, aber dies kann allen Benutzern helfen, die Probleme mit reCaptcha auf localhost haben. Google sagt zwar "Standardmäßig funktionieren alle Schlüssel auf 'localhost' (oder '127.0.0.1')", aber die tatsächliche Verwendung von reCaptcha auf localhost kann Probleme verursachen. In meinem Fall habe ich meine mit einem sicheren Token gelöst

Ich habe hier eine ARBEITSLÖSUNG für PHP gepostet

Hexodus
quelle
0

Ich habe kürzlich an der Erstellung einer Website mit recaptcha v2 gearbeitet und muss auf meinem lokalen Host eine Testautomatisierung durchführen. Ich habe keine IP oder Localhost zum Recaptcha Admin Portal hinzugefügt.

Befolgen Sie die folgenden Schritte

  1. Melden Sie sich an, um den Screenshot der Admin-Site erneut zu erfassen

  2. Suchen Sie die Schlüsseleinstellungen

  3. Klicken Sie auf Erweiterte Einstellungen

  4. Unter Domain Name Validierung , un-Check Überprüfen Sie die Herkunft der Lösungen reCAPTCHA Checkbox. Diese Option wird verwendet, um zu überprüfen, ob Anforderungen von einer der oben aufgeführten Domänen stammen.

    Beachten Sie, dass Sie bei Deaktivierung den Hostnamen auf Ihrem Server überprüfen müssen, wenn Sie eine Lösung überprüfen.


Ich habe einen neuen Schlüssel erstellt und diesen deaktiviert und diesen Schlüssel zum Testen in localhost verwendet.

Dies ist eine Beispielseite, die reCAPTCHA für Kommentare implementiert.

Cyberviral
quelle
0

Ich habe einen Fehler im Zusammenhang mit Recaptcha auf der Laravel-Website erhalten. Ich habe ihn mit einem Befehl behoben und mit der env-Datei und der obigen Antwort wird auch bei diesem Problem geholfen.

Überprüfen Sie zunächst die env-Datei (in Ihrem Fall die Datei mit dem Google Recaptcha-Schlüssel) auf den Google Recpatcha-Schlüssel.

Führen Sie den folgenden Befehl aus:

  1. PHP Artisan Konfiguration: klar
  2. PHP Artisan Cache: klar
  3. Komponist Dump-Autoload
  4. PHP Handwerker Ansicht: klar
  5. PHP Artisan Route: klar

    es wird dein Problem lösen

Divyansh Dixit
quelle
Hier geht es nicht um Probleme mit reCaptcha, um Caching-Probleme, sondern um die Verwendung in einer Entwicklungsumgebung (localhost-Domänen).
Wurzel