Perl で reCAPTCHA を使用する

重要: reCAPTCHA API のバージョン 1.0 のサポートは終了しました。バージョン 2.0 にアップグレードしてください。詳細

reCAPTCHA Perl モジュールを使用すると、ウェブサイトに CAPTCHA を簡単に配置して、bot による悪用を防ぐことができます。このモジュールは、reCAPTCHA API をラップしています。

Perl で reCAPTCHA を使用するには、reCAPTCHA Perl モジュール(Andy Armstrong 提供)をダウンロードしてください。このモジュールは、マシン(ウェブサーバー)にインストールする必要があります。このモジュールは LWP::UserAgent モジュールと HTML::Tiny モジュールに依存しており、どちらもインストールする必要があります。Perl モジュールのインストールに関する基本的な手順をご覧ください。

クイック スタート

API キーを登録して reCAPTCHA Perl モジュールをダウンロードしたら、以下の基本的な手順に沿ってサイトに reCAPTCHA をインストールします。

クライアント サイド(キャプチャ画像の表示方法)

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

関連情報

  • デザインのカスタマイズ
  • ヒントとガイドライン
  • トラブルシューティング