Время от времени владельцы Telegram-групп сталкиваются с тем, что злонамеренные граждане начинают вести себя не особо культурно и наливают в вашу группу тысячи ботов.
Помимо того, что это приводит к параличу любого общения в группе из-за спама сообщениями «Такой-то вступил в группу
» и сообщениями от самих ботов, также это может закончится довольно печально, если боты «обучены» выходить из группы, нажав при этом кнопку «Пожаловаться». При достаточном количестве жалоб вы можете лишиться вашего телеграм-чата!😱
Так что же делать, если в один «прекрасный» день вы видите, что к вам в группу стали пачками добавляться непонятные пользователи?
Наша тактика защиты будет состоять из трёх вещей:
- Добавление в группу бота-администратора, который будет автоматом банить всех новых пользователей
- Очистка всех тех, кто уже успел вступить, до момента, когда был добавлен бот-администратор
- Создание сложностей для проведения повторных атак
Поехали!
Добавляем бота-администратора
Если у вас достаточно большой телеграм-чат и до сих пор нету бота, с помощью которого его можно администрировать и модерировать пользователей, то это большая ошибка!
На рынке существует с десяток решений данной проблемы, лично я выбрал для себя бота ChatKeeper. Бот довольно удобный, масса настроек, имеется веб-интерфейс, короче — рекомендую.
После того, как вы добавите его в свою группу и сделаете администратором, вы сможете посылать боту команды. Просто пишите их в чат, бот на них реагирует. С полным списком вы можете ознакомиться вот тут, нас же в данный момент интересует всего одна: /kickall
. Смотрим описание👇
Итак, после включения «режима атаки» ваш новоиспечённый админ будет банить всех ботов, которых вам продолжают наливать в группу. Отлично, мы прекратили приток новых ботов, но что делать с теми, которые уже успели к нам вступить?
Чистим вступивших ботов
Перво-наперво засеките время, когда вы перевели бота-администратора в режим атаки. Допустим, это было 12:15. Далее проматываете вашу группу и ищете момент, когда в неё стали добавляться невнятные пользователи. Допустим, это было в 10:42.
Всех новых пользователей, добавившихся в промежутке 10:42 — 12:15 вам необходимо удалить. Как получить список таких пользователей?
Для решения этой задачи Telegram предоставляет нам полный лог действий, произошедших на канале. Называется он «Recent Actions
» и доступен в меню группы.
Если зайти в этот лог, то справа вверху будет кнопка, позволяющая отфильтровать лог по различным типам действий. Нас интересует действие «New members
«.
После применения фильтра мы увидим лог добавления всех новых пользователей нашей группы. Но как быть, если к вам успело залететь несколько тысяч ботов? Не будем же мы сами искать их всех в логе и удалять руками?
Конечно же нет. Специально для этой задачи мне пришлось написать небольшое консольное приложение, работающее как под Windows так и под MacOs. Оно делает ровно то, о чём я написал выше: читает лог действий группы за заданный промежуток времени и удаляет новых пользователей.
ВНИМАНИЕ: Лог группы хранится на серверах Telegram в течение 48 часов, после чего удаляется, поэтому начинайте очистку как можно раньше!
Приложение живёт тут и вот как с ним работать:
- Скачиваете весь код из GitHub репозитория в виде zip-архива и разархивируете его в какую-нибудь папку
- Открываете в любом текстовом редакторе файлик Program.cs и редактируете настройки. Вот как выглядит блок настроек👇
Вам нужно поменять здесь всё-всё-всё. Начнём по порядку:
- Ваш номер телефона — тут всё вполне очевидно.
- Название вашего чата в телеграме. Без собаки!
- Начальная дата, начиная с которой софт будет чистить пользователей. Формат у неё такой: год, месяц, день, часы, минуты, секунды. ВНИМАНИЕ: часовой пояс здесь UTC+0!!! Поэтому, если у вас, например +3, то вам надо вычесть 3 часа чтобы получить нужную дату.
- Конечная дата, формат тот же, что и у начальной
- apiId и apiHash — число и хэш для доступа к API Телеграма от вашего лица. Их нужно взять вот отсюда.
После того, как вы всё поменяли и сохранили, необходимо скомпилировать и запустить софт. Для этого:
- Ставите себе последний .NET SDK с сайта Microsoft
- Запускаете консоль/терминал и командой
cd
переходите в папку, в которую разархивировали код - Пишете
dotnet run
и жмёте Enter
После того, как вы запустили программу, она спросит у вас код доступа, который придёт вам в Телеграм. Введите его в консоли.
Далее софт начинает чистить всех пользователей в заданном промежутке времени, выглядит это всё примерно вот так👇
Скорость очистки равна 300 пользователей за 13 минут, т.е. примерно полторы тысячи в час. К сожалению, быстрее не получится, Telegram ограничивает повторяющиеся API-запросы. Так что просто запустите программу фоном и пусть работает.
Заметка: если вы программист, то вы можете ускорить работу программы, добавив в группу ещё несколько админов, далее получить для них apiId и apiHash, после чего чистить группу многопоточно, используя все аккаунты админов, что есть в наличии.
После того, как софт закончит удалять ботов, переходим к третьей части Марлезонского балета.
Усложняем возможность проведения последующих атак на вашу группу
Если только против вас действуют не профессионалы, то самым действенным способом ограничить налив ботов к вам в группу является установка какой-либо проверки для новых пользователей.
Проверки могут быть разнообразными: нажатие на кнопку «Войти», решение несложной математической задачки, капча и т.п. Мы с вам остановимся на самой простой: кнопке «Войти».
Для её реализации нам потребуется всё тот же бот-администратор ChatKeeper. Переходим в веб-интерфейс бота, выбираем "Настройки" - "Приветствие"
и ставим всё примерно так как на скрине ниже:
После чего сохраняем настройки. Всё, теперь все пользователи, которые не проходят проверку (т.е. не нажамают на кнопку) будут удалены!
Поздравляю! Вы только что сделали всё необходимое, чтобы защитить вашу Telegram-группу. Для того, чтобы добавить вместо кнопки, например, математическую задачку — читайте справку ChatKeeper-а, а я же со своей стороны пожелаю вашей группе процветать и здравствовать, успехов!