Всячина → Атака роботов
Началось... На неделе просматривал логи сервера и заметил, что мне в блог роботы пишут комментарии. Однако данные приходили от них невалидные, а по моему недосмотру это приводило к 500-й ошибке, так как перенаправление со страницы обработчика формы на страницу записи происходило только для валидных данных.
Любопытство взяло вверх, был написан кусочек кода, сохраняющий эту бессмысленную спамную информацию в отдельную таблицу, а заодно и 500-ошибку убрал. Закоммитил изменения, залил на живой сайт. А с утра началось. Причём не в спамную таблицу, а сразу на сайт, чего ранее не наблюдалось ни разу. Причины сего явления мне неизвестны, такое чувство, что боты чему-то обучились.
Способ борьбы с ними определился сразу. Изначально при разработке этого блога я написал action, который принимал отправленную форму с данными для комментария по обычной схеме, а потом реализовал добавление комментариев при помощи AJAX, добавление же комментариев с перезагрузкой страницы оставил на тот случай, если у человека отключен JavaScript или не поддерживается как таковой (да да, я знаю таких параноиков людей, которые сидят с выключенным ява-скриптом, и при этом ругаются, что на многих сайтах не работает базовый функционал.) Так вот роботы лезли именно через экшн без ява-скрипта. Поразмыслив, оставил добавление комментариев только через ajax, а остальное - сразу в спам. Людей без скрипта сразу и предупредил посредством надписи в div-е, который скриптом же и скрывается.
Можно было, конечно, и CAPTCHA какую поставить, но я не фанат. Иногда соберёшься накатать где-то камент, а там каптча матановая - сразу же порыв исчезает :)
P.S. Использование JavaScript не есть панацея от спама. В двух проектах уже писал автоматические функциональные тесты сайтов, где ява-скрипт прекрасно роботом интерпретируется, посредством того же sahi, например, так что принципиальной невозможности тут нет, просто на данный момент примитивных ботов-спамеров куда больше, чем не примитивных :)
Комментарии
С мусором, действительно, замучаться можно. В мой спамоуловитель попадает больше полусотни сообщений в день :)
Пыталась закрыть комментарии без referer.
Идея была о том, что если человек не загружал страницу, значит это тупо робот напрямую шлет комментарий.
Но спама по-прежнему много (((
Ещё у меня подозрение есть, что в строки кода в записи Тег more, как избавиться... прокрались ошибки, связанные с одинарными и двойными кавычками, но это только подозрения, утверждать не буду. Пишу об этом здесь, т.к. там каменты вообще закрыты.