在本地主机上使用reCAPTCHA

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

reCAPTCHA网站中,说插件将只在给定的域(和子域)工作。

有没有办法在本地主机上使用reCAPTCHA插件?

452008 次浏览

更新

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

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

只有当你使用127.0.0.1/...而不是localhost/...访问localhost时,这才有效。

原答案保存在下面。


根据reCAPTCHA开发者指南:

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

换句话说,就是使用相同的键。

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

这可以帮助所有在本地主机上使用reCAPTCHA时遇到问题的用户。谷歌确实说了“默认情况下,所有密钥都适用于'localhost'(或'127.0.0.1')”,但实际上在localhost上使用reCAPTCHA可能会导致问题。在我的情况下,我解决它使用安全令牌

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

请注意,截至2016年,reCAPTCHA不再支持本地主机了。常见问题解答:

默认情况下不再支持本地主机域。如果你愿意 继续支持他们的发展,你可以将他们添加到列表中 您的站点密钥支持的域。转到管理控制台 更新受支持的域列表。我们建议使用单独的钥匙 用于开发和生产,并且不允许在您的

.生产站点密钥

只要将localhost添加到您站点的域名列表中,就可以了。

根据谷歌的reCAPTCHA文档

默认情况下不再支持>localhost域。如果你愿意 继续支持他们的发展,你可以将他们添加到列表中 您的站点密钥支持的域。转到管理控制台 更新受支持的域列表。我们建议使用单独的钥匙 用于开发和生产,并且不允许在您的 生产站点密钥

谷歌最近停止默认允许本地主机(正如@Artur Cesar De Melo提到的那样)。这是他们的常见问题:

我得到一个错误“Localhost不在支持的域名列表中”。这个之前还能用,我该怎么办?

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

1:为您的开发环境创建一个单独的键

2:将“127.0.0.1”添加到允许创建的域列表中

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

很简单:

  1. 去你的谷歌reCAPTCHA管理面板
  2. 添加localhost &127.0.0.1到一个新站点的域,如下图所示。

Enter image description here


更新:

如果你的问题是如何在谷歌网站上设置reCAPTCHA,以便在本地主机中使用它,那么它就像我上面写的那样,但如果你好奇如何在这两个 localhostwebsite host上使用reCAPTCHA,并通过最小化控制器中的代码防止一些像ConfigurationManager.AppSettings["ReCaptcha:SiteKey"]这样的代码,那么我在我的回答中用这个额外的描述和代码帮助你。

您喜欢下面的GET和POST操作吗?

下面的代码支持reCAPTCHA,不需要任何其他代码来处理reCAPTCHA。

[HttpGet]
[Recaptcha]
public ActionResult Register()
{
// Your code in the GET action
}


[HttpPost]
[Recaptcha]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterViewModel model, string reCaptcha_SecretKey){
// Your code in the POST action
if (!ModelState.IsValid || !ReCaptcha.Validate(reCaptcha_SecretKey))
{
// Your code
}
// Your code
}

观点: (参考)中

@ReCaptcha.GetHtml(@ViewBag.publicKey)


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

使用它

将以下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"];
}
}

在你的webconfig文件中像这样为localhostwebsite添加reCAPTCHA设置键:

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

通过这种方式,您不需要在操作和视图中手动设置post操作中的reCaptcha_SecretKey参数或任何用于reCaptcha的ViewBag参数。所有这些都将在运行时自动填充,并根据您是在本地主机上还是在网站上运行项目而具有适当的值。

这招对我很管用:

reCAPTCHA文档提取:

使用以下测试键,您将始终得到No CAPTCHA和所有

网址:6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

密钥:6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

reCAPTCHA小部件将显示警告消息,声称它是 仅作测试用途。请不要用这些钥匙 生产交通。< / p >

reCAPTCHA将不能在localhost/上工作。

使用127.0.0.1/代替localhost/

你可以写“;localhost"或“127.0.0.1”,但URL必须相同。

示例:谷歌域Add ->localhost URL =>localhost / login。

示例:谷歌域Add ->127.0.0.1 URL =>127.0.0.1 / login。

删除当前的reCAPTCHA密钥,注册新密钥,并使用以下域设置你的键设置:

127.0.0.1
localhost

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

遵循以下步骤

  1. 登录reCAPTCHA管理站点。截图

  2. < p >定位键设置

  3. 单击高级设置

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

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


我创建了一个新密钥,禁用了它,并使用这个密钥在localhost中进行测试。

这是示例页面,它为注释实现了reCAPTCHA。

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

  1. https://www.google.com/recaptcha/admin注册你的网站

  2. 添加JavaScript插件

  3. 添加由谷歌提供的类和您的站点密钥

    Enter image description here

当你在谷歌中添加时:

添加新域:

本地主机,不是本地主机

“L"是大写字母。

我在Laravel网站上得到了一个与reCAPTCHA相关的错误。我通过使用一些命令和一个env文件解决了这个问题,以前的答案也将有助于解决这个问题。

首先,检查env文件(在您的示例中,该文件具有谷歌reCAPTCHA密钥)中的谷歌reCAPTCHA密钥。

其次,运行这些命令:

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

它会解决你的问题。

出于测试目的,如果你想在localhost上测试包含reCAPTCHA的网页,然后通过管理控制台 2: https://www.google.com/recaptcha/admin在域列表中添加本地主机。*建议为localhost创建一个单独的站点密钥。

管理控制台截图

CAPTCHA Output

对我来说,它可以删除我的实际配置并创建一个新的配置,添加如下域:

enter image description here

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

如果你不知道它是什么,就谷歌;what 's my IP"

然后使用您的IP地址并在您的域中设置此验证码,它应该开始工作OK。

如果你正在使用Laravel,那么你应该重新启动你的服务器

.执行以下两条命令
php artisan config:clear


php artisan cache:clear

自2021年1月2日起,谷歌在这篇文章中发布了这两个密钥进行测试。

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

对于reCAPTCHA v2,使用以下测试键。您将始终得到No CAPTCHA和所有验证请求将通过。

Site key: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
Secret key: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
reCAPTCHA小部件将显示警告消息,以确保不是

.用于生产流量

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

在您的谷歌reCAPTCHA网站域名列表(https://www.google.com/recaptcha/admin/site/ {siteid} /设置)中,添加LOCALHOST

如果上面的不工作,尝试添加127.0.0.1

截至2021年的今天,谷歌reCAPTCHA企业版控制台包括一个验证检查,即是否允许将localhost添加到允许的域列表中。为了解决这个问题(显然只是为了开发/测试的目的),我做了以下工作:

  1. 在你的< em > < / em >文件中创建一个条目来解析你的域到你的本地主机

    127.0.0.1    whatever-your-domain-will-be.com
    
  2. 测试你的应用程序不是通过导航到localhost,而是通过导航到你的域。

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

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

迅速的回答

Do get requests on Recaptcha in your backend rather than frontend

最新更新2022年 默认情况下不支持本地主机域。如果您希望继续支持它们的开发,您可以将它们添加到您的站点密钥所支持的域列表中

https://developers.google.com/recaptcha/docs/faq#im-getting-an-error-localhost-is-not-in-the-list-of-supported-domains.-what-should-i-do

我添加了"localhost"它运行得非常好。 谷歌Repatcha Localhost < / p >

对于reCAPTCHA v2,使用以下测试键。您将始终得到No CAPTCHA和所有验证请求将通过。

Site key: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
Secret key: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

参考