在本地主机上使用reCAPTCHA


286

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

reCAPTCHA网站上,据说该插件只能在给定的域(和子域)上工作。

我的问题是:有什么方法可以在本地主机上使用reCAPTCHA插件?


如果在此之后添加了localhost,则清除cookie。
Mike Flynn

3
在域名列表中直接输入localhost
csandreas1

Answers:


356

更新资料

原始答案不再正确。现在,开发人员指南指出:

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

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

原始答案保留在下面。


根据《 reCAPTCHA开发人员指南》

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

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


8
我检查确认单词是否在该页面上。它不见了!在2015年,您可以找到上述报价@ developers.google.com/recaptcha/docs/start
Joshua Plicque 2015年

11
这个答案是正确的,但是有一个重要的警告让我感到困惑:从reCAPTCHA v1迁移到v2时,有必要重新生成API密钥以使此消息消失。此外,同样重要的是,如果您像我一样,并且通过将条目放置在操作系统的“主机”文件中来在本地/开发环境中设置测试域,则需要将这些“伪”域添加到允许的域中,以用于有问题的reCAPTCHA帐户来解决“错误:站点密钥的无效域”错误。
本·约翰逊

5
当您的本地主机未命名为“本地主机”时,它将无法正常工作。
Hexodus '16

12
Google似乎已经删除了在localhost上进行测试的功能。
IrishChieftain '16

4
虽然本地主机对我不起作用,但是我可以使用127.0.0.1和* .xip.io地址。
davidbates

104

请注意,从2016年开始,ReCaptcha不再天真的支持localhost。从常见问题解答:

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

因此,只需将其添加localhost到您站点的域列表中,您将变得很好。


12
我添加了localhost但仍然出现错误“本地主机不是此站点密钥支持的域的列表”。
aadi1295'8

6
@ArbazAbid您可能需要等待一个小时左右,以便google更新其系统...
CC Inc

1
另外,如果您有很多项目,并且设置了Windows主机文件和VirtualHosts(例如在WAMP中),则可以在这里找到C:\ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.conf,然后注册项目ServerName。经过测试,工作正常。
Jeffz '16

@Jeffz主机文件不是Windows特定的-这是很好的一般建议。
内森·霍恩比

78

这为我工作:

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

网站密钥: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

密钥: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

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

从这里摘录: https //developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do

BR!


1
大!谢谢你
山姆

1
如果此操作停止,我将切换到Automattic的解决方案。您唯一的解决方案是防止我放弃这种烦人的技术。
PJ Brunet

1
这似乎是“正确的答案”,因为它使您的开发环境与产品环境有所不同。
ChronoFish

67

它是如此容易:

  1. 转到您的Google reCaptcha管理控制台
  2. localhost&添加127.0.0.1到新站点的域中,如下图所示。

在此处输入图片说明


更新:

如果你的问题是如何设置reCaptcha在谷歌网站在本地主机使用它的话,我已经写了上面,但如果你是好奇如何使用reCAPTCHA localhostwebsite host通过在控制器中最小的代码,防止一些类似的代码ConfigurationManager.AppSettings["ReCaptcha:SiteKey"]它那么我会在回答中提供这些额外的描述和代码,以帮助您。

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

👇支持reCaptcha,不需要任何其他代码即可处理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
}

查看:参考

@ReCaptcha.GetHtml(@ViewBag.publicKey)

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

使用它

A)将以下内容添加ActionFilter到您的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)在文件中添加&的reCaptcha设置键:localhostwebsitewebconfig

<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_SecretKeypost操作中设置参数,也不需要ViewBag在Actions和View中手动设置reCaptcha的任何参数,所有这些参数都将在运行时自动用适当的值填充,具体取决于您在本地主机或网站上运行的项目.😉



8

Google最近更改为停止默认允许本地主机。(由@Artur Cesar De Melo触摸)这在其常见问题解答中:

我收到错误消息“本地主机不在支持的域列表中”。这之前是工作的,我该怎么办?

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

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

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

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


5

根据Google Recaptcha文档

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


5

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


3

Recaptcha将无法使用 localhost/

Use `127.0.0.1/` instead of `localhost/`

这个答案与公认的答案有何不同?
smottt

1
它是已接受版本的简单版本。这两个答案在接受的答案中都是错误的。对于1)您不需要将localhost添加到接受的域列表中。对于2)它不适用于localhost。
alianjum0


1

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


代理有什么问题?代理需要允许从Google API返回通讯吗?
smoore4

1
@SQLDBA要么配置不正确,要么新的位置(IP)来自制裁国家/地区,这可能会导致一些问题。
Soheil Novinfard '16


1

您可以输入“ localhost”或“ 127.0.0.1”,但URL必须相同

范例:Google网域Add-> localhost URL => localhost / login.php

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


1

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


0

是的,这是一个较旧的问题,但这可能会帮助所有在本地主机上遇到reCaptcha问题的用户。Google确实说过“默认情况下,所有键都可在'localhost'(或'127.0.0.1')上使用”,但实际上在localhost上使用reCaptcha可能会引起问题。就我而言,我使用安全令牌解决了我的问题

我在这里发布了PHP的工作解决方案


0

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

请按照以下步骤

  1. 登录到Recaptcha管理站点屏幕截图

  2. 找到按键设置

  3. 点击高级设置

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

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


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

这是一个示例页面,该页面实现了reCAPTCHA以便进行注释。


0

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

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

第二个运行这些命令:

  1. PHP的工匠配置:清除
  2. PHP的工匠缓存:清除
  3. 作曲家转储-自动加载
  4. php artisan视图:清除
  5. PHP的工匠路线:清除

    它将解决您的问题


这与reCaptcha无关,也不与缓存有关,而与在开发环境(本地主机域)下使用它有关。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.