В продолжение темы, я решил поделиться своим опытом борьбы с ботами.
Однако, в отличие от предыдущего поста, я решил обратиться к сторонним сервисам.
картинку нагуглил по запросу «спам» вот тут.
С чего все началось
Сразу оговорюсь, что речь пойдет о форуме на движке smf, но это совершенно не принципиально и справедливо для любого.
Итак, однажды я завел себе небольшой форум и первые пару месяцев было все хорошо: была стандартная капча, ни одного бота, и я уже начал считать, что так и будет всегда. Сперва они начали приходить по одному, затем больше и больше, и вот, когда их стало по 10-20 в день, я понял, что пришло время что-то менять.
Я пошел по стандартному пути: я решил, что капча проста до безобразия и надо какую-то другую. Взял гуглокапчу (reCAPTCHA), но это не только не остановило ботов, мне кажется, их стало даже больше. Тогда я отправился читать про разную экзотику и видел много чего любопытного: начиная от контрольных вопросов на естественным языке и заканчивая поворотом картинки под нужным углом.
Однако, было большое желание избавить пользователя от лишней работы при регистрации. Я даже ссылку на активацию аккаунта по почту не присылал. Первое решение которое я попробовал — это StopForumSpam.
Stop Forum Spam
Очень приятный сервис, представляет из себя blacklist ip адресов, email'ов и ников, под которыми регистрируются боты. Кроме того, почти для всех движков есть уже готовые плагины. Еще хочу отметить, что он не требует регистрации, чтобы получить доступ к api (речь идет только о получении информации, чтобы коммитить спамеров регистрироваться все же надо). Запрос информации — это обычный get запрос, все очень просто и понятно.
Сразу наступила радость, так как боты в одночасье пропали. Проблемы все же были: во-первых, буквально через пару недель, после того как я начал пользоваться, сервис ушел в оффлайн на несколько дней (заявляя, что переезд на другое железо), поэтому, в последствии, я сделал себе копию их базы, обновляя несколько раз в день. И, во-вторых, ботов 3-5 в неделю ботов все же пробивалось.
Можно было бы и наплевать, в конец концов не так много. Но интерес появился и я погуглил аналогичные сервисы.
Project Honey Pot
Следующей жертвой стал Project Honey Pot. Достаточно старый проект, муторная регистрация, муторная установка, муторная настройка и муторные запросы. Может, просто не распробовал.
Запросы напоминают RBL для борьбы с почтовым спамом: dns-запрос определенного вида. В ответ приходит тип и уровень угрозы.
Более того, готовый плагин к smf работать почему-то отказался. Но довести до конца хотелось, поэтому я дописал небольшой кусочек, который параллельно со stopforumspam делал запрос и результаты записывал в базу.
Общую статистику я приведу в конце, но сейчас скажу, что примерно треть спамеров пропускает.
Akismet
Изначально akismet разрабатывался как плагин к WordPress и начиная со 2ой версии включен в него по-умолчанию. Тоже хочет регистрацию и платный для коммерческого использования. К счастью, не мой случай.
Запросы — post определенного вида.
Хотя готового плагина я не нашел, есть масса примеров и библиотек, поэтому я без проблем его добавил к уже имеющимся.
Статистика
Хотя писать в базу результаты я начал не так давно, все же уже что-то есть.
Общее число запросов на регистрацию: 2624
Из них реальных людей: 75
Спамеров: 2549
По версии:
StopForumSpam: 98 / 2526
ProjectHoneyPot: 1067 / 1557
Akismet: 140 / 2484
Вместо заключения
Сейчас решение принимается по результатам StopForumSpam и Akismet, при регистрации задержка на запросы не заметна. Я думаю, что будут проблемы с таймаутами в том случае если сервисы будут недоступны, я уже занес в TODO list, но пока таких проблем не было.
После включения такой схемы на форум не пустили ни одного бота, в случае отказа боту показывают почту на которую можно пожаловаться, до сих пор ни одного письма я не получил.
А капчу я отключил…