Utilizzo di reCAPTCHA su localhost


286

Sto sviluppando un sito Web utilizzando PHP e voglio effettuare una verifica umana in una delle sessioni. Per lo sviluppo, inizialmente eseguo il sistema localmente e quando sarà pronto, lo farò su un determinato dominio.

Nel sito web reCAPTCHA si dice che il plugin funzionerà solo nel dominio (e nei sottodomini) specificato.

La mia domanda è: esiste un modo per utilizzare il plug-in reCAPTCHA su un host locale?


Cancella i cookie se hai aggiunto localhost dopo il fatto.
Mike Flynn,

3
nell'elenco del dominio basta digitarelocalhost
csandreas1

Risposte:


357

Aggiornare

La risposta originale non è più corretta. La guida per gli sviluppatori ora afferma:

"Se desideri utilizzare" localhost "per lo sviluppo, devi aggiungerlo all'elenco dei domini."

Funzionerà solo se accedi a localhost usando 127.0.0.1/...anzichélocalhost/... .

La risposta originale è conservata di seguito.


Secondo la guida per gli sviluppatori di reCAPTCHA :

"I domini localhost non sono più supportati per impostazione predefinita. Se desideri continuare a supportarli per lo sviluppo, puoi aggiungerli all'elenco dei domini supportati per la chiave del tuo sito. Vai alla console di amministrazione per aggiornare l'elenco dei domini supportati. Ti consigliamo di utilizzare una chiave separata per lo sviluppo e la produzione e per non consentire localhost sulla chiave del sito di produzione. "

In altre parole, usa semplicemente la stessa chiave.


8
Ho controllato per confermare se le parole erano su quella pagina. Era andato! Nel 2015, puoi trovare la suddetta citazione @ developers.google.com/recaptcha/docs/start
Joshua Plicque

11
Questa risposta è accurata, ma c'è un avvertimento importante che mi ha sconcertato: quando eseguo la migrazione da reCAPTCHA v1 a v2, è necessario rigenerare le chiavi API affinché questo messaggio scompaia. Inoltre, e altrettanto importante, se sei come me e installi domini di prova nel tuo ambiente locale / di sviluppo inserendo voci nel file "hosts" del sistema operativo, dovrai aggiungere quei domini "falsi" ai domini consentiti per l'account reCAPTCHA in questione per risolvere l'errore "ERRORE: dominio non valido per chiave sito".
Ben Johnson,

5
Quando il tuo localhost non è chiamato "localhost", allora non funziona.
Esodo,

12
Google sembra aver rimosso la possibilità di testare su localhost.
IrishChieftain

4
mentre localhost non ha funzionato per me sono stato in grado di utilizzare sia 127.0.0.1 che anche un indirizzo * .xip.io.
davidbates,

104

Si noti che dal 2016 ReCaptcha non supporta più ingenuamente localhost . Dalle FAQ:

i domini localhost non sono più supportati per impostazione predefinita. Se desideri continuare a supportarli per lo sviluppo, puoi aggiungerli all'elenco dei domini supportati per la chiave del tuo sito. Vai alla console di amministrazione per aggiornare l'elenco dei domini supportati. Consigliamo di utilizzare una chiave separata per lo sviluppo e la produzione e di non consentire localhost sulla chiave del sito di produzione.

Quindi basta aggiungere localhostal tuo elenco di domini per il tuo sito e sarai bravo.


12
Ho aggiunto localhostma ancora visualizzato l'errore "Localhost non è l'elenco dei domini supportati per questa chiave del sito".
aadi1295,

6
@ArbazAbid Potrebbe essere necessario attendere circa un'ora affinché Google aggiorni il proprio sistema ...
CC Inc

1
Inoltre, se hai molti progetti e hai impostato il file host di Windows e VirtualHosts, ad esempio in WAMP, puoi trovarlo qui C: \ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.conf, quindi registra il tuo progetto ServerName. Testato e funziona bene.
Jeffz,

