Блокировка недавней волны спама

Нас уже несколько дней атакуют масштабные спам-волны. Другие, например https://ask.learncbse.in/, пока сдались, похоже, что это :thinking:

Я ищу здесь лишь один вариант:

Контент часто меняется, как и адреса электронной почты и IP-адреса, поэтому блокировка уменьшает количество спама, но мы пока не нашли настоящего решения. По соображениям конфиденциальности мы не хотим отправлять всё в Akismet.

Если бы мы заблокировали

AS55836: Reliance Jio Infocomm Limited
AS9498: Bharti Airtel Ltd.
AS45609: Bharti Airtel Ltd.
AS24560: Bharti Airtel Ltd.

мы бы были в порядке, но это может быть значительная (или небольшая) часть индийского населения.

Попробовали ли вы добавить определенные слова в раздел Администрирование → Настройка → Следящие слова → Требовать одобрения?

Судя по вашему скриншоту, рекомендую добавить следующие слова:

  • cash
  • credit
  • money
  • loan
  • toll-free
  • customer care
  • care number
  • 0779*
  • helpline
  • :point_left:

Это может быть немного неудобно для пользователей, но я настроил Discourse на отправку вебхука в бесплатную облачную функцию Firebase, которая отправляет уведомление на мой телефон в чат Slack. Благодаря этому я часто могу одобрять сообщения в режиме модерации в течение 60 секунд со своего телефона, если я не сплю.

Спасибо за подсказку, но посмотрите, пожалуйста, на https://ask.learncbse.in/ (это не мой экземпляр, но посты в целом те же, с которыми я борюсь), и пролистайте последние дни: они используют множество комбинаций и вариаций каждого ключевого слова. Я сейчас создаю множество регулярных выражений для каждого ключевого слова, потому что они добавляют везде точку «.», запятую «,», вертикальную черту «|», заменяют «0» на «O», «e» на «3», вставляют в середину слова (на данный момент) случайный символ и так далее… с таким видом спама действительно трудно бороться.

Или, если вы не хотите переходить по случайной ссылке, вот скриншот за последние несколько часов, но это лишь последние несколько часов: они сильно варьируются со временем:

Просто для уточнения: используете ли вы настройку администратора «минимальное время ввода первого сообщения»? Я нахожу её весьма полезной для выявления большого количества наших [спам-сообщений].

Да, спасибо за подсказку, это уже настроено, но я имею в виду, что боту не так уж сложно просто подождать пару минут :slight_smile:

Этот спам, похоже, отличается от ответов/контента на основе ИИ, на которых сосредоточена другая тема, поэтому я вынес его отдельно. :+1:

У нас есть новый инструмент на основе ИИ для обнаружения спама, который оказался весьма эффективным:

Спасибо за совет, но настройка LLM только для борьбы с другим спам-ботом на нашем Discourse — это слишком дорого для наших задач.

Как спамер, вы можете легко увеличить расходы организации, просто создавая больше пользователей и постов, поэтому, в зависимости от того, чего вы хотите достичь, это может стать мотивацией создавать ещё больше постов :slight_smile:

Привет,

Вы пробовали использовать Akismet? Кажется, их решение подойдёт вам.

(бесплатно для личного использования, не для коммерческого — не знаю, как вы себя классифицируете)

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

Спасибо за все советы.

Мы тоже об этом думали, но у нас есть продукт для защиты конфиденциальности и безопасности, поэтому мы должны максимально защитить наших пользователей. Контент, безусловно, публичный, но IP-адрес, User-Agent, Referrer и email, если я правильно понял информацию из Discourse Akismet, передаются в Akismet (конечно, я бы также прочитал политику конфиденциальности, но общего обзора уже достаточно для принятия решения).

Это была бы хорошая идея. При примерно 2 регистрациях в день это не должно быть слишком обременительно, но ожидание одобрения — не лучший пользовательский опыт. Однако, если мы правильно объясним причину, это может стать лучшим доступным на данный момент вариантом.

Да, к сожалению, вы правы — они действительно передают некоторые дополнительные данные в Akismet, что может не соответствовать вашей политике конфиденциальности. В таком случае предложение от @Firepup650 — лучшее из возможных.

К вашему сведению: мой плагин Geo Blocking plugin может запрещать доступ к Discourse на основе сети AS источника. Действительно, множество подобных спама исходит именно из этих сетей, особенно из AS45609.

Если вы не хотите блокировать половину Индии, возможно, стоит изучить, насколько сложно было бы использовать часть функционала этого плагина для добавления правил на основе сети или IP в логику одобрения («требовать одобрения для новых сообщений из определённых сетей»).

Я пролистал множество страниц на том примере сайта и думаю, что с помощью функции «Следящие слова» можно заблокировать почти всё это, если регулярные выражения в Discourse поддерживают диапазоны Unicode.

Обычные пользователи, вероятно, не используют такие вещи, как:

  • 2 и более слеша подряд
  • необычные знаки препинания, такие как ^ (если это не сайт по математике)
  • редкие диапазоны Unicode:
    • ✓ (Различные символы)
    • ∆ (Греческий и коптский)
    • ❽, ➁, ❸, 3, ❷ (Дингбаты)
    • 𝘾, 𝙪, 𝙨, 𝙩 (Математические алфавитно-цифровые символы)

ChatGPT, вероятно, мог бы написать регулярное выражение для этого, если Discourse это поддерживает.

Ещё одна идея — попробовать Cloudflare с функцией Bot Fight Mode (бесплатно) и проверять всех ботов на сложность.

О, это было бы идеальным решением, изучу код, спасибо!

Проблема здесь в том, что этот бот каким-то образом знает, как работает Discourse: в следующем сценарии я слежу за символом ❽ в разделе «Требовать одобрения». Проблема в том, что такие боты часто сначала создают пост с произвольным текстом, а затем редактируют его под реальный контент. При редактировании поста проверка на соответствие списку «Требовать одобрения» не выполняется, см. например:

VS

(здесь я добавил ❽ непосредственно при создании поста)

что означает, что наш единственный вариант — добавить символ в раздел блокировки. Однако блокировка слишком большого количества слов и символов легко приводит к проблемам, когда обычные пользователи получают запутанное сообщение при создании корректных постов. Я считаю, что именно здесь кроется большинство наших проблем. На мой взгляд, это ошибка: при редактировании поста список «Требовать одобрения» также должен проверяться по отредактированному контенту при публикации изменений.

Полагаю, что отслеживаемые слова в таком случае не помогут. У меня пока не было спамерских атак с использованием этого, но я обеспокоен, так как пользователи начали это понимать.

Похоже, один из моих форумов только что подвергся той же спам-атаке. Не знаю, использовали ли они трюк с редактированием, так как спам-слова ещё не были добавлены в список отслеживаемых слов.

Привет всем :waving_hand:

У меня есть рабочий прототип этого решения, если хотите взглянуть:

Отличная работа, @juanjosegzl, я с радостью приму это как PR! :rocket:

Спасибо @RGJ, я только что открыл PR

Привет, @juanjosegzl,

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