Utilisation de reCAPTCHA sur localhost

286

Je suis en train de développer un site Web en utilisant PHP et je veux faire une vérification humaine dans l'une des sessions. Pour le développement, je lance d'abord le système localement et quand il sera prêt, je vais le faire mettre dans un certain domaine.

Sur le site Web reCAPTCHA, il est dit que le plugin ne fonctionnera que sur le domaine (et les sous-domaines) donnés.

Ma question est: existe-t-il un moyen d'utiliser le plugin reCAPTCHA sur un hôte local?

rlc
la source
Effacez les cookies si vous avez ajouté localhost après coup.
Mike Flynn
3
dans la liste des domaines tapez simplementlocalhost
csandreas1

Réponses:

356

Mettre à jour

La réponse originale n'est plus correcte. Le guide du développeur indique maintenant:

"Si vous souhaitez utiliser" localhost "pour le développement, vous devez l'ajouter à la liste des domaines."

Cela ne fonctionnera que si vous accédez à localhost en utilisant 127.0.0.1/...plutôt que localhost/....

La réponse originale est conservée ci-dessous.


Selon le guide du développeur reCAPTCHA :

"Les domaines localhost ne sont plus pris en charge par défaut. Si vous souhaitez continuer à les prendre en charge pour le développement, vous pouvez les ajouter à la liste des domaines pris en charge pour votre clé de site. Accédez à la console d'administration pour mettre à jour votre liste de domaines pris en charge. Nous vous conseillons de utiliser une clé distincte pour le développement et la production et pour ne pas autoriser localhost sur la clé de votre site de production. "

En d'autres termes, utilisez simplement la même clé.

Nathan Osman
la source
8
J'ai vérifié si les mots étaient sur cette page. C'était parti! En 2015, vous pouvez trouver la citation ci-dessus @ developers.google.com/recaptcha/docs/start
Joshua Plicque
11
Cette réponse est exacte, mais il y a une mise en garde importante qui m'a dérouté: lors de la migration de reCAPTCHA v1 vers v2, il est nécessaire de régénérer les clés API pour que ce message disparaisse. De plus, et tout aussi important, si vous êtes comme moi et que vous configurez des domaines de test dans votre environnement local / de développement en plaçant des entrées dans le fichier "hosts" du système d'exploitation, vous devrez ajouter ces "faux" domaines aux domaines autorisés pour le compte reCAPTCHA en question pour résoudre l'erreur "ERREUR: domaine non valide pour la clé de site".
Ben Johnson
5
Lorsque votre localhost n'est pas nommé "localhost", cela ne fonctionne pas.
Hexodus
12
Google semble avoir supprimé la possibilité de tester sur localhost.
IrishChieftain
4
alors que localhost ne fonctionnait pas pour moi, j'ai pu utiliser à la fois 127.0.0.1 et également une adresse * .xip.io.
davidbates
104

Veuillez noter qu'à partir de 2016, ReCaptcha ne prend plus naïvement en charge localhost . De la FAQ:

Les domaines localhost ne sont plus pris en charge par défaut. Si vous souhaitez continuer à les soutenir pour le développement, vous pouvez les ajouter à la liste des domaines pris en charge pour votre clé de site. Accédez à la console d'administration pour mettre à jour votre liste de domaines pris en charge. Nous vous conseillons d'utiliser une clé distincte pour le développement et la production et de ne pas autoriser localhost sur la clé de votre site de production.

Il suffit donc d'ajouter localhostà votre liste de domaines pour votre site et vous serez bon.

CC Inc
la source
12
J'ai ajouté localhostmais j'obtiens toujours l'erreur "Localhost n'est pas la liste des domaines pris en charge pour cette clé de site."
aadi1295
6
@ArbazAbid Vous devrez peut-être attendre environ une heure pour que Google mette à jour son système ...
CC Inc
1
De plus, si vous avez de nombreux projets et que vous configurez le fichier des hôtes Windows et VirtualHosts, par exemple dans WAMP, il peut être trouvé ici C: \ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.conf, puis enregistrez votre projet ServerName. Testé et fonctionne très bien.
Jeffz
@Jeffz Le fichier hosts n'est pas spécifique à Windows - c'est un bon conseil général.
Nathan Hornby
80

