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 reCAPTCHA Perl proporciona una forma sencilla de colocar un CAPTCHA. en tu sitio web y así evitar que los bots lo abusen. El módulo incluye la API de reCAPTCHA:

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

Inicio rápido

Después de registrarte para obtener tus claves de API y descargar el módulo de reCAPTCHA Perl, sigue estas 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, deberás insertar esta línea cerca de la parte superior del archivo con el elemento del formulario en el que se encontrará el widget de reCAPTCHA se muestra:

    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 del <form> etiqueta:

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

Por lo tanto, es posible que tu código se vea 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 probar si el usuario ingresó la respuesta correcta)

A continuación, se muestra un esqueleto 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";
    }

Lecturas adicionales

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