Redescubrí reCAPTCHA.net
CAPTCHA, es una solución para hacer stop a robots. Programáticamente responde a la pregunta “¿El usuario es humano o robótico?”.
Justo ayer viendo algunos videos de Matt Cutts, en uno dedicado a responder por qué Google no usa reCAPTCHA.net, me dí cuenta que nunca habáa podido usar reCAPTCHA, porque solo estaba disponible en inglés. Ahora está disponible en español, asique, ¿por qué en vez de usar una librería local, no uso un webservice para implementar CAPTCHA en mi siito? Bueno para que veas que bien funciona, una implementación de ejemplo en Perl, es así:
Requisitos:
- Ingresar en reCAPTHA.NET, inscribirse y agregar tu sitio.
- Instalar el modulo Perl Captcha::reCAPTCHA
Ejemplo: captcha.cgi
#!/usr/bin/perl
use strict;
use CGI qw/:standard/;
use Captcha::reCAPTCHA;
my $c = Captcha::reCAPTCHA->new;
my %o = ('lang' => 'es', 'theme' => 'clean');
Output form
get_html( $pubkey, $error, $use_ssl, $options )
print header,
start_html(‘A Simple Example’),
h1(‘A Simple Example’),
start_form,
“What’s your name? “,textfield(‘name’),p,
“What’s the combination?”, p,
checkbox_group(-name=>‘words’,
-values=>[‘eenie’,’meenie’,’minie’,’moe’],
-defaults=>[‘eenie’,’minie’]), p,
“What’s your favorite color? “,
popup_menu(-name=>‘color’,
-values=>[‘red’,’green’,’blue’,’chartreuse’]),p,
$c->get_html( ‘AQUI PONES TU CLAVE PUBLICA’, undef, undef, %o),
submit,
end_form,
hr;
if (param()) {
my $name = param(‘name’);
my $keywords = join ‘, ‘,param(‘words’);
my $color = param(‘color’);
print “Your name is”,em(escapeHTML($name)),p,
“The keywords are: “,em(escapeHTML($keywords)),p,
“Your favorite color is “,em(escapeHTML($color)),
hr;
my $result = $c->check_answer(
‘AQUI PONES TU CLAVE PRIVADA’, $ENV{‘REMOTE_ADDR’},
param(‘recaptcha_challenge_field’),
param(‘recaptcha_response_field’)
);
if ( $result->{is_valid} ) {
print “Yes!”;
} else {
Error
my $error = $result->{error};
print “Error “ . $error ;
}
}
print end_html;
</code>