0

我正在开发一个投票应用程序,人们可以根据需要进行多次投票,我希望在其中添加一个 reCaptcha 复选框,而不是让人们必须在几票后填写检查图像,我'宁愿让他们每次都填写复选框。

我尝试将安全级别更改为最低设置,但它在大约两三票后仍然显示测试。

我知道在安全方面这不是一个好主意,但是让人们每次检查多张图像而不是仅仅单击一次,这对阻止垃圾邮件程序有一些很好的帮助,这感觉不太好。

我正在开发一个 Django 应用程序并使用Django-reCaptcha 2实现了 reCaptcha 。

4

2 回答 2

3

Google 的 reCAPTCHA 2.0 文档中没有任何地方声明您可以执行此操作。我会假设,基于对 CAPTCHA 工作原理的一些研究,用户不可能仅设置 CAPTCHA 复选框。

Google 的 reCAPTCHA 使用各种测试,包括请求跟踪、页面交互跟踪、滚动跟踪和击键跟踪,以尝试检测网站上的用户是否为人类。您可以在此处阅读有关此内容的更多信息:http: //scraping.pro/no-captcha-recaptcha-challenge/

如果 Google 不能以足够高的确定性假设用户是人类,那么它将显示挑战以尝试验证这一点。

正如您所说,您可以降低管理设置中的安全级别,这将降低谷歌验证用户为人类所需的阈值,但如果仍未满足,则会提出挑战。

在您的情况下,它工作了几次然后向您提出挑战,这可能是因为 Google 检测到您的请求计数异常,因此无法保证您达到验证您是人的最低阈值。因此,您会受到挑战。

因此,总而言之,您似乎不能仅将其更改为复选框,因为 Google 仍然需要能够获得足够的数据来证明用户是人类。

但是,在您想象的最低安全级别设置中,大多数真实用户只会收到复选框。

您还可以检查在reCAPTCHA 管理面板中生成了多少挑战,如下所述:

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

于 2017-02-03T05:16:58.287 回答
-1

索引.html

<html>
      <head>
        <title>Google recapcha demo - Codeforgeek</title>
        <script src='https://www.google.com/recaptcha/api.js'></script>
      </head>
      <body>
        <h1>Google reCAPTHA Demo</h1>
        <form id="comment_form" action="form.php" method="post">
          <input type="email" placeholder="Type your email" size="40"><br><br>
          <textarea name="comment" rows="8" cols="39"></textarea><br><br>
          <input type="submit" name="submit" value="Post comment"><br><br>
          <div class="g-recaptcha" data-sitekey="=== Your site key ==="></div>
        </form>
      </body>
    </html>

验证.php

<?php

        $email;$comment;$captcha;
        if(isset($_POST['email']))
          $email=$_POST['email'];
        if(isset($_POST['comment']))
          $comment=$_POST['comment'];
        if(isset($_POST['g-recaptcha-response']))
          $captcha=$_POST['g-recaptcha-response'];

        if(!$captcha){
          echo '<h2>Please check the the captcha form.</h2>';
          exit;
        }
        $response=json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=YOUR SECRET KEY&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']), true);
        if($response['success'] == false)
        {
          echo '<h2>You are spammer ! Get the @$%K out</h2>';
        }
        else
        {
          echo '<h2>Thanks for posting comment.</h2>';
        }
?>
于 2017-02-03T05:02:46.883 回答