Как защитить форум от спама

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

Принципы борьбы со спамом

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

Вот этот хак для smf:

в forum/sources/post.php, перед комментарием

// Check the subject and message.

Добавить код

if (substr_count(strtoupper($_POST['message']), '[URL]') > 1) {
 if ($user_info['posts'] < 5 || $user_info['total_time_logged_in'] > 60 || $user_info['is_guest']) {
           $post_errors[] = 'too_many_links';
     }
}

В /Themes/default/languages/Errors.english.php и Errors.russian-utf8.php описание ошибки, которое будет выводиться:

$txt['error_too_many_links'] = 'The message contains too many external links.';

и

$txt['error_too_many_links'] = 'В сообщении слишком много внешних ссылок.';

Хак выводит ошибку при постинге в сообщении более одной ссылки:
– гостям
– пользователям, у которых менее 5 сообщений
– пользователям, которые находятся на форуме меньше 60 секунд.

2. Запретите моментальную регистрацию на форуме, требуйте активацию по email (для SMF: members (пользователи) -> registration (регистрация) -> settings (настройки) -> Method of registration employed for new members (Способ регистрации новых пользователей) поставить “Member Activation” (активация пользователя)).Те, кто постит вручную, вряд ли станут заморачиваться регистрацией с активацией. Если форумок маленький и приватный, вообще разрешите регистрироваться только после одобрения администратора, а на странице регистрации попросите ставить в свой ник какой-либо опознавательный знак (@, например).

3. Выберите самый высокий уровень сложности капчи. Есть куча предложений по дополнительному усложнению распознавания капчи - recaptcha.net и подобные, но, на мой взгляд, эти методы усложняют жизнь больше обычным пользователям, чем спамерам. Это не самый эффективный способ остановки спама.

Рекапча

4. Создайте дополнительные поля при регистрации (мод custom.simplemachines.org/mods/index.php?mod=319 Custom Profile Field Mod для smf позволяет добавить произвольные поля при регистрации и соответствующие условия их проверки).

5. Особо настойчивых спамеров баним по e-mail или логину. Осторожнее с баном по IP, с этого IP могут постить не замышляющие ничего зловредного простые пользователи, так что применять его, как и бан по хосту, в крайнем случае.

6. Установите хак, так называемую верификацию (проверку) пользователя вопросами. При регистрации задается вопрос, правильный ответ на который может дать только человек. Проверено, надежно защищает форум от автоматических регистраций.

Хак Anti-Spam Verification Questions для SMF

custom.simplemachines.org/mods/index.php?mod=1516. Устанавливается достаточно быстро. Скачивать ничего не нужно, все равно вам придется его "доработать напильником", zip пакет модификации применим только для версии SMF 1.1.7. Напротив Manual Install Instructions for SMF выбираем свою версию форума, жмем кнопку parse и видим кучу кода. В каждом куске кода написано куда его вставлять.

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

Да, теперь капчу при регистрации можно вообще убрать, но вопросы старайтесь писать обдуманно, 2+2=?  не прокатит.