Security 这个复选框是如何工作的,我如何使用它?
我最近注册了oneplusone网站,注意到这个复选框recaptcha 它是如何工作的,我如何在我的网站上使用它?比那些晦涩难懂的单词/数字好多了:)Security 这个复选框是如何工作的,我如何使用它?,security,recaptcha,Security,Recaptcha,我最近注册了oneplusone网站,注意到这个复选框recaptcha 它是如何工作的,我如何在我的网站上使用它?比那些晦涩难懂的单词/数字好多了:) recaptcha站点没有提到任何新的recaptcha方法 这个条目没有回答最初的问题,但是它有助于实现类似的解决方案。正如@IanM所说,复选框recaptcha处于测试阶段,未经邀请无法使用 重要编辑谷歌推出了新的reCAPTCHA 这是一个基于JavaScript的验证码 由于大多数spambot不执行JavaScript,并
recaptcha站点没有提到任何新的recaptcha方法 这个条目没有回答最初的问题,但是它有助于实现类似的解决方案。正如@IanM所说,复选框recaptcha处于测试阶段,未经邀请无法使用 重要编辑谷歌推出了新的reCAPTCHA
- 生成唯一标识符并使用隐藏输入将其添加到表单中
- 在站点上呈现一个复选框(不使用
元素,可能使用
)并向其添加先前生成的标识符(您可以使用html5
属性)数据-*
- 当用户单击复选框时,向服务器发送ajax请求并验证验证码,如果验证码有效,则将其标记为
。(向用户显示结果-标识符正常/不正常)正在使用
- 当用户发送表单时,表单的数据包含标识符。再次检查它,它应该存在,并且应该处于
状态正在使用
- 如果所有的验证都通过了,那么表单的数据就可以使用/处理了
注意(编辑3)此答案中的步骤和说明仅包含有关此类型验证码的一些基本信息,您必须始终添加其他验证和安全步骤以使其更安全。例如,Google noCaptcha在3次“div点击”后系统地触发标准的reCaptcha。这是reCaptcha的测试版API。我是从他们的JSAPI源代码中收集到的:引用“API2”。我也发现了这一点:显然,他们做了一个只邀请测试版的“无验证码重述”,所以。。。。你可能还不能在你的网站上使用它。我找不到任何关于选择进入测试版的信息,但是如果你搜索“无验证码重述测试版”,你会看到很多人提到从谷歌收到电子邮件让他们加入
如果你找到一个地方进入测试版,请分享!否则,它看起来将在2015年公开发布…以下是我在PHP中毫无问题地运行的代码: 客户端:
<div class="g-recaptcha" data-sitekey="PUBLIC_KEY"></div>
if (isset($_POST['g-recaptcha-response'])) {
$captcha = $_POST['g-recaptcha-response'];
$privatekey = "SECRET_KEY";
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = array(
'secret' => $privatekey,
'response' => $captcha,
'remoteip' => $_SERVER['REMOTE_ADDR']
);
$curlConfig = array(
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $data
);
$ch = curl_init();
curl_setopt_array($ch, $curlConfig);
$response = curl_exec($ch);
curl_close($ch);
}
$jsonResponse = json_decode($response);
if ($jsonResponse->success == "true")
doSomething();
else
doSomeOtherThing();
:)感谢大家对本帖的贡献,很高兴看到这么多人对新的recaptcha工具感兴趣
我找不到它的.net实现,所以我构建了一个简单的web表单控件,您可以在这里找到我来这里搜索,没有看到答案,所以我一直在搜索 在我搜索之后,这个窗口仍然打开,所以我正在用我的发现更新这篇文章 在这里,您可以了解有关reCAPTCHA的信息: 但基本上,您可以将以下内容添加到您的网页:
<script src="https://www.google.com/recaptcha/api.js" >;
<form method="post">
<div class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
<input value="submit" type="submit" />
</form>
希望你们中的一些人会觉得这很有用。我在完全相同的地方看到它,并想知道完全相同的事情。我悬赏以引起注意。我也很好奇。也许它正在测试中,还没有准备好发布?一个简单的方法是
$('form input[type=submit]')。在('you a human?')之前代码>机器人不会选中该框,因为它不是表单的一部分。还有一种蜜罐方法,将不可抗拒的输入字段放入表单中(如“注释”),然后用css/js隐藏它。如果数据存在,则发送方是机器人。我用过这个,效果出奇地好。仅供参考:我想问题是关于“我如何使用谷歌的reCAPTCHA启用此功能?”我很有信心我自己可以实现这个功能,但他们的案例并不是那么简单。如果你点击街景页面底部的报告问题,你会得到同样的新reCAPTCHA。这是我在搜索时第一次看到它并找到这个SO页面的地方。什么可以阻止机器人发送那个ajax请求?如果每个人(或一个半大型站点)都要实现这样的验证码,它肯定会被利用。Cloudflare有一个类似的机器人检测系统,它似乎可以在不需要用户做任何事情的情况下工作
<html>
<head>
<title>Contact</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
var onloadCallback = function () {
grecaptcha.render('dvCaptcha', {
'sitekey': '<%=ReCaptcha_Key %>',
'callback': function (response) {
$.ajax({
type: "POST",
url: "CS.aspx/VerifyCaptcha",
data: "{response: '" + response + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var captchaResponse = jQuery.parseJSON(r.d);
if (captchaResponse.success) {
$("[id*=txtCaptcha]").val(captchaResponse.success);
$("[id*=lblAlarm]").hide();
} else {
$("[id*=txtCaptcha]").val("");
$("[id*=lblAlarm]").show();
var error = captchaResponse["error-codes"][0];
$("[id*=lblAlarm]").html("RECaptcha error. " + error);
}
}
});
}
});
};
</script>
</head>
<body>
<form action="?" method="POST">
<div id="dvCaptcha" class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
<br />
<asp:Button ID="btnSubmit" runat="Server" Text="Send" OnClick="btnSubmit_Click" />
<asp:Label ID="lblAlarm" runat="server" ForeColor="Red"></asp:Label>
</form>
</body>
</html>
protected static string ReCaptcha_Key, ReCaptcha_Secret;
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(Request.Form["g-recaptcha-response"]))
{
// other code
} else
{
lblAlarm.Text = "reCAPTCHA failed.";
}
}