web-dev-qa-db-fra.com

Utilisation de reCAPTCHA sur localhost

Je développe un site Web avec PHP et je souhaite effectuer une vérification humaine lors de l'une des sessions. Pour le développement, je lance initialement le système localement et quand il sera prêt, je le ferai mettre dans un certain domaine.

Dans 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 la suivante: existe-t-il un moyen d'utiliser le plugin reCAPTCHA sur un hôte local?

221
rlc

Mettre à jour

La réponse d'origine 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 la clé de votre site. Accédez à la console d'administration pour mettre à jour votre liste des domaines pris en charge. utilisez 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é.

288
Nathan Osman

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

les domaines localhost ne sont plus pris en charge par défaut. Si vous souhaitez continuez à les soutenir pour le développement, vous pouvez les ajouter à la liste des domaines pris en charge pour la clé de votre site. Allez à la console d’administration à mettre à jour votre liste de domaines pris en charge. Nous vous conseillons d’utiliser une clé séparée pour le développement et la production et pour ne pas permettre à localhost sur votre clé du site de production.

Donc, ajoutez simplement localhost à votre liste de domaines pour votre site et vous serez bon.

93
CC Inc

Il est si facile:

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

 enter image description here


Mettre à jour:

Si votre question est de savoir comment définir reCaptcha dans Google site pour l’utiliser dans localhost, cela a été écrit ci-dessus, mais si vous êtes curieux de savoir comment utiliser reCAPTCHA sur les deuxlocalhost et website Host par minimal codes dans votre contrôleur et empêcher certains codes comme ConfigurationManager.AppSettings["ReCaptcha:SiteKey"] dans celui-ci, alors je vous aide avec cette description supplémentaire et codes dans ma réponse.

Aimez-vous les actions GET et POST suivantes?

Il ???? supporte reCaptcha et n’a besoin d’aucun autre code pour le traitement 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
}

Dans View: ( référence )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

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

Pour l'utiliser

A) Ajoutez la ActionFilter suivante à 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 clés de paramètres reCaptcha pour localhost & website comme dans votre fichier webconfig:

<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 manière, vous n'avez pas besoin de définir le paramètre reCaptcha_SecretKey dans post action ni aucune variable ViewBag pour reCaptcha manuellement dans vos actions et vos vues, elles seront toutes automatiquement renseignées à l'exécution avec les valeurs appropriées. selon que vous avez exécuté le projet sur l’hôte local ou sur le site Web. ????

46
RAM

Cela a fonctionné pour moi:

"Avec les clés de test suivantes, vous obtiendrez toujours pas de CAPTCHA et toutes les demandes de vérification seront satisfaites.

Clé de site: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

Clé secrète: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Le widget reCAPTCHA affichera un message d'avertissement affirmant qu'il s'agit uniquement d'un test. Veuillez ne pas utiliser ces clés pour votre trafic de production. "

Extrait de: https://developers.google.com/recaptcha/docs/faq

BR!

25
Pablo

Google a récemment changé, arrêtant de permettre que localhost soit autorisé par défaut. (comme abordé par @Artur Cesar De Melo) Ceci est sous leur FAQ:

Je reçois le message d'erreur "L'hôte local ne figure pas dans la liste des domaines pris en charge". Cela fonctionnait avant, 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 la clé de votre 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éer une clé distincte pour votre environnement de développement

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

3: Enregistrez les modifications et attendez 30 minutes maximum pour que les modifications prennent effet

8
tony09uk

Selon documentation de Google recaptcha

les domaines localhost ne sont plus pris en charge par défaut. Si vous souhaitez continuez à les soutenir pour le développement, vous pouvez les ajouter à la liste des domaines pris en charge pour la clé de votre site. Allez à la console d’administration à mettre à jour votre liste de domaines pris en charge. Nous vous conseillons d’utiliser une clé séparée pour le développement et la production et pour ne pas permettre à localhost sur votre clé du site de production

4
Artur Cesar De Melo

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

4
Mykhailo

Recaptcha ne fonctionnera pas sur localhost/

Use `127.0.0.1/` instead of `localhost/`
3
alianjum0

Si vous avez une ancienne clé, vous devez recréer votre clé API. Également être au courant des procurations.

1
Soheil Novinfard

https://developers.google.com/recaptcha/docs/domain_validation

Vérifiez la partie où il est indiqué que vous pouvez désactiver la vérification. Ne le faites que pour le développement. 

1
Siddharth Tyagi

Vous pouvez écrire "localhost" ou "127.0.0.1" mais l'URL doit être identique

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

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

1
Merty
  1. Enregistrez votre site Web sur - https://www.google.com/recaptcha/admin
  2. ajoutez js plugin 3.add classe et votre clé de site fournie par google enter image description here
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>
0
Saquib Azam

Je travaillais récemment à 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 pas ajouté d'adresse IP ou d'hôte local au portail d'administration de Recaptcha.

Suivez les étapes ci-dessous 

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

  2. Localiser les paramètres de clé

  3. Cliquez sur les paramètres avancés

  4. Sous Validation du nom de domaine, décochez la case Vérifiez l’origine des solutions reCAPTCHA. Cette option permet de vérifier que les demandes proviennent d’un des domaines énumérés ci-dessus.

    Veuillez noter que, si cette option est désactivée, 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 le désactiver et l'utiliser pour tester dans localhost. 

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

0
cyberviral

lorsque vous ajoutez des domaines dans Google recaptcha

Ajouter un nouveau domaine: Localhost not localhost

"L" est une lettre majuscule

Bonne chance

0
Yoni Ayalon

localhost fonctionne maintenant. Cependant, rappelez-vous qu'après avoir ajouté localhost à la liste des noms de domaine, il faut compter jusqu'à 30 minutes pour que celui-ci prenne effet (selon l'aide fournie avec la liste des noms de domaine).

0
Gautam Jain

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 l'utilisation réelle de reCaptcha sur localhost peut poser problème. Dans mon cas, j'ai résolu le mien en utilisant secure token

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

0
Hexodus