Cómo usar reCAPTCHA con Perl

Importante: Ya no se admite la versión 1.0 de la API de reCAPTCHA. Actualiza a la versión 2.0. Más información

El módulo de Perl de reCAPTCHA proporciona una manera sencilla de colocar un CAPTCHA en tu sitio web, lo que ayuda a evitar que los bots lo abusen. El módulo une la API de reCAPTCHA.

Para usar reCAPTCHA con Perl, puedes descargar el módulo de Perl de reCAPTCHA (aportado por Andy Armstrong). Deberás instalar este módulo en tu máquina (servidor web). El módulo depende de los módulos LWP::UserAgent y HTML::Tiny, que también deberán instalarse. Estas son algunas instrucciones básicas para instalar módulos de Perl.

Inicio rápido

Después de registrarte para obtener tus claves de API y descargar el módulo de reCAPTCHA Perl, a continuación encontrarás instrucciones básicas para instalar reCAPTCHA en tu sitio.

Del cliente (cómo hacer que aparezca la imagen CAPTCHA)

Si quieres usar el módulo de Perl para mostrar el widget de reCAPTCHA, debes insertar esta línea cerca de la parte superior del archivo con el elemento del formulario en el que se mostrará el widget de reCAPTCHA:

    use Captcha::reCAPTCHA;

Luego, debes crear una instancia de reCAPTCHA:

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

Por último, para mostrar el widget de reCAPTCHA, debes colocar la siguiente línea dentro de la etiqueta <form>:

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

Por lo tanto, tu código podría ser similar al siguiente:

    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

No olvides reemplazar your_public_key por el valor de tu clave de API.

En el servidor (cómo comprobar si el usuario ingresó la respuesta correcta)

A continuación, se muestra un esquema de cómo verificar la respuesta de 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";
    }

Material de lectura adicional

  • Cómo personalizar la apariencia
  • Sugerencias y lineamientos
  • Solución de problemas