在localhost上使用reCAPTCHA

时间:2010-07-12 22:53:03

标签: localhost recaptcha

我正在使用PHP开发一个网站,我希望在其中一个会话中进行人工验证。对于开发,我最初在本地运行系统,当它准备就绪时,我会把它放在某个域中。

reCAPTCHA website中,据说插件只能在给定的域(和子域)中工作。

我的问题是:有没有办法在本地主机上使用reCAPTCHA插件?

23 个答案:

答案 0 :(得分:298)

更新

原来的答案不再正确。开发人员指南现在声明:

  

“如果您想使用”localhost“进行开发,则必须将其添加到域列表中。”

仅当您使用127.0.0.1/...而不是localhost/...访问localhost时,此功能才有效。

原始答案保留在下面。


根据the reCAPTCHA Developer's Guide

  

默认情况下不再支持localhost域。如果您希望继续支持它们进行开发,可以将它们添加到站点密钥的受支持域列表中。转到管理控制台以更新支持的域列表。我们建议使用单独的密钥进行开发和生产,并且不允许在生产站点密钥上使用localhost。“

换句话说,只需使用相同的密钥。

答案 1 :(得分:94)

请注意,截至2016年,ReCaptcha doesn't naively support localhost anymore。来自FAQ:

  默认情况下不再支持

localhost域。如果你愿意的话   继续支持它们进行开发,您可以将它们添加到列表中   支持的站点密钥域。转到管理控制台   更新支持的域列表。我们建议使用单独的密钥   用于开发和生产,不允许localhost在您的   生产现场关键。

因此,只需将localhost添加到您网站的域名列表中,就可以了。

答案 2 :(得分:47)

这很容易:

  1. 转到google reCaptcha admin panel
  2. 添加localhost& 127.0.0.1到新网站的域名,如下图所示。
  3. enter image description here

    <强>更新

    如果您的问题是如何在Google网站中设置reCaptcha以便在localhost中使用它,那么我已经在上面写了它,但如果您对如何在上使用reCAPTCHA感到好奇 localhostwebsite host 控制器中的最小代码,并阻止其中包含ConfigurationManager.AppSettings["ReCaptcha:SiteKey"]等代码,然后我会帮助您完成此额外说明代码在我的回答中。

    您喜欢以下GET和POST操作吗?

      

    它支持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
    }
    

    查看:reference

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

    使用

    A)将以下ActionFilter添加到您的网站项目中:

    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)reCaptcha&amp;添加localhost设置密钥在website文件中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>
    
      

    注意:通过这种方式,您无需在帖子操作中设置reCaptcha_SecretKey参数,也无需在动作中手动设置ViewBag reCaptcha和视图,所有这些都将在运行时自动填充适当的值,具体取决于您在localhost或网站上运行项目。

答案 3 :(得分:40)

这对我有用:

&#34;使用以下测试密钥,您将始终获得No CAPTCHA并且所有验证请求都将通过。

网站密钥:6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

密钥:6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

reCAPTCHA小部件将显示一条警告消息,声称它仅用于测试目的。请不要将这些密钥用于生产流量。&#34;

从这里提取:https://developers.google.com/recaptcha/docs/faq

BR!

答案 4 :(得分:8)

Google最近更改已停止,默认情况下允许localhost被允许。 (正如@Artur Cesar De Melo所感动的那样)这是在他们的常见问题解答中:

  

我收到错误&#34; Localhost不在支持的域列表中#34;。这之前有用,我该怎么办?

     默认情况下不再支持

localhost域。如果您希望继续支持它们进行开发,可以将它们添加到站点密钥的受支持域列表中。转到管理控制台以更新支持的域列表。我们建议使用单独的密钥进行开发和生产,并且不允许在生产站点密钥上使用localhost。

1:为您的开发环境创建单独的密钥

2:将127.0.0.1添加到允许的域列表

3:保存更改并允许最多30分钟更改生效

答案 5 :(得分:5)

在Google Recaptcha中添加域时

添加新域: Localhost不是本地主机

“ L”是大写字母

祝你好运

答案 6 :(得分:4)

根据Google recaptcha documentation

  默认情况下不再支持

localhost域。如果你愿意的话   继续支持它们进行开发,您可以将它们添加到列表中   支持的站点密钥域。转到管理控制台   更新支持的域列表。我们建议使用单独的密钥   用于开发和生产,不允许localhost在您的   生产现场密钥

答案 7 :(得分:4)

截至 2021 年 1 月 2 日,Google 已在此 article 中发布了这两个用于测试的密钥。

<块引用>

我想使用 reCAPTCHA 运行自动化测试。我应该怎么办? 对于 reCAPTCHA v3,为测试环境创建单独的密钥。分数可能不准确,因为 reCAPTCHA v3 依赖于查看真实流量。

<块引用>

