ReCAPTCHA на Perl
Все знают про так называемые тесты Тьюринга, призванные выявить у подопытных наличие хотя бы какого-то разума. Создание подобных тестов достаточно сложная штука, ведь ради политкорректности принято считать что разумом обладают по меньшей мере 95 % людей.
Но тем не менее, иногда это получается и мы можем наблюдать достаточно успешный проект ReCAPTCHA. Помимо своей основной задачи (сопротивления ордам роботов), данный проект также помогает другим, хорошим роботам читать книжки.
Для того, чтобы внедрить тест Тьюринга в свой скрипт на Perl, надо:
-
Создать приватный и публичный ключи для своего сайта. Это делается здесь https://www.google.com/recaptcha/admin/create, потребуется аккаунт на гугле.
-
Установить Perl модуль ReCAPTCHA. В зависимости от ОС на сервере это делается по-разному. Для CentOS например так:
yum install perl-Captcha-reCAPTCHA
В скрипт, ответственный за вывод формы добавления комментариев надо подключить этот модуль
use Captcha::reCAPTCHA;
-
Внутри формы надо вывести html-код ReCAPTCHA. your_public_key надо заменить на публичный ключ, полученный при регистрации.
my $c = Captcha::reCAPTCHA->new; print $c->get_html("your_public_key");
-
Вот пример скрипта проверки правильности введения капчи. your_private_key следует заменить на приватный ключ, который вам дали при регистрации.
use Captcha::reCAPTCHA; use CGI; my $c = Captcha::reCAPTCHA->new; my $query = new CGI; my $challenge = $query->param('recaptcha_challenge_field'); my $response = $query->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"; }
Как видно, рекапча сохраняет для себя IP-адрес человека, писавшего комментарий. Возможно, что это нужно для сбора данных о попытках автоматизированного подбора такой капчи. Но скорее всего, это еще один шаг гугла для лишения нас всех анонимности. Так что если вы вводите где-то комментарий в систему, защищенную рекапчей, то знайте, что ваш IP-адрес, соотнесенный с этим комментарием, будет знать гугл.
Обновлено 07.09.2010 18:19
