TorrentPier 3.0: встроенная защита от спама

Exile

Administrator
Привет.

Продолжаем серию статей о том, что появится в новой мажорной версии проекта.

Сегодня поговорим о давно назревшей теме – защите от спама. Раньше с ботами и спамерами каждый администратор разбирался сам: ставил капчу, банил вручную, чистил базу. В версии 3.0 мы встроили в движок полноценную подключаемую систему проверки пользователей и контента с поддержкой нескольких внешних провайдеров.

Что было​

Никакой встроенной защиты от спама в TorrentPier не было. Максимум – капча при регистрации и ручная модерация. Если бот проходил регистрацию, он мог свободно постить спам, рассылать личные сообщения, а администратор узнавал об этом постфактум, когда форум уже был засорен.

Типичный сценарий: спамер регистрируется через Tor или прокси, создает с десяток тем с SEO-ссылками, рассылает ЛС другим пользователям – и все это за пару минут. Пока администратор заметит и забанит – вред уже нанесен.

Что стало​

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

Провайдеры​

Провайдеры – это источники данных для принятия решений. Каждый отвечает за свою область. Можно включить один, можно все сразу – результаты агрегируются, побеждает самый строгий вердикт.
  • BannedUsers – проверяет IP и email по локальной бан-листе. Работает без внешних запросов, мгновенно.
  • SpamPhrases – ищет стоп-слова в тексте сообщений. Поддерживает точное совпадение по границам слов и регулярные выражения. Удобно для блокировки типичных спам-паттернов вроде ссылок на казино, криптобиржи и прочий мусор.
  • StopForumSpam – один из крупнейших спам-реестров в интернете. Проверяет IP, email и username по базе данных известных спамеров. Поддерживает два порога: moderate_threshold (отправить на модерацию) и deny_threshold (заблокировать полностью).
  • Project Honey Pot – DNS-проверка угроз по базе httpBL. Определяет тип угрозы (harvester, comment spammer, подозрительный IP) и уровень опасности. Работает только с IPv4.
  • DNS Blacklist – проверка IP по настраиваемым DNSBL-зонам. Можно подключить любые публичные или приватные блеклисты.
  • Akismet – API от создателей WordPress, заточенный под определение спама в тексте. Проверяет не только IP и email, но и сам контент сообщения. Хорошо работает для постов и личных сообщений.

Два уровня решений​

Каждая проверка возвращает одно из трех решений: Allow, Moderate или Deny.
  • Allow – все чисто, пропускаем.
  • Moderate – подозрительно, но не критично. При регистрации – принудительная активация по email (даже если в настройках отключена). При отправке поста – запись в лог для ручной проверки.
  • Deny – спамер. При регистрации – блокировка. При отправке поста – ошибка. При отправке ЛС – блокировка.
Результаты всех провайдеров агрегируются автоматически. Если один провайдер вернул Allow, а другой Deny – финальное решение будет Deny. Всегда побеждает самый строгий вердикт.

Точки интеграции​

Система проверяет четыре действия:
  • Регистрация. Проверяется IP, email и username нового пользователя через UserChecker. Если решение Deny – регистрация отклоняется. Если Moderate – регистрация проходит, но активация по email становится обязательной, независимо от настроек трекера.
  • Создание поста. Проверяется текст сообщения через ContentChecker. Если Deny – пост не публикуется, пользователь видит ошибку. Если Moderate – пост публикуется, но записывается в спам-лог.
  • Быстрый ответ. Та же логика, что и для обычных постов.
  • Личные сообщения. Если Deny – сообщение блокируется.

Что с администраторами​

По умолчанию проверки выполняются даже для администраторов. Это сделано намеренно – если аккаунт администратора скомпрометирован, система все равно поймает подозрительную активность. Но если это мешает – можно отключить.

Спам-лог​

В административную панель добавлена новая страница «Спам лог» в разделе «Пользователи». Там видно:
  • Все проверки с результатами (разрешено / на модерации / заблокировано)
  • IP-адрес, email, имя пользователя
  • Какой провайдер вынес решение и почему
  • Ссылки на профили пользователей (с цветами рангов) и посты
  • Подробности в формате JSON для каждой записи (раскрываются по клику)
  • Фильтрация по решению, типу проверки, провайдеру и IP-адресу
  • Пагинация и сводная статистика
1771106530204.webp

Минимальная настройка​

Если не хочется разбираться во всех провайдерах – можно начать с минимума. Включить StopForumSpam (бесплатный, без API-ключа) и SpamPhrases:

PHP:
// config/spam.php
return [
    'check_admins' => true,

    'providers' => [
        'stop_forum_spam' => [
            'enabled' => true,
            'moderate_threshold' => 50,
            'deny_threshold' => 90,
        ],
        'spam_phrases' => [
            'enabled' => true,
            'phrases' => [
                'casino', 'viagra', 'crypto airdrop',
            ],
        ],
        // Остальные провайдеры – по умолчанию отключены
    ],
];
Этого достаточно, чтобы отсечь большинство типового спама. Akismet и Project Honey Pot подключаются при необходимости через API-ключи.

Что это дает​

  • Автоматическая защита. Спамеры отсекаются до того, как нанесут вред – на этапе регистрации и отправки сообщений
  • Гибкость. Шесть провайдеров, два уровня решений, четыре точки проверки. Включаете только то, что нужно
  • Прозрачность. Спам-лог показывает кто, когда, откуда и почему был заблокирован
  • Расширяемость. Добавить новый провайдер – один класс и пара строк конфига
  • Надежность. Полное покрытие тестами, кеширование внешних запросов, graceful degradation при недоступности провайдеров

Что дальше​

Защита от спама – одно из ключевых нововведений версии 3.0. В следующих статьях расскажем о других изменениях.
 
Back
Top