对于 reCAPTCHA v2,请使用以下测试密钥。您将始终获得 No CAPTCHA,并且所有验证请求都会通过。

Site key: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
Secret key: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
<块引用>

reCAPTCHA 小部件将显示一条警告消息以确保它不是 用于生产流量。

我第一次使用密钥时,生成的电子邮件变成了垃圾邮件。

答案 8 :(得分:4)

删除当前的REcaptcha密钥,然后注册新密钥并使用域设置密钥设置 127.0.0.1 localhost

答案 9 :(得分:3)

Recaptcha不适用于localhost/

Use `127.0.0.1/` instead of `localhost/`

答案 10 :(得分:2)

在您的 google recaptcha 网站的域列表中添加 - https://www.google.com/recaptcha/admin/site/{siteid}/settings

本地主机
如果以上不起作用,请尝试添加127.0.0.1

答案 11 :(得分:1)

如果您有旧密钥,则应重新创建API密钥。还要注意代理。

答案 12 :(得分:1)

你可以写&#34; localhost&#34;或&#34; 127.0.0.1&#34;但URL必须相同

示例:Google Domains Add-&gt; localhost URL =&gt;本地主机/ login.php中

示例:Google Domains Add-&gt; 127.0.0.1 URL =&gt; 127.0.0.1/login.php

答案 13 :(得分:1)

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

检查可以禁用检查的部分。 只做发展。

答案 14 :(得分:0)

我最近正在创建一个涉及recaptcha v2的网站,我需要在本地主机上进行自动化测试。我没有在Recaptcha管理门户中添加任何IP或本地主机。

按照以下步骤

  1. 登录到Recaptcha管理站点screenshot

  2. 查找键设置

  3. 单击高级设置

  4. 域名验证下,取消选中验证reCAPTCHA解决方案的来源复选框。此选项用于验证来自上面列出的域之一的请求。

    请注意,如果禁用此选项,则在验证解决方案时需要检查服务器上的主机名。


我创建了一个新密钥并将其禁用,并将其用于在localhost中进行测试。

这是sample page,它实现了reCAPTCHA来评论。

答案 15 :(得分:0)

localhost现在可以使用。但是,请记住,将localhost添加到域名列表后,最多需要30分钟才能生效(根据针对域名列表显示的帮助提示)。

答案 16 :(得分:0)

  
      
  1. 在– https://www.google.com/recaptcha/admin
  2. 注册您的网站   
  3. 添加js插件   3.添加课程和Google提供的您的站点密钥   enter image description here
  4.   
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>

答案 17 :(得分:0)

出于测试目的,如果要测试在本地主机上包含reCaptcha的网页,请通过Admin Console 1https://www.google.com/recaptcha/admin在域列表中添加本地主机。 *建议为本地主机创建一个单独的站点密钥。

Admin Console Screenshot

Captcha Output

谢谢:)

答案 18 :(得分:0)

对我有用的方法是使用我的外部IP地址。

如果您不知道它是什么,只需使用Google What's My IP

然后使用您的IP地址,并在您的域中将其设置为验证码,并且应该开始正常运行。

答案 19 :(得分:0)

如果你使用的是 Laravel,那么你应该重启你的服务 并运行以下两个命令

php artisan config:clear

php artisan cache:clear 

答案 20 :(得分:0)

是的,这是一个较旧的问题,但这可能有助于所有用户在localhost上遇到reCaptcha问题。谷歌确实说“默认情况下,所有密钥都在”localhost“(或”127.0.0.1“)上工作”但是真正使用本地主机上的reCaptcha可能会导致问题。就我而言,我使用I posted a WORKING SOLUTION for PHP here

解决了我的问题

{{3}}

答案 21 :(得分:0)

截至 2021 年,Google reCaptcha Enterprise 版控制台包含验证检查,不允许localhost 添加到允许的域列表中。为了解决这个问题(显然仅用于开发/测试目的)为我做以下工作:

  1. 在您的主机文件中创建一个条目,将您的域解析为您的本地主机

    127.0.0.1whatever-your-domain-will-be.com

  2. 不是通过导航到本地主机而是通过导航到您的域来测试您的应用。

我的本​​地服务器/应用程序通常会在 http://localhost:4000 上运行,因此导航到 http://whatever-your-domain-will-be.com:4000 就成功了。

一旦部署或测试完成,就可以轻松删除主机文件条目,并且在 recaptcha 允许的域列表中没有残留的垃圾。

答案 22 :(得分:-1)

我在laravel网站中遇到了与recaptcha有关的错误,我通过使用一些命令并使用env文件解决了它,上面的答案也将有助于解决此问题。

首先检查环境文件(在您的情况下,文件具有google recaptcha密钥)以获取google recpatcha密钥。

第二次运行这些命令:

  1. php artisan config:clear
  2. php artisan cache:clear
  3. composer dump-autoload
  4. php artisan view:clear
  5. php artisan route:clear

    它将解决您的问题