将 reCAPTCHA 与 Perl 搭配使用

重要提示:reCAPTCHA API 1.0 版已不再受支持,请升级到 2.0 版。了解详情

reCAPTCHA Perl 模块提供了一种在网站上放置人机识别系统的简单方法,可帮助您阻止漫游器滥用该功能。该模块封装了 reCAPTCHA API

如需将 reCAPTCHA 与 Perl 搭配使用,您可以下载 reCAPTCHA Perl 模块(由 Andy Armstrong 提供)。您需要在机器(网络服务器)上安装此模块。该模块依赖于模块 LWP::UserAgentHTML::Tiny,这两个模块也需要安装。以下是一些安装 Perl 模块的基本说明

快速入门

注册 API 密钥并下载 reCAPTCHA Perl 模块后,以下是在网站上安装 reCAPTCHA 的基本说明。

客户端(如何显示人机识别系统图片)

如果您想要使用 Perl 模块来显示 reCAPTCHA widget,则需要在包含表单元素(将显示 reCAPTCHA widget)的文件顶部附近插入下面这行代码:

    use Captcha::reCAPTCHA;

然后,您需要创建一个 reCAPTCHA 实例:

    my $c = Captcha::reCAPTCHA->new;

最后,如需显示 reCAPTCHA widget,您必须将以下代码行置于 <form> 标记内:

    print $c->get_html("your_public_key");

因此,您的代码可能如下所示:

    use Captcha::reCAPTCHA;

    my $c = Captcha::reCAPTCHA->new;

    print <<EOT;
    <html>
      <body>
        <form action="" method="post">
    EOT

    print $c->get_html("your_public_key");

    print <<EOT;
        <input type="submit" value="submit" />
        </form>
      </body>
    </html>
    EOT

不要忘记将 your_public_key 替换为您的 API 密钥的值。

服务器端(如何测试用户是否输入了正确答案)

以下骨架展示了如何验证 reCAPTCHA 答案:

    use Captcha::reCAPTCHA;

    my $c = Captcha::reCAPTCHA->new;

    my $challenge = param 'recaptcha_challenge_field';
    my $response = param 'recaptcha_response_field';

    # Verify submission
    my $result = $c->check_answer(
        "your_private_key", $ENV{'REMOTE_ADDR'},
        $challenge, $response
    );

    if ( $result->{is_valid} ) {
        print "Yes!";
    }
    else {
        # Error
        print "No";
    }

延伸阅读

  • 自定义外观和风格
  • 提示和指南
  • 问题排查