Como usar o reCAPTCHA com Perl

Importante: não há mais suporte para a versão 1.0 da API reCAPTCHA. Faça upgrade para a versão 2.0. Saiba mais

O módulo reCAPTCHA Perl oferece uma maneira simples de colocar um CAPTCHA no seu site, ajudando a impedir que bots abusem dele. O módulo encapsula a API reCAPTCHA.

Para usar o reCAPTCHA com Perl, faça o download do módulo reCAPTCHA Perl (contribuição de Andy Armstrong). Você precisará instalar esse módulo na sua máquina (servidor da Web). O módulo depende dos módulos LWP::UserAgent e HTML::Tiny, que também precisam ser instalados. Veja algumas instruções básicas sobre como instalar módulos Perl (link em inglês).

Início rápido

Depois de se inscrever para usar suas chaves de API e fazer o download do módulo reCAPTCHA Perl, veja abaixo as instruções básicas para instalar o reCAPTCHA no seu site.

Lado do cliente (como fazer a imagem do CAPTCHA aparecer)

Se você quiser usar o módulo Perl para mostrar o widget reCAPTCHA, insira esta linha perto da parte de cima do arquivo com o elemento de formulário em que o widget reCAPTCHA vai ser exibido:

    use Captcha::reCAPTCHA;

Em seguida, crie uma instância do reCAPTCHA:

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

Por fim, para exibir o widget reCAPTCHA, você precisa colocar a seguinte linha dentro da tag <form>:

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

Seu código vai ficar assim:

    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

Não se esqueça de substituir your_public_key pelo valor da sua chave de API.

Lado do servidor (como testar se o usuário inseriu a resposta certa)

Confira abaixo o modelo de como verificar a resposta 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";
    }

Leitura complementar

  • Como personalizar a aparência
  • Dicas e diretrizes
  • Solução de problemas