Использование reCAPTCHA с Perl

Важно : версия 1.0 API reCAPTCHA больше не поддерживается, обновите ее до версии 2.0. Узнать больше

Perl-модуль reCAPTCHA предоставляет простой способ разместить CAPTCHA на вашем веб-сайте, помогая вам не дать ботам злоупотреблять ею. Модуль оборачивает API reCAPTCHA .

Чтобы использовать reCAPTCHA с Perl, вы можете загрузить Perl-модуль reCAPTCHA (предоставленный Энди Армстронгом). Вам необходимо будет установить этот модуль на свой компьютер (веб-сервер). Модуль зависит от модулей LWP::UserAgent и HTML::Tiny , оба из которых также необходимо установить. Вот несколько основных инструкций по установке модулей Perl .

Быстрый старт

После того как вы подписались на получение ключей API и загрузили Perl-модуль reCAPTCHA, ниже приведены основные инструкции по установке reCAPTCHA на ваш сайт.

Клиентская часть (Как сделать так, чтобы изображение CAPTCHA отображалось)

Если вы хотите использовать модуль Perl для отображения виджета reCAPTCHA, вам нужно будет вставить эту строку в начало файла с элементом формы, где будет отображаться виджет reCAPTCHA:

    use Captcha::reCAPTCHA;

Затем вам необходимо создать экземпляр reCAPTCHA:

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

Наконец, чтобы отобразить виджет reCAPTCHA, вы должны поместить следующую строку внутри тега <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";
    }

Дальнейшее чтение

  • Настройка внешнего вида
  • Советы и рекомендации
  • Поиск неисправностей