这个checkbox是如何工作的?怎样才能使用它?

我最近注册了oneplusone网站https://account.oneplus.net/sign-up ,并注意到这个checkboxrecaptcha

复选框recaptcha

它是如何工作的,我怎样才能在我的网站上使用它? 比那些神秘的文字/数字好多了:)

recaptcha网站没有提及任何新的recaptcha方法… https://www.google.com/recaptcha/intro/index.html

这是reCAPTCHA的testing版API。 我从他们的JS API的源头收集了这个: https : //www.google.com/recaptcha/api.js引用“API2”。 而且我也发现这个: http : //jaswsinc.com/recaptcha-ads/显然他们做了一个“不需要CAPTCHA reCAPTCHA”的邀请testing版,所以……你可能无法使它工作您的网站,但。 我找不到任何关于selectBeta的信息,但是如果您search“No CAPTCHA reCAPTCHA beta”,您可以看到许多提到从Google收到电子邮件的人join。

如果你find一个地方进入testing版,请分享! 否则,看起来公开发布即将在2015年…

此条目不回答原来的问题,但它有助于实施类似的解决scheme。 正如@IanM所说的那样,checkboxrecaptcha处于testing阶段,不能在没有邀请的情况下使用。

重要编辑 Google推出了新的reCAPTCHA

  • Google在线安全博客:你是机器人吗? 介绍“无CAPTCHA reCAPTCHA”
  • Google reCAPTCHA:介绍新的reCAPTCHA!

这是一个基于JavaScript的validation码。

由于大多数垃圾邮件不执行JavaScript,无法识别显示的文本和DOM之间的相关性或所需的操作,因此无法单击该checkbox。

请注意,根本没有checkbox,它只是一个具有一些CSS样式的div元素。 Spambots正在尝试填写表单input元素,但是CAPTCHA中没有任何input。 复选标记只是另一个div(css类)。

当你点击这个框时,ajax请求会通知服务器单击div,服务器将这些信息存储在一个临时存储器中(标记该令牌:这个令牌是由一个人激活的)。 当您提交表单时,隐藏字段会发送已激活的令牌,然后当服务器validation表单信息时,它会识别该令牌已激活。 如果令牌未被激活,则表单将失效。

要点中的步骤:

  • 生成一个唯一的标识符并将其添加到隐藏input的表单
  • 在网站上显示checkbox(不使用<input>元素,可能使用<div> ),并将之前生成的标识符添加到该元素中(可以使用html5 data-*属性)
  • 当用户点击checkbox时,向服务器发送一个ajax请求并validationvalidation码,如果有效,则将其标记为in use 。 (显示结果 – 标识符正确/不正确 – 给用户)
  • 当用户发送表单时,表单的数据包含标识符。 再次检查,应该存在,应该in use状态。
  • 如果所有的validation都通过了,表单的数据就可以使用/处理了

您可以将标识符绑定到用户的会话,IP地址,和/或您可以使用时间限制来提高安全性。

注意这种validation码只适用于启用JavaScript的情况!

注意 (编辑1)正如@crazypotato所说,有一些自动化工具可以执行JavaScript,这些工具也能够发送正确的AJAX请求,并在checkboxdiv上触发Click事件。

注意 (编辑2)请注意,写入一个站点或打破一种types的validation码的脚本迟早会获得。 没有最终的保护,你只能让机器人(或他们的开发人员)更努力地工作。

注意 (编辑3)在这个答案中的步骤和描述只包含这种types的validation码的基本信息,你总是需要添加额外的validation和安全措施,以使其更安全。 例如,Google noCaptcha在3“div点击”之后系统地启动一个标准的reCaptcha。

这里是我的代码在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(); 

🙂

我来到这里寻找答案,所以我一直在寻找答案。

我的search后,这个窗口仍然是打开的,所以我正在更新这个职位,我的发现。

这里是您可以了解reCAPTCHA的地方

http://scraping.pro/no-captcha-recaptcha-challenge/

基本上,但是,您将其添加到您的网页:

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

要获取您的reCAPTCHA密钥,请转到此Google网站:

https://www.google.com/recaptcha/intro/index.html

使用上面的链接获得您的密钥后,您可以使用以下Google信息深入了解其编码:

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

注意:

从Google文档:

该脚本必须使用HTTPS协议加载,并且可以从页面上的任何位置被包括而不受限制。

以下是我如何运作的一个例子:

 <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(rd); 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> 

如果您需要在ASP.NET代码隐藏中进行validation,只需validation“g-recaptcha-response”控件是否已填写:

 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."; } } 

希望你们有些人觉得这很有用。

谢谢大家对这个主题的贡献,很高兴看到有这么多人对这个新的recaptcha工具感兴趣。

我找不到它的.net实现,所以build立了一个简单的Web表单控件,你可以在这里findhttps://github.com/pnmcosta/recaptchav2dotnet