@Jeffz Il file hosts non è specifico di Windows - questo è un buon consiglio generale.
Nathan Hornby

82

Questo ha funzionato per me:

"Con le seguenti chiavi di prova, non otterrai mai nessun CAPTCHA e tutte le richieste di verifica passeranno.

Chiave del sito: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

Chiave segreta: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Il widget reCAPTCHA mostrerà un messaggio di avviso per affermare che è solo a scopo di test. Non utilizzare queste chiavi per il traffico di produzione. "

Estratto da qui: https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do

BR!


1
grande! Grazie per questo.
Sam,

1
Se questo smette di funzionare, passerò alla soluzione di Automattic. La tua soluzione qui è l'unica cosa che mi impedisce di abbandonare questa fastidiosa tecnologia.
PJ Brunet,

1
questa sembra essere la "risposta giusta" in quanto mantiene l'ambiente di sviluppo distinto dall'ambiente di produzione.
ChronoFish,

67

È così facile:

  1. Vai al tuo pannello di amministrazione di Google reCaptcha
  2. Aggiungi localhoste 127.0.0.1ai domini di un nuovo sito come la seguente immagine.

inserisci qui la descrizione dell'immagine


Aggiornare:

Se la tua domanda è come impostare reCaptchanel sito di Google per usarlo in localhost, allora sono stato scritto sopra, ma se sei curioso di sapere come è possibile utilizzare reCAPTCHAsu entrambi localhost e website hostcon codici minimi nel controller e prevenire alcuni codici comeConfigurationManager.AppSettings["ReCaptcha:SiteKey"] in esso, allora Ti aiuto con questa descrizione e codici aggiuntivi nella mia risposta.

Ti piacciono le seguenti azioni GET e POST?

Supporta reCaptcha e non necessita di altri codici per la gestione di 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 vista: ( riferimento )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

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

Per usarlo

A) Aggiungi quanto segue ActionFilteral tuo progetto Web:

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) Aggiungi le reCaptchachiavi delle impostazioni per entrambi localhoste websitecome nel tuo webconfigfile:

<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>

Nota: in questo modo non è stato necessario impostare il reCaptcha_SecretKeyparametro nell'azione post o alcuno ViewBagper reCaptcha manualmente nelle azioni e nelle viste, tutti verranno riempiti automaticamente in fase di esecuzione con valori appropriati a seconda che sia stato eseguito il progetto sull'host locale o sul sito Web .😉


17

quando aggiungi domini in Google recaptcha

Aggiungi nuovo dominio: Localhost non localhost

"L" è la lettera maiuscola

In bocca al lupo


8

Google ha recentemente modificato il blocco, consentendo di consentire localhost per impostazione predefinita. (come toccato da @Artur Cesar De Melo) Questo è sotto le loro FAQ:

Ricevo un errore "Localhost non è nell'elenco dei domini supportati". In precedenza funzionava, cosa devo fare?

i domini localhost non sono più supportati per impostazione predefinita. Se desideri continuare a supportarli per lo sviluppo, puoi aggiungerli all'elenco dei domini supportati per la chiave del tuo sito. Vai alla console di amministrazione per aggiornare l'elenco dei domini supportati. Consigliamo di utilizzare una chiave separata per lo sviluppo e la produzione e di non consentire localhost sulla chiave del sito di produzione.

1: crea una chiave separata per il tuo ambiente di sviluppo

2: aggiungi 127.0.0.1 all'elenco dei domini consentiti

3: salva le modifiche e consenti fino a 30 minuti affinché le modifiche abbiano effetto


5

Come da documentazione di Google recaptcha

i domini localhost non sono più supportati per impostazione predefinita. Se desideri continuare a supportarli per lo sviluppo, puoi aggiungerli all'elenco dei domini supportati per la chiave del tuo sito. Vai alla console di amministrazione per aggiornare l'elenco dei domini supportati. Consigliamo di utilizzare una chiave separata per lo sviluppo e la produzione e di non consentire localhost sulla chiave del sito di produzione


5

Rimuovi la chiave REcaptcha corrente, quindi registra la nuova chiave e imposta le impostazioni della chiave con i domini: 127.0.0.1 localhost


3

Recaptcha non funzionerà localhost/

Use `127.0.0.1/` instead of `localhost/`

In che modo questa risposta è diversa da quella accettata?
smottt

1
È la versione più semplice di quella accettata. Entrambe le risposte sono errate in una accettata. Per 1) Non è necessario aggiungere localhost all'elenco accettato di domini. Per 2) Non funziona con localhost.
alianjum0

2
  1. Registra il tuo sito Web all'indirizzo - https://www.google.com/recaptcha/admin
  2. aggiungi js plugin 3.add class e la chiave del tuo sito provata da google inserisci qui la descrizione dell'immagine
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>

1

Se hai una vecchia chiave, dovresti ricreare la tua chiave API. Inoltre, fai attenzione ai proxy.


Qual è il problema con i proxy? Il proxy deve consentire la comunicazione dall'API di Google?
smoore4,

1
@SQLDBA O non è configurato correttamente o la nuova posizione (IP) proviene da paesi di sanzione, può causare alcuni problemi.
Soheil Novinfard,


1

Puoi scrivere "localhost" o "127.0.0.1" ma l'URL deve essere lo stesso

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

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


1

localhost ora funziona. Tuttavia, ricorda che dopo aver aggiunto localhost all'elenco dei nomi di dominio, sono necessari fino a 30 minuti per essere effettivi (in base al suggerimento di aiuto mostrato nell'elenco dei nomi di dominio).


0

Sì, questa è una domanda precedente, ma ciò potrebbe aiutare tutti gli utenti che hanno problemi con reCaptcha su localhost. Google in effetti dice "Per impostazione predefinita, tutte le chiavi funzionano su" localhost "(o" 127.0.0.1 ")" ma in realtà l'utilizzo di reCaptcha su localhost può causare problemi. Nel mio caso ho risolto il mio usando un token sicuro

Ho pubblicato una SOLUZIONE DI LAVORO per PHP qui


0

Recentemente stavo lavorando alla creazione di un sito Web che includesse recaptcha v2 e ho bisogno di eseguire l'automazione dei test sul mio localhost. Non ho aggiunto alcun IP o localhost nel portale di amministrazione di recaptcha.

Seguire i passaggi seguenti

  1. Accedi per ricaptcha screenshot del sito di amministrazione

  2. Individua le impostazioni chiave

  3. Fai clic su impostazioni avanzate

  4. In Convalida nome dominio , deseleziona la casella di controllo Verifica l'origine delle soluzioni reCAPTCHA . Questa opzione viene utilizzata per verificare che le richieste provengano da uno dei domini sopra elencati.

    Si noti che, se disabilitato, durante la verifica di una soluzione è necessario controllare il nome host sul server.


Ho creato una nuova chiave e disabilita questa funzione e la utilizzo per testare in localhost.

Questa è una pagina di esempio che implementa reCAPTCHA per i commenti.


0

ho riscontrato un errore relativo al recaptcha nel sito Web di laravel, l'ho risolto usando alcuni comandi e con il file env e la risposta sopra aiuterà anche in questo problema.

prima di tutto controlla il file env (nel tuo file del caso che ha la chiave di recaptcha di Google) per la chiave di recpatcha di google.

secondo eseguire questi comandi:

  1. configurazione artigianale php: chiara
  2. cache artigianale php: chiara
  3. compositore dump-autoload
  4. php artisan view: clear
  5. percorso artigianale php: chiaro

    risolverà il tuo problema


Non si tratta di problemi con reCaptcha, problemi di memorizzazione nella cache, si tratta dell'utilizzo in ambiente di sviluppo (domini localhost).
ROOT
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.