Мар 10

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

Рубрики: Новости Метки: ,  Количество просмотров: 2 280

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

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

recapcha

Что я могу сам сказать о рекапче?

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

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

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

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

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

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

  1. Регаемся, входим в админку
  2. На странице MY SITES вбиваем список сайтов, привязанных к аккаунту. Вводить каждый сайт нужно затем, что ему присваются два ключа Private и Public, которые нам еще понадобятся.
  3. Скачиваем библиотеку для вашего интерпретатора. Я качаю для PHP, но у них там есть порт для многих других (Perl, Ruby, Python, ASP.NET и другие).

Итак, считаю что вы уже скачали библиотеку для 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>

Посмотреть тестовый пример можно тут:
http://www.samborsky.com/sources/recapcha/

Спонсоры поста:
Дешевые часы breitling replica по низкой цене.
Оптимизация сайта, поисковое продвижение, от студии se7.ru
Хорошая и высокооплачеваемая работа в Одессе. Сайт бесплатных объявлений.

Другие статьи автора

Комментарии

  1. Цитировать Dimox

    Ужаснейшая капча. Сколько раз она мне попадалась, ни разу с первого раза не удавалось набрать. Да и вообще любая капча – зло =)

  2. Цитировать Sk8er

    Капча то хорошая, но многим юзерам не нравится… Не советовал бы старить… Сделать бы русский аналог, чтоб на русском вводить, тогда другой разговор :)

  3. Цитировать AngelOfFate

    Dimox, а что лучше вместо нее юзать?

  4. Цитировать Dimox

    AngelOfFate, есть разные альтернативные способы, например, подстановка «левого» поля, проверка на поддержку куков и/или JavaScript. Ну или, на крайний случай, арифметическая капча – элементарное арифметическое действие произвести проще, чем пытаться разобраться, что же там за буквы понаписаны.

  5. Цитировать azbuka

    Меня тоже бесит эта капча, по сто раз приходится набивать, пока правильно не набьешь. Что она работает -это конечно хорошо. Кстати, Жень, насколько я помню ты там сам разработал капчу, видимо не долго она продержалась :)

  6. Цитировать Simao

    Ненавижу эту капчу. Даже вроде правильно пишешь – а она всё рабно ошибку выбивает. Для проектов лучше такую не использовать – сразу портится настроение и теряется интерес

  7. Цитировать Samborsky

    Да, если честно, заставили меня задуматься…
    Быть может если ее убрать и регистраций будет побольше?!

    Насчет проверки на Javascript – здравая мысль, потому что в основном роботы не эмулируют JS, т.к. процесс сабмита будет очень долгим…

    Сделаю-ка я у себя на рыбалке регистрацию чисто на JavaScript, посмотрим что из этого выйдет.

    Кстати, Жень, насколько я помню ты там сам разработал капчу, видимо не долго она продержалась :)

    Не в том дело. Просто я обновил свой IPB на последнюю версию, а там как раз по умолчанию встроена эта капча. Менять ничего не стал.

  8. Цитировать azbuka

    Ты раскручиваешь рыбалку?

  9. Цитировать Samborsky

    Ты раскручиваешь рыбалку?

    Та пока в яндексе покупаю траф ч-з директ

  10. Цитировать Dimox

    Да, Женя, использование этой капчи наверняка сказывается на количестве регистраций. Так что экспериментируй =)

  11. Цитировать azbuka

    Ну если мне интересен ресурс, я все равно там зарегюсь независимо от капчи.

  12. Цитировать Глеб

    Как пользователю, мне эта капча нравится (хотя то, что надо вводить два слова, немного сбивает с толку сначала). Но попытался тут использовать её на одном проекте – не вышло, потому что внешний вид настраивается плохо, не удалось вписать в дизайн.

  13. Цитировать Simao

    Зато когда нажать «капча звуком» очень прикольно получается. Поржать можно от души. Это по сути единственное достоинство этого творения.

  14. Цитировать vint

    Да, в интеграции данная капча – просто зло. Пытаюсь сейчас имплементировать вариант под ruby – никак не выводится «сама капча». Отсюда стало интересно (быть может проблема в этом) – а нафига ключи? Что они дают? Ибо у меня в html коде появляется кусочек кода + пустой ифрейм. Капча должна притти с их сервера? По тому ключу, что я получил у них?

  15. Цитировать Samborsky

    а нафига ключи? Что они дают? Ибо у меня в html коде появляется кусочек кода + пустой ифрейм. Капча должна притти с их сервера? По тому ключу, что я получил у них?

    Думаю эти ключи не играют какую-то роль.
    Я например регистрировал ключ на rybalka.tv, а капча вполне себе появлялась на локалхосте, где я тестирую.

    По руби ничем помочь не могу, я юзаю php библиотеку рекапчи.

  16. Цитировать моё

    а не могли бы вы по-подробнее рассписать установку рекапчи для джумлы.
    ————————-
    Исходные данные:
    сайт на джумле 1.0.13. скачал капчу 0.0.4 (там как раз есть для джумлы 1.0.13). скачал библиотеку для PHP.
    ————————-
    требуется чтобы пользователи регистрировались на главной сайта через капчу.
    спасибо

  17. Цитировать моё

    имеется ввиду что куда распихивать. ставить через админку или можно так – по фтп? для особо одаренных )))

  18. Цитировать Samborsky

    Извиняюсь, но с джумлой не работал, подсказать ничего не могу, т.к. не знаю как у них там что устроено

  19. Цитировать моё

    спасибо.
    разобрался. в архиве два зипа. один ввиде компонента, другой ввиде модуля. ставим сначала компонент, потом модуль. ставим станадртно – через админку джумлы. потом отключаем стандартный модуль логина:com-login и включаем рекапча. в настройках компонента reCaptcha – надо ввести ключи, которые надо получить на сайте reCaptcha.
    вроде всё. по крайней мере работает ;)

  20. Цитировать Holy Diver

    Как-то раз заказывал платных постеров для одного форума, так каждый третий потом жаловался что не может зарегистрироваться из-за капчи. Но со временем таких становилось всё меньше и меньше, видимо парни работают над читабельностью капча-текстов =)

  21. Цитировать vvs

    Да, сиё творение и мне жудко не нравится :(

    Но вот тут же нет никаких каптч! И спама особо не видно!

Добавить комментарий