我正在使用PHP开发一个网站,我希望在其中一个会话中进行人工验证。对于开发,我最初在本地运行系统,当它准备就绪时,我会把它放在某个域中。
在reCAPTCHA website中,据说插件只能在给定的域(和子域)中工作。
我的问题是:有没有办法在本地主机上使用reCAPTCHA插件?
答案 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)
这很容易:
localhost
& 127.0.0.1
到新网站的域名,如下图所示。<强>更新强>
如果您的问题是如何在Google网站中设置reCaptcha
以便在localhost中使用它,那么我已经在上面写了它,但如果您对如何在上使用reCAPTCHA
感到好奇 localhost
和website 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或本地主机。
按照以下步骤
登录到Recaptcha管理站点screenshot
查找键设置
单击高级设置
在域名验证下,取消选中验证reCAPTCHA解决方案的来源复选框。此选项用于验证来自上面列出的域之一的请求。
请注意,如果禁用此选项,则在验证解决方案时需要检查服务器上的主机名。
我创建了一个新密钥并将其禁用,并将其用于在localhost中进行测试。
这是sample page,它实现了reCAPTCHA来评论。
答案 15 :(得分:0)
localhost现在可以使用。但是,请记住,将localhost添加到域名列表后,最多需要30分钟才能生效(根据针对域名列表显示的帮助提示)。
答案 16 :(得分:0)
- 在– https://www.google.com/recaptcha/admin
注册您的网站- 添加js插件 3.添加课程和Google提供的您的站点密钥
<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 1:https://www.google.com/recaptcha/admin在域列表中添加本地主机。 *建议为本地主机创建一个单独的站点密钥。
谢谢:)
答案 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
添加到允许的域列表中。为了解决这个问题(显然仅用于开发/测试目的)为我做以下工作:
在您的主机文件中创建一个条目,将您的域解析为您的本地主机
127.0.0.1whatever-your-domain-will-be.com
不是通过导航到本地主机而是通过导航到您的域来测试您的应用。
我的本地服务器/应用程序通常会在 http://localhost:4000 上运行,因此导航到 http://whatever-your-domain-will-be.com:4000 就成功了。
一旦部署或测试完成,就可以轻松删除主机文件条目,并且在 recaptcha 允许的域列表中没有残留的垃圾。
答案 22 :(得分:-1)
我在laravel网站中遇到了与recaptcha有关的错误,我通过使用一些命令并使用env文件解决了它,上面的答案也将有助于解决此问题。
首先检查环境文件(在您的情况下,文件具有google recaptcha密钥)以获取google recpatcha密钥。
第二次运行这些命令:
php artisan route:clear
它将解决您的问题