расставляй правильно приоритеты и не отвлекайся на мелочи

Защищаем PHPBB от спама и ботов с помощью reCaptcha

В предыдущей записке я уже писАл о простом методе искажения стандартной «капчи» PHPBB 2, для целей защиты от автопостинга и ботов, и как бы скептически некоторые не относились к этому методу, он до сих пор работает и успешно выполняет свою миссию, отделяя «котлеты от мух».

Сегодня же хотелось бы поговорить об еще одном действенном методе убивающим сразу двух зайцев. Я буду привязывать reCaptcha к PHPBB 2, да еще и на Windows платформе.

Что такое reCaptcha?
Очень сомневаюсь, что Вы еще не слышали о ней, но однозначно хотя-бы видели обычную «капчу». Те, кто еще вообще не знаком о том, как устроена методика распознавания действий человека от действий компьютера (бота, программ спам постинга и т.п.) могут бегло ознакомиться с термином Captcha и там-же вскольз узнать о том, что такое reCaptcha и понять почему Вы будете убивать двух зайцев — своего и чужого.

Лень кликать? Могу подытожить:

reCaptcha родилась в университетских стенах Carnegie Mellon University и косвенной причиной ее создания стала проблема оцифровки книг для проекта Internet Archive, когда системы оптического распознавания текста не справились со своей задачей ввиду сильной искаженности исходного текста и не смогли выполнить 100% распознавания.

Суть методики следующая: Вам предлагаются ввиде стандартной капчи два слова, одно заранее известно системе, т.е. уже распознано, другое нет. Если Вы правильно распознаете известное, значит система считает, что Вы возможно правильно ввели и то, которое еще небыло распознано. Для лучшей достоверности это слово предлагается для распознавания еще несколько раз другим пользователям системы. Таким образом Вы помогаете оцифровке книг и защищаетесь от ботов.

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

Таким образом, если Вы решили прикрутить сие чудо к своему PHPBB, а его можно использовать не только там, но и везде где Вам захочется (на официальном сайте уже есть ссылки на кучу готовых модулей для WordPress, Drupal, vBulletin и т.д.), то Вам необходимо выполнить несколько шагов, о которых и пойдет речь.

Вообще сейчас для PHPBB доступны два модуля — один для установки на странице регистрации и другой для гостевого постинга. Я буду рассматривать установку только для страницы регистрации, т.к. гостевой постинг у меня всегда отключен. (Принцип: «Хочешь сказать что то дельное и хочешь что-бы к тебе прислушались — представься пожалуйста», — снимает многие проблемы)

Итак, начнем.
Скачиваем свежий модуль, распаковываем архив и копируем файлы recaptchalib.php и usercp_register.patch в директорию PHPBB — includes, а файл profile_add_body.tpl.patch в директорию Ваших шаблонов (скинов, шкурок … не знаю как Вы их называете), у меня, к примеру, это без вариантов — templates/subSilver/.
По инструкции пытаемся пропатчить код PHPBB. Заходим в includes, и без намека на подвох запускаем магическую команду:

patch -b usercp_register.php < usercp_register.patch

и получаем ответ:

«patch» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

из которого вполне очевидно, что мы не такие «крутые программеры» у которых всегда под рукой есть такие замечательные утилитки как patch, diff и т.п., а «изготовители» модов для PHPBB наверняка настолько увязли в Linux’е, что посчитали без надобности объяснять, как такое легко сделать под Windows.

Что-ж, придется ставить магическую утилитку patch, если таковой нет. Ее можно взять либо из проекта Cygwin, либо напрямую отсюда из GnuWin32.

Устанавливаем ее, снова запускаем команду и получаем новую ошибку:

patching file usercp_register.php
Assertion failed: hunk, file ../patch-2.5.9-src/patch.c, line 354

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application’s support team for more information.

Что-бы понять причину проблемы мне пришлось очень активно «порыться» в Интернет. Хотя, как оказалось, проблема на виду и кроется в Unix формате патч файлов usercp_register.patch и profile_add_body.tpl.patch (Unix строки заканчиваются одним символом LF, тогда как в Windows необходимо два CR+LF). Поэтому в Windows, формат файлов надо перевести в «нужный», к примеру так:

more usercp_register.patch >usercp_register.new.patch
more profile_add_body.tpl.patch >profile_add_body.tpl.new.patch

Все, наконец-то, после всего этого можно спокойно выполнить патчинг, немного добавив параметров:

patch -lb usercp_register.php -i usercp_register.new.patch

patch -lb profile_add_body.tpl -i profile_add_body.tpl.new.patch

С установкой закончили, переходим к конфигурированию и запуску.

Регистрируемся на reCaptcha сайте, добавляем в профиль свой домен и получаем личные public и private ключи, которые вставляем в соответствующие значения переменных $recaptcha_public_key и $recaptcha_private_key, находящиеся в файле usercp_register.php (тот, который в папке includes/).

Теперь последний важный аккорд, заставляем reCaptcha выглядеть по русски (на досуге можно даже заняться его кастомизацией).

Я просто добавил в начало файла profile_add_body.tpl следующее:

<script>
var RecaptchaOptions = {
lang : ‘ru’
};
</script>

На этом все, Вы должны получить что-то типа такой reCaptch’и (будьте здоровы :) ):

6 комментариев на статью:
  1. Anonymous:

    Как установить магическую утилитку patch на платном сервере?

    • DedaGena:

      Ради такого дела решил здесь зарегится и немного отписать).Заказывал прогон по доскам , прогон выполнялся несколько раз в течении месяца, все выполнялось четко, в срок, в общем человек что обещает, то и делает. Пишу сюда, так как дали ссылку на топик для выражения благодарности и для того чтобы оставить положытельный отзыв

  2. bridennis:

    Да вобщем то так-же как описано, только файл usercp_register.php заранее пропатчить у себя локально.
    Если нужна «возмездная» помощь, — пишите на мыло.

  3. Toha:

    Статья конечно интересная, но я не пойму какую там команду надо запускать?

  4. T-Pain Fights Off Auto Intruders, On ‘When I Was 17′ « hotelsinnewyorknyc:

    […] cpa courses free cpa networks free cpa offers Share this:TwitterFacebookLike this:LikeBe the first to like this post. […]

  5. Lengvvist:

    Знаю таких. Норм ставят. Я тебе в личку напишу тел.

Ответить
Обязательные поля помечены *