Нашествие ботов

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

Я принимал меры по очистке, но иногда под репрессии попадали и живые люди. Что ж?! Это занимало прилично времени, так как процедура удаления через WordPress совсем небыстрая и, как ранее сказал, не лишена ошибок в выполнении.

В какой-то момент мне это надоело, но регистрацию мне закрывать не хочется, как и не хочется тратить время на очистку рядов пользователей и уж тем более их терять. Сел недавно думу думать, чтобы понять по какому признаку можно определить, что пользователь ненастоящий? В чистом WordPress с этим большая проблема, да и сериализация в свойствах — такое себе, если делать решение чисто внутри базы данных. У меня в бою установлен плугин User Activation Email, который для реальных пользователей проставляет статус активный, а остальных просит подтвердить себя.

Анализ показал, что запись пользователей идёт в две таблицы, одна из которых является свойствами пользователя. Удалять нужно записи в двух, чтобы ничего не осталось от бота. Вспомнил синтаксис и написал скрипт в два прохода (создание временной таблицы с такими пользователями и удаление их в базах). Оттестировал на дампе — работает. Проверил в бою — удаление более ста пользователей — менее секунды! Мне бы потребовалось на это минут пятнадцать минимум, если не полчаса.

Автоматизировать скрипт по времени не стал. Могу раз в неделю или месяц запускать для очистки самостоятельно. Также не стал заниматься оптимизацией его работы, так как это не имеет смысла в моих условиях.

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