ВАЖНАЯ ИНФОРМАЦИЯ Всех приветствую моих зелёных форумменцов! Хотел бы вам рассказать что телеграмм-боты в каналах могут быть не безопасными и как от них защититься, так что готовьте свой зелёный чай и начинайте читать! Изучая безопасность мессенджера Telegram, меня удивило одно его "особенность" при работе с ботами - я обнаружил, что при добавлении бота в канал невозможно ограничить его права на удаление подписчиков. Другими словами, любой бот может очистить всю аудиторию канала всего за несколько минут. Боты могут быть добавлены в Telegram-каналы только в качестве администраторов, чтобы автоматизировать выполнение различных сервисных функций, таких как автоматическое планирование публикаций и сбор аналитики о канале. Практически все администраторы Telegram-каналов используют боты от сторонних сервисов, вроде Telemetr или Telepost, и подобных. К тому же, эти сервисы часто настойчиво требуют добавления своего бота в канал. Например, различные рекламные биржи отказываются сотрудничать с каналом, если не установлен их бот - без него невозможно автоматизировать размещение рекламы. Таким образом администраторы последовательно добавляют в свой канал несколько ботов, полагаясь на то, что следующая настройка прав ограничивает их возможности только работой с постами. Пример 1. Однако, даже после лишения бота всех прав, доступных для редактирования в официальном клиенте, он по-прежнему остается администратором и имеет возможность не только просматривать всю административную информацию о канале, но и исключать подписчиков. Согласно Telegram API, удаление подписчика из чата выполняется через метод editBanned. То есть, в техническом плане, у всех ботов, попадающих в канал, есть «несгораемое» право на блокировку участников. Наиболее странное в этой ситуации заключается в том, что Telegram API на самом деле имеет «скрытую» возможность отбирать у ботов права на исключение подписчиков, однако она не доступна в официальной версии Telegram и скрыта от пользовательского интерфейса. Неофициальная возможность в официальном API Если вручную выполнить этот API-запрос и принудительно задать параметр ban_users, то станет очевидно, что серверы Telegram игнорируют это значение по какой-то причине. Скорее всего, поэтому эта настройка отсутствует в официальных клиентах, хотя она была добавлена уже давно - это можно увидеть по истории версий TL Layer. Как же защититься от этого? В настоящее время Telegram не предлагает ничего более эффективного, кроме написания собственного скрипта на основе Telegram API, который мониторил бы все удаления подписчиков в канале ботами и блокировал бы их. К счастью, боты могут блокировать подписчиков только пакетами по 200 (ограничение Telegram на просмотр последних подписчиков канала). Так что как только какой-то бот заблокирует первого подписчика, этот бот может быть сразу же исключен из канала. Это поможет избежать потери всех подписчиков за несколько секунд. Единственная проблема здесь заключается в том, что Telegram API не позволяет ботам блокировать других ботов, поэтому скрипт мониторинга придется запускать от лица обычного пользователя Telegram, а не от имени бота. С другой стороны, Telegram отправляет уведомления о блокировке пользователей из каналов только ботам, а необычным пользователям - нет. Из-за всей этой путаницы в API рабочая схема защиты будет выглядеть следующим образом: Включаем в канал нашего бота, который будет отслеживать удаление подписчиков другими ботами. В случае обнаружения удаления, исключаем найденного бота от имени второго аккаунта - пользователя. Код с использованием библиотеки Pyrogram для защиты канала по такой схеме мог бы выглядеть следующим образом: # Аккаунт бота bot = Client(...) async def banBastard(channelId, botId): # запускаем аккаунт пользователя для удаления опасности ( бота ) user = Client(...) async with user: await user.ban_chat_member(channelId, botId) # callback получения нотификаций об удалении пользователей в каналах, куда добавлен бот @bot.on_chat_member_updated() async def onMemberHandler(client, update): banned = update.new_chat_member.status == enums.ChatMemberStatus.BANNED byBot = update.new_chat_member.restricted_by.is_bot if banned and byBot: await banBastard(update.chat.id, update.new_chat_member.restricted_by.id) # запускаем нашего бота для прослушивания нотификаций об удалении пользователей async def main(): async with bot: while True: await asyncio.sleep(1) bot.run(main()) Код # Аккаунт бота bot = Client(...) async def banBastard(channelId, botId): # запускаем аккаунт пользователя для удаления опасности ( бота ) user = Client(...) async with user: await user.ban_chat_member(channelId, botId) # callback получения нотификаций об удалении пользователей в каналах, куда добавлен бот @bot.on_chat_member_updated() async def onMemberHandler(client, update): banned = update.new_chat_member.status == enums.ChatMemberStatus.BANNED byBot = update.new_chat_member.restricted_by.is_bot if banned and byBot: await banBastard(update.chat.id, update.new_chat_member.restricted_by.id) # запускаем нашего бота для прослушивания нотификаций об удалении пользователей async def main(): async with bot: while True: await asyncio.sleep(1) bot.run(main()) Есть и более простой, но менее надежный способ для администраторов Telegram-каналов. Они могут добавить в канал бота @channel_guardian_bot. Этот бот будет отслеживать все удаления подписчиков другими ботами и отправлять уведомления. Если администрация быстро среагирует, то сможет сохранить большую часть своей аудитории. Почему разработчики Telegram не реализовывают эту очевидно необходимую защиту на стороне сервера – сложно сказать. Но пока их changelog будет состоять только из обновлений для сториз, администраторы Telegram-каналов не смогут спокойно спать. Всем спасибо за внимание! Дизайнер Самый лучший дизайнер! Вы наверное спросите "почему"? А потому что: 1. Делает годные работы с очень выгодной ценой! 2. Общительный и приятный челик 3. Вы будете часто покупать у него работы ( Арты, аватарки, баннеры и т.д. ) 4. У него есть канал с другими работами и вы сможете поглядеть, так же у него есть прайсик с выгодными ценами: ЦЕНЫ: Аватарка - от 399 199р | Баннер для форума - от 1999 999р | Превью на видео - от 799 499р | Оформление Telegram-канала - от 1999 999р Не правда ли очень вкусные цены? Тогда быстрее переходите по ссылочке с низу его канал и сам дизайнер: Канал: https://t.me/myocik_design Его личка: https://t.me/myociktop Отблагодарить автора чаем: *Тык* Другие статьи: https://zelenka.guru/threads/5910162/ - Свежая подборка бесплатных игр в Steam и Epic games Store (02.10.2023) https://zelenka.guru/threads/5909068/ - Пользуемся абузоустойчивыми аккаунтами «VK» https://zelenka.guru/threads/5908900/ - Twitch-стримерша играет Valorant силой мысли https://zelenka.guru/threads/5898147/ - Настраиваем приватность Windows ( Для новичков ) https://zelenka.guru/threads/5849975/ - Как уберечь ваш Wi-Fi от незваных гостей https://zelenka.guru/threads/5837560/ - Заработок на чатах телеграмм https://zelenka.guru/threads/5836332/ - Абузим 1*** на подписку https://zelenka.guru/threads/5814748/#post-41570663 - Заработок на перепродаже игры War Thunder https://zelenka.guru/threads/5853327/ - 4 ключевых инструмента для этического хакинга https://zelenka.guru/threads/5819779/ - Правильное определение опасности файла на VirusTotal
После нажатия кнопки Start любой бот может получить доступ к ID пользователя, его имени и фамилии, никнейму, разделу «о себе» и языку, установленному в приложении. Бот автоматически получит доступ к фото профиля, если в настройках конфиденциальности юзер не скрыл его ото всех. Бот не имеет автоматического доступа к номеру телефона пользователя, но может его запросить. Если пользователь разрешит отправку, бот получит доступ к номеру. Разработчик бота может решить, будет бот сохранять эти данные данные или нет. Если бот сохранит ID пользователя, разработчик сможет получить доступ к этим данным позже, даже если пользователь заблокирует бот. Правда, после блокировки бот не сможет узнать актуальные данные пользователя. То есть если после блокировки пользователь сменит свой никнейм, то бот будет видеть его старую версию. Любые сообщения, отправленные в бот, могут быть им сохранены. Даже если пользователь их удалит. Пользователь не может узнать, как бот распоряжается полученной информацией. То есть бот может как удалять полученные сообщения сразу после прочтения, так и хранить их. При помощи таких ботов силовики могут автоматически собирать информацию из открытых групп. И даже из закрытых, если удастся в них попасть.