Cela a fonctionné pour moi:

"Avec les clés de test suivantes, vous n'aurez toujours pas de CAPTCHA et toutes les demandes de vérification seront acceptées.

Clé du site: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

Clef secrète: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Le widget reCAPTCHA affichera un message d'avertissement pour affirmer que c'est uniquement à des fins de test. Veuillez ne pas utiliser ces clés pour votre trafic de production. "

Extrait d'ici: https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do

BR!

Pablo
la source
1
génial! Merci pour cela.
Sam
1
Si cela ne fonctionne plus, je passe à la solution d'Automattic. Votre solution ici est la seule chose qui m'empêche de laisser tomber cette technologie ennuyeuse.
PJ Brunet
1
cela semble être la "bonne réponse" car elle maintient votre environnement de développement distinct de votre environnement de production.
ChronoFish
67

Il est si facile:

  1. Accédez à votre panneau d'administration google reCaptcha
  2. Ajoutez localhost& 127.0.0.1aux domaines d'un nouveau site comme l'image suivante.

entrez la description de l'image ici


Mettre à jour:

Si votre question est de savoir comment configurer le reCaptchasite Google pour l'utiliser dans localhost, je l'ai écrit ci-dessus, mais si vous êtes curieux de savoir comment vous pouvez utiliser reCAPTCHAà la fois localhost et website hostpar des codes minimaux dans votre contrôleur et empêcher certains codes comme ConfigurationManager.AppSettings["ReCaptcha:SiteKey"]celui-ci, alors Je vous aide avec cette description et ces codes supplémentaires dans ma réponse.

Aimez-vous les actions GET et POST suivantes?

Il prend en charge reCaptcha et n'a besoin d'aucun autre code pour gérer 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
}

En vue: ( référence )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

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

Pour l'utiliser

A) Ajoutez les éléments suivants ActionFilterà votre projet 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) Ajoutez les reCaptchaclés de paramètres pour les deux localhostet websiteaimez-les dans votre webconfigfichier:

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

Remarque: De cette façon, vous n'aviez pas besoin de définir le reCaptcha_SecretKeyparamètre dans l' action de post ou n'importe quel ViewBagpour reCaptcha manuellement dans vos actions et vues, tous seront automatiquement remplis au moment de l'exécution avec les valeurs appropriées selon que vous avez exécuté le projet sur l'hôte local ou le site Web .😉

RAM
la source
16

lorsque vous ajoutez des domaines dans Google recaptcha

Ajouter un nouveau domaine: Localhost pas localhost

"L" est une lettre majuscule

Bonne chance

Yoni Ayalon
la source
8

Google a récemment modifié l'arrêt permettant à localhost d'être autorisé par défaut. (comme abordé par @Artur Cesar De Melo) Ceci est sous leur FAQ:

Je reçois une erreur "Localhost n'est pas dans la liste des domaines pris en charge". Cela fonctionnait auparavant, que dois-je faire?

Les domaines localhost ne sont plus pris en charge par défaut. Si vous souhaitez continuer à les soutenir pour le développement, vous pouvez les ajouter à la liste des domaines pris en charge pour votre clé de site. Accédez à la console d'administration pour mettre à jour votre liste de domaines pris en charge. Nous vous conseillons d'utiliser une clé distincte pour le développement et la production et de ne pas autoriser localhost sur la clé de votre site de production.

1: Créez une clé distincte pour votre environnement de développement

2: Ajoutez 127.0.0.1 à la liste des domaines autorisés

3: Enregistrez les modifications et accordez jusqu'à 30 minutes pour que les modifications prennent effet

tony09uk
la source
5

Selon la documentation de Google recaptcha

Les domaines localhost ne sont plus pris en charge par défaut. Si vous souhaitez continuer à les soutenir pour le développement, vous pouvez les ajouter à la liste des domaines pris en charge pour votre clé de site. Accédez à la console d'administration pour mettre à jour votre liste de domaines pris en charge. Nous vous conseillons d'utiliser une clé distincte pour le développement et la production et de ne pas autoriser localhost sur la clé de votre site de production

Artur Cesar De Melo
la source
5

Supprimez la clé REcaptcha actuelle, puis enregistrez une nouvelle clé et définissez vos paramètres de clé avec les domaines: 127.0.0.1 localhost

Mykhailo
la source
3

Recaptcha ne fonctionnera pas localhost/

Use `127.0.0.1/` instead of `localhost/`
alianjum0
la source
En quoi cette réponse est-elle différente de la réponse acceptée?
smottt
1
C'est une version plus simple de celle acceptée. Les deux réponses sont incorrectes dans la réponse acceptée. Pour 1) Vous n'avez pas besoin d'ajouter localhost à la liste des domaines acceptés. Pour 2) Cela ne fonctionne pas avec localhost.
alianjum0
2
  1. Enregistrez votre site Web sur - https://www.google.com/recaptcha/admin
  2. ajoutez le plugin js 3.add classe et votre clé de site fournie par google entrez la description de l'image ici
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>
Saquib Azam
la source
1

Si vous avez une ancienne clé, vous devez recréer votre clé API. Soyez également conscient des procurations.

Soheil Novinfard
la source
Quel est le problème avec les procurations? Le proxy doit permettre la communication de retour de l'API Google?
smoore4
1
@SQLDBA Soit il n'est pas bien configuré, soit le nouvel emplacement (IP) provient des pays de sanction, cela peut causer des problèmes.
Soheil Novinfard
1

Vous pouvez écrire "localhost" ou "127.0.0.1" mais l'URL doit être la même

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

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

Mert Yılmaz
la source
1

localhost fonctionne maintenant. Cependant, n'oubliez pas qu'après avoir ajouté localhost à la liste des noms de domaine, cela prend jusqu'à 30 minutes pour prendre effet (selon le conseil d'aide affiché sur la liste des noms de domaine).

Gautam Jain
la source
0

Oui, c'est une question plus ancienne mais cela peut aider tous les utilisateurs ayant des problèmes avec reCaptcha sur localhost. Google dit en effet "Par défaut, toutes les clés fonctionnent sur 'localhost' (ou '127.0.0.1')" mais pour de vrai, l'utilisation de reCaptcha sur localhost peut causer des problèmes. Dans mon cas, j'ai résolu le mien en utilisant un jeton sécurisé

J'ai posté une SOLUTION DE TRAVAIL pour PHP ici

Hexodus
la source
0

Je travaillais récemment sur la création d'un site Web impliquant recaptcha v2 et j'ai besoin de faire des tests d'automatisation sur mon hôte local. Je n'ai ajouté aucune adresse IP ou localhost dans le portail d'administration de recaptcha.

Suivez les étapes ci-dessous

  1. Connectez-vous pour recaptcha capture d'écran du site d'administration

  2. Localiser les paramètres clés

  3. Cliquez sur paramètres avancés

  4. Sous Validation du nom de domaine , décochez la case Vérifier l'origine des solutions reCAPTCHA . Cette option est utilisée pour vérifier les demandes provenant de l'un des domaines répertoriés ci-dessus.

    Veuillez noter que, s'il est désactivé, vous devez vérifier le nom d'hôte sur votre serveur lors de la vérification d'une solution.


J'ai créé une nouvelle clé et la désactiver et utiliser cette clé pour tester dans localhost.

Ceci est un exemple de page qui implémente reCAPTCHA pour les commentaires.

cyberviral
la source
0

j'ai une erreur liée à recaptcha dans le site Web de laravel, je l'ai résolu en utilisant une commande et avec le fichier env et la réponse ci-dessus aidera également dans ce problème.

tout d'abord, vérifiez le fichier env (dans votre dossier contenant la clé google recaptcha) pour la touche google recpatcha.

exécutez ensuite ces commandes:

  1. php artisan config: clear
  2. cache artisan php: effacer
  3. compositeur dump-autoload
  4. vue artisan php: clair
  5. php route artisanale: clair

    cela résoudra votre problème

divyansh dixit
la source
Il ne s'agit pas d'un problème avec reCaptcha, de problèmes de mise en cache, il s'agit de l'utiliser dans un environnement de développement (domaines localhost).
ROOT