RSS-лента

Лучшие CMS интернета бесплатно для создания сайта

Сен
29

reCaptcha — хорошая защита от спама

Всем привет. Многие из вас видели такую капчу. Это не удивительно, ведь еe используют сейчас многие крупные ресурсы и движки. К примеру reCapcha используется при регистрации новых пользователей в Invision Power Board, livejournal и т.д. В общем не в последних конторах.

Как свидетельствуют копирайты проект reCapcha развивается институтом Кагнеги, а использовать ее, можно полностью бесплатно, правда нужна регистрация в системе.


капча

Что я могу вам сказать о reCapcha?

  Я использую ее в своих проектах при регистрации. Могу сказать, что за время которое она у меня установлена не было еще ни одной автоматической регистрации спамбота. Похоже пока OCR сервисам не по зубам эта капча.

Как вы наверняка обратили внимание, у reCAPTCHA имеется два слова для ввода, что практически не встречается у других капч. Дело в том, что пользователь при вводе первого слова доказывает, что он человек, а при вводе второго помогает распознавать старые книги и газеты. Вот так!

Какие плюсы в использовании reCapcha?

  1. Постоянное развитие.
  2. Поддержка голосового произношения слова (английский).
  3. Если капча составлена так, что ее не распознает человеческий глаз, ее можно обновить без перезагрузки страницы. Это особенно мне нравится, потому что, если вбил все регистрационные данные, а капчу не видно, ее можно обновить без потери введенных данных.

Вкратце так: на халяву мы получаем постоянно развивающееся, рабочее и простое решение по защите от роботов в виде капчи на сайт.

Как интегрировать в свой сайт/движок капчу?

  Отмечу сразу, что для многих CMS уже написаны плагины, позволяющие интегрировать reCapcha, список можно посмотреть тут, начиная с заголовка Plugins. Но прежде, чем начать использовать капчу все равно необходимо зарегистрироваться. Ну а теперь, я расскажу, как установить ее  в свои проекты.

  • Регаемся, входим в админку. Заметьте, что для этого необходимо иметь аккаунт на Google.

регистрация рекапча

  • На странице MY SITES вбиваем список сайтов, привязанных к аккаунту. Нужно вводить, каждый сайт, а не все разом,  затем что ему присваиваются два ключа Private и Public, которые нам еще понадобятся в дальнейшем.

Рекапча для сайта

  • Скачиваем библиотеку для вашего интерпретатора. Я качаю для PHP, но у них там есть порт для многих других (Perl, Ruby, Python, ASP.NET и другие).

Установка reCapcha на сайт.

  Итак, считаю что вы уже скачали библиотеку для PHP, создали файл index.php и открыли его для редактирования. То есть наши действия такие:

  1. Подключаем библиотеку:
    require(‘recaptcha/recaptchalib.php’);
  2. Вводим свои public и private ключи:
    $publickey = "ваш паблик ключ";
    $privatekey = "ваш приват ключ";
  3. Вызываем следующий код в том месте, где нужно вывести капчу:
    recaptcha_get_html($publickey,$recapcha_error);
  4. Вызываем код проверки рекапчи:
    $resp = recaptcha_check_answer($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"])

    У $resp есть переменная класса is_valid с типом bool. Она устанавливается в true, если капча введена верно, и соответственно в false, если неверно.

Полный код выглядит следующим образом:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Тест рекапчи</title>
</head>
<body>
<?
require('recaptcha/recaptchalib.php');
$publickey = 'ваш паблик код';
$privatekey = 'ваш приват код';
$recapcha_error = '';
if( isset($_POST['submit_capcha']) ){
$resp = recaptcha_check_answer($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);
if( $resp->is_valid ){
echo '<font color="blue">Капча введена правильно</font>';
}
else{
echo '<font color="red">Капча введена неправильно</font>';
}
}
?>
<div>
<form method="post">
Введите капчу<br />
<?= recaptcha_get_html($publickey,$recapcha_error); ?><br />
<input type="submit" name="submit_capcha" value="Протестировать рекапчу" />
</form>
</div>
</body>
</html>

И напоследок.

  Многие считают, что reCAPTCHA невозможно взломать (речь идет об автоматическом распознавании приведенного текста, без участия человека). Однако, судя по тенденциям, можно сказать что это не так. С течением времени reCAPTCHA понаделала различных подводных камней для систем автоматического распознавания капч. Среди них искривление текста, пересечение его полосами, так же недавно была введена функция, благодаря которой проверочное (известное системе) слово выглядит сдвоенным. Все это указывает на то, что reCAPTCHA все таки испытывает некоторые трудности с защитой.

На сегодня у меня все. Спасибо за внимание.

Получай первым обновления блога!

Введите Ваш e-mail:

Оставить комментарий


вверх