Спамеры в телеграм, мой опыт борьбы

Моё тесное знакомство с этими персонажами всемирной сети началось, когда модерируемая мной группа перешагнула двухгодичный порог и насчитывала на тот момент чуть более полтораста членов. Несмотря на узкую специализацию и практически полное отсутствие публикаций в интернете её уже стал находить гугл и видимо разместили в спам базах.
Первоначально я удалял спамеров руками, но это не всегда удавалось сделать своевременно. Вариант с закрытой группой я не рассматривал изначально, поэтому был установлен бот модерации Комбот (@combot), который надо отдать должное, обладая большим функционалом сильно облегчил мне жизнь.

Наиболее полезная функция в борьбе со спамом — ограничение привилегий новых пользователей на пару суток, никаких картинок ссылок и т. п., только текст. За это время спамера либо убивал телеграм, либо он переставал отправлять сообщения. Обычные пользователи, хоть и стенали от невозможности разместить фотки, но терпели.

Однако спустя время этот метод перестал работать, некоторые боты стали использовать отложенную отправку. К тому же изредка попадались текстовые блоки рекламы, которые этим методом не блокировались.

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

В общем было принято решение создать что-то более надёжное собственными руками. За основу взял PHP|MySQL конструкцию, благо есть небольшой опыт и бесплатные хостинги. Для создания капчи использовал библиотеку GD, вооружившись теоретическими материалами статьи «Анализ алгоритмов генерации CAPTCHA». Встроенных инструментов для искажения вращением в библиотеке не нашёл, поэтому применил построчную обработку с использованием тригонометрических функций, от применения зашумления и линий решил отказаться, хотя это можно легко добавить. На выходе получил такую картинку.

image

Крутить можно и больше, но в некоторых случаях сильно страдает читабельность.

Теперь коротко о работе самого бота:

  1. Получив сигнал о входе нового пользователя, бот удаляет все привилегии, кроме отправки текста;
  2. Генерируется и выводится капча;
  3. Новый пользователь вводит символы на картинке или нажимает обновить чтобы система выдала новые;
  4. Если введено правильно — пользователь получает права в чате, капча и его вариант удаляются;
  5. Если введено правильно — капча обновляется и у него ещё есть 2 попытки, после которых пользователь покидает чат с возможностью войти снова ещё 2 раза, после которых банится окончательно;
  6. Пользователь, который не приступил к вводу капчи, может сделать это в любое время, но не позже недели, после чего покидает чат с возможностью войти снова ещё 2 раза


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

Протестировать бота Вы можете совершенно бесплатно по ссылке @welcome_capcha_bot, обратите внимание, что для работы полного функционала необходимы права администратора: «Удаление сообщений» и «Блокировка участников».

image

© Habrahabr.ru