Comments 10
Как-будто социальная сеть не собирается использовать свой капитал в качестве влияния… Закономерный исход
Видел много свидетельств странному поведению счётчика конкретно на одном посте в Telegram Designers, но я всё ещё сомневаюсь, что это нарошная манипуляция, а не какой-то особый случай.
Сейчас поведение счётчика можно объяснить защитой от целенаправленных накруток: Telegram может специально размывать показания счётчика, чтобы усложнить скраппинг. Это частая практика в социальных сетях.
Проведите смешанное тестирование:
Ставя реакции с одних аккаунтов и считывая с других
Выбирая случайные аккаунты для реакции и считывая счётчик со всех аккаунтов
Повторите эксперимент на других крупных каналах
На постах в этом же канале
На свежих спорных постах в других каналах, где ставится много негативных реакций
В идеале, конечно же, чтобы аккаунты были с разных IP и всё такое, хоть и маловероятно, что такая система учитывала бы уникальность аккаунтов до такой степени.
И можете предложить какое-нибудь объяснение, почему бы Telegram настолько боялся дизлайков конкретно под анализируемым постом в Telegram Designers, чтобы он занимался манипуляциями реакциями на нём? Потому что этот пост не самый спорный — анонс конкурса на видео.
Текущее количество реакций на этом посте вообще не репрезентативно, его и пост ниже уже настолько накрутили экспериментами, что их никак не сопоставить с другими постами в канале Telegram Designers. Рассматривали ли вы вариант, что накруткой занимается не сам Telegram? Есть ли что-либо, что указывало бы на то, что только Telegram может быть причиной такой манипуляции?
Пробовали ли вы брать комментарии у разработчиков мессенджера, чтобы узнать у них объяснение наблюдаемого поведения? Я знаю, что у вас или вашего круга общения должны быть контакты с разработчиками, чтобы услышать их версию.
Мы провели комплексное исследование поведения счётчика реакций в Telegram Designers, и результаты позволяют сделать следующие выводы:
Точные метрики реакции поста в канале демонстрируют достаточно стабильное соотношение лайков к дизлайкам, которое приближается к числу 2. Например, в разных замерах наблюдалось:
• Первичная серия измерений:
– 👍: 40197, 👎: 18436 (коэффициент ≈ 2.1803)
– 👍: 41227, 👎: 18884 (коэффициент ≈ 2.1832)
– Последующие замеры показывают чуть изменявшиеся значения, но соотношение всегда остаётся около 2.18–2.25, а итоговый замер – около 2.48.
Это свидетельствует о том, что математическое соотношение лайков к дизлайкам сохраняется с высокой точностью.
Математическое объяснение такого соотношения требует учёта того, что если бы накрутка производилась вручную сторонним злоумышленником через ботферму, добиться ровного коэффициента (например, при каждой реакции прибавлять ровно два лайка или снимать точно фиксированное количество, реагируя на изменения) крайне трудно. Процесс должен поддерживаться с точностью «секунда в секунду», что практически невозможно организовать в условиях работы с множеством независимых аккаунтов. Таким образом:
• Если бы злоумышленник пытался подставлять реакции, ему пришлось бы синхронно управлять десятками аккаунтов, чтобы получить именно такое постоянное соотношение – что крайне малореалистично.
При этом не удалось обнаружить аномалий, характерных именно для манипуляций сторонней накруткой (на текущем этапе в 65 тыс лайков). Такое равномерное соотношение говорит об подмене на серверном уровне.
Кроме того, имеется двухчасовое видео (https://t.me/durovleaks/1086), где на официальном клиенте TDesktop подробно демонстрируется поведение реакций.
Важно отметить, что в момент публикации поста было всего лишь около ~3000 дизлайков и ~1000 лайков. Такая динамика не вызывает подозрений на накрутку и отражала предположительно истинное восприятие аудитории. Однако в настоящий момент Telegram преобразовал эти показатели до 65 тыс лайков с помощью серверной подмены, создавая для большинства неосведомлённого пользователя впечатление, что конкурс имеет смысл и/или что с его условиями согласны подавляющее большинство. Это искусственное увеличение реакций способно ввести в заблуждение.
Ибо, как говорится, лишь небольшой процент пользователей склонен проверять, являются ли 65 тыс. лайков настоящими или поддельными, в то время как большинство воспримут их за истину и примут видимое за факт. Это создаёт иллюзию массовой поддержки, несмотря на отсутствие реальных реакций.
Несколько человек из моего окружения обратили внимание на данное поведение и спросили команду Telegram. При этом все их сообщения были прочитаны, но проигнорированы, именно конкретно этот кейс остался без внимания.
Примечательно, что такое поведение зафиксировано начиная с 15 мая, что подразумевает необходимость задействовать огромное количество аккаунтов и обеспечить стабильную работу системы на протяжении длительного времени — трудозатратная и сложная задача, требующая серьезной автоматизации и организованности.
Мы наблюдаем около постоянное математическое соотношение лайков к дизлайкам (≈ 2), что сложно воспроизвести при целенаправленной внешней накрутке злоумышленником. Проведённые нами тестирования с разных аккаунтов, а также анализ независимых источников (включая рандомизированную группу людей) указывают на то, что это поведение возникает вследствие подмены на серверном уровне, применяемых Telegram. Добиться такой точности обычному злоумышленнику было бы чрезвычайно затруднительно – требовалась бы автоматизация, максимально синхронизированная между множеством аккаунтов.
Вы говорите, что поддержка такого соотношения секунда в секунду почти невозможна, но чтобы такое утверждать, нужно провести тот самый эксперимент с несколькими аккаунтами.
Вы говорите, что проводили такой эксперимент, но я его нигде не вижу. Пожалуйста, приведите методологию, код, лог действий и замеров (включая с какого аккаунта был сделан замер). В идеале в посте. Вопрос о воспроизведении поведения на постах в других каналах где активно ставятся негативные реакции тоже актуален.
И уточните, пожалуйста, как формулировался вопрос к сотрудникам Telegram.
Видел много свидетельств странному поведению счётчика конкретно на одном посте в Telegram Designers, но я всё ещё сомневаюсь, что это нарошная манипуляция…
Вы сомневаетесь — это нормально. Однако, я не строил гипотезу на пустом месте — я засёк точную числовую закономерность манипуляции, которая воспроизводится:
+1 лайк → +3 лайка
-1 лайк → -3 лайка
+1 дизлайк → +2 лайка
-1 дизлайк → -2 лайка
Если есть Telegram Premium, то можно оставить две реакции:
+1 дизлайк + 1 лайк → +5 лайков
Если вы действительно допускаете, что Telegram «размывает» число реакций от «скраппинга», то логично ожидать, что поведение будет либо случайным, либо универсальным для всех постов — а не строго фиксированным по вышеописанной формуле.
Стороннему пользователю (злоумышленнику) для реализации такой подкрутки пришлось бы иметь ботоферму на всех датацентрах (от 1 до 5). Так как доставка реакций от одного датацентра до другого также проходит с задержкой.
Приведите, пожалуйста, примеры социальных сетей, где подобным образом размывается счётчик с тем, чтобы недовольство превращалось в положительные реакции за счёт серверных махинаций?
Причём это не гипотеза, а эмпирически воспроизводимое поведение, подтверждённое множеством видео с логами и временными метками. Оно проявляется только на одном посте и не повторяется на других, в том числе в том же канале. Если бы это была просто защита от накруток, Telegram не стал бы делать это с такой математически консистентной схемой.
Идея, что Telegram боится дизлайков конкретно на посте с конкурсом, как раз наименее конспирологична из всех возможных. Дизлайк под официальным конкурсом (еще и опубликованном в канале CEO) — прямой индикатор негатива. Его приглушение — стандартная PR-практика.
Рассматривали ли вы вариант, что накруткой занимается не сам Telegram?
Да. И он отвергается. Подобную точную симметрию невозможно обеспечить со стороны клиента, потому что:
клиент не получает информацию о количестве уже поставленных реакций до апдейта от сервера;
даже при прослушивании всех апдейтов на стороннем клиенте возникает проблема дубликатов и рассинхрона, таким образом злоумышленнику пришлось бы очень много поработать над настройкой ботофермы;
даже если наблюдать за числом реакций, путем использования метода sendReaction, то через 30 минут сервер дает FLOOD_WAIT;
у зломышленника должны быть аккаунты-наблюдатели на всех датацентрах, так как доставка реакций пользователя с датацентра 5 на датацентр 2 или 1 - занимает 1-3 минуты; т.е получается чтобы подкручивать на всех датацентрах злоумышленнику нужно иметь аккаунты на всех датацентрах, чтобы на каждом подкручивать реакции, а это очень сложная и кропотливая работа (я бы сказал, невозможная); воспроизводится на всех датацентрах от 1,2,4,5.
Таким образом, даже при самом аккуратном внешнем вмешательстве нельзя стабильно и на каждый отклик воспроизводить такую точную математику. Только сервер, зная полную внутреннюю структуру и имея контроль над стейтом числа реакций, может производить такую трансформацию реакций.
Вы говорите, что проводили эксперимент, но я его нигде не вижу. Приведите методологию, код, лог действий и замеров…
Эксперимент есть, предоставляю все видеозаписи с пояснениями:
1) Видео: https://vimeo.com/1087473365
На данном видео в нижней части экрана слева отображён терминал с логами первого клиента Telegram Desktop, по центру – дата и время, справа – логи второго клиента. Также слева в браузере запущен третий аккаунт (наблюдатель на MTProto с помощью библиотеки MTCute), позволяющий отслеживать рассинхрон в состояниях двух официальных клиентов (обратите внимание: у наблюдателя часто дублируются обновления, поэтому главным источником информации являются именно логи с официальных клиентов).
Логи получены с двух официальных клиентов Telegram Desktop, в режиме реального времени с включённым DEBUGMODE.
• Слева – клиент с обычным аккаунтом (без Telegram Premium), аккаунт без подписки допускает только одну реакцию.
• Справа – клиент с аккаунтом, имеющим подписку Telegram Premium, который, при одновременном нажатии лайка и дизлайка, может выставить до +5 лайков (если прожать одновременно и лайк, и дизлайк).
Стоит отметить, что официальные клиенты обновляют информацию о числе реакций реже – обновление происходит лишь при взаимодействии (нажатии, скролле, изменении фокуса) либо по истечении определённого таймера. Таким образом, если на втором клиенте нажать реакцию, обновление на первом произойдёт лишь при следующем взаимодействии с ним – тогда сервер отдаст обновлённый стейт через updateMessageReactions.
Четко прослеживается следующее поведение: при нажатии реакций на втором клиенте, а затем на первом, видно, что обе реакции засчитываются одинаково, т.е. вне зависимости от клиента – +1 лайк становится +3, а +1 дизлайк – +2. Отметим, что на аккаунте с Telegram Premium возможно выставление до 5 лайков.
Важное наблюдение: если протестировать эти же клиенты на посте с ID 243, счётчик ведёт себя как и обычно, без серверной поднакрутки. Только на посте с ID 242 наблюдается манипуляция счётчиком в пользу лайков.
Оба клиента находятся на разных IP, но размещены в одном датацентре (датацентр 5 в рамках этого эксперимента). Это необходимо для минимизации задержек (если аккаунт-наблюдатель окажется в другом датацентре – задержка может составить 1–3 минуты, что исказит результаты).
Также хочу отметить, что второй клиент с Telegram Premium часто получает ошибку FLOOD_WAIT от сервера – в этом случае реакции не засчитываются, а визуальное отображение может расходиться со стейтом на сервере. Поэтому истинное состояние реакций лучше отслеживать через первый клиент.
Стартовые и конечные значения реакций:
Пост 242:
Старт: 👍 67967, 👎 27184
Конец: 👍 67970, 👎 27184
Пост 243:
Старт: 👎 4448, 👍 2872
Конец: 👎 4448, 👍 2874
Дата и время:
Наблюдение начато: 24 мая 2025, 17:11 UTC
Завершено: 24 мая 2025, 18:08 UTC
──────────────────────────────
2) Видео: https://vimeo.com/1087473453
В данном видео поведение с поднакруткой реакций сохраняется. Отличие от предыдущего эксперимента – третий аккаунт-наблюдатель заменён на клиент Telethon, у которого также фиксируется дублирование обновлений (скорее всего, из-за отсутствия механизма разрешения конфликтов в кодовой базе).
Стартовые и конечные значения реакций:
Пост 242:
Старт: 👍 67954, 👎 27184
Конец: 👍 67954, 👎 27184
Пост 243:
Старт: 👎 4447, 👍 2870
Конец: 👎 4448, 👍 2870
Дата и время:
Наблюдение начато: 24 мая 2025, 15:53 UTC
Завершено: 24 мая 2025, 16:28 UTC
──────────────────────────────
3) Видео: https://vimeo.com/1087473501
Здесь, как и ранее, наблюдается поднакрутка реакций на серверном уровне: +1 лайк = +3, -1 лайк = -3, +1 дизлайк = +2, -1 дизлайк = -2. В этом эксперименте вновь используется браузерный третий аккаунт-наблюдатель на базе библиотеки MTCute.
Стартовые и конечные показатели:
Пост 242:
Старт: 👍 67935, 👎 27181
Конец: 👍 67941, 👎 27181
Пост 243:
Старт: 👎 4447, 👍 2867
Конец: 👎 4448, 👍 2869
Дата и время:
Начало: 24 мая 2025, 14:38 UTC
Окончание: 24 мая 2025, 15:10 UTC
──────────────────────────────
4) Видео: https://vimeo.com/1087473561/
На данном видео сохраняется описанная схема: +1 лайк = +3, -1 лайк = -3, +1 дизлайк = +2, -1 дизлайк = -2. Третьего аккаунта-наблюдателя здесь нет (на момент записи он ещё не был разработан).
Дополнительно: спустя 12 минут от старта эксперимента был опубликован пост в канале Павла Дурова (https://t.me/durov/419) – проверялось изменение активности реакций, однако схема поднакрутки осталась неизменной.
Стартовые и конечные показатели:
Пост 242:
Старт: 👍 67837, 👎 27173
Конец: 👍 67849, 👎 27174
Пост 243:
Старт: 👎 4437, 👍 2852
Конец: 👎 4441, 👍 2857
Дата и время:
Наблюдение начато: 24 мая 2025, 07:46 UTC
Завершено: 24 мая 2025, 08:19 UTC
──────────────────────────────
5) Видео: https://vimeo.com/1087473610/
На этом видео поведение реакций остаётся неизменным: +1 лайк = +3, -1 лайк = -3, +1 дизлайк = +2, -1 дизлайк = -2.
Стартовые и конечные значения:
Пост 242:
Старт: 👍 67822, 👎 27172
Конец: 👍 67825, 👎 27173
Пост 243:
Старт: 👎 4437, 👍 2850
Конец: 👎 4437, 👍 2850
Дата и время:
Начало: 24 мая 2025, 06:41 UTC
Окончание: 24 мая 2025, 07:16 UTC
──────────────────────────────
6) Видео: https://vimeo.com/1087473755/
В данном эксперименте схема манипуляций реакций сохраняется (+1 лайк = +3, -1 лайк = -3 и т.д.).
Стартовые и конечные показатели:
Пост 242:
Старт: 👍 67787, 👎 27172
Конец: 👍 67787, 👎 27172
Пост 243:
Старт: 👎 4433, 👍 2842
Конец: 👎 4433, 👍 2842
Дата и время:
Начало наблюдений: 23 мая 2025, 18:07 UTC
Окончание: 23 мая 2025, 18:21 UTC
──────────────────────────────
7) Видео: https://vimeo.com/1087473755/
Ещё один эксперимент с тем же поведением: +1 лайк = +3, -1 лайк = -3, +1 дизлайк = +2, -1 дизлайк = -2.
Стартовые и конечные показатели:
Пост 242:
Старт: 👍 67787, 👎 27172
Конец: 👍 67787, 👎 27172
Пост 243:
Старт: 👎 4433, 👍 2841
Конец: 👎 4433, 👍 2842
Дата и время:
Наблюдения с: 23 мая 2025, 17:48 UTC
до: 23 мая 2025, 17:57 UTC
──────────────────────────────
Данные эксперименты демонстрируют, что на посте с ID 242 сервер Telegram осуществляет манипуляцию счётчиком реакций (смещая баланс в пользу лайков с эффектом +1👍→+3👎 и +1👎→+2👍), тогда как на посте с ID 243 реакция отрабатывает без подобного искусственного множителя. Используемые устройства (клиенты Desktop, Telethon и браузерная реализация наблюдателя на MTCute) работают из одного датацентра, что исключает влияние задержек между датацентрами и позволяет получить максимально достоверные данные.
Также хочу отметить, что повторяющиеся ошибки FLOOD_WAIT на аккаунте Telegram Premium (втором клиенте) указывают на серверное ограничение количества запросов – в этих случаях визуальное отображение реакции не совпадает с реальным состоянием на сервере. Т.е реакция находится в том же состоянии, что была до получения FLOOD_WAIT либо прожатая, либо отжатая.
Вопрос о воспроизведении поведения на постах в других каналах, где активно ставятся негативные реакции, тоже актуален.
Специально для вас я проверил поведение реакций на резонансном посте в канале «Ньюсач/Двач». Пост был выбран по вашему критерию – канал, где активно ставятся негативные реакции. В тот момент он был самым актуальным в данном канале, и реакции пользователей были максимально активными.
Видео: https://vimeo.com/1087695470
Для наблюдения использовались 4 аккаунта: два из них – наблюдатели (в датацентрах 2 и 5 соответственно), а два – клиенты через Telegram Desktop.
Как видно из результатов, поведение реакций соответствует нормальным поведенческим метрикам пользователей: если, например, у человека нет Telegram Premium, он может сменить реакцию, и предыдущая «отожмётся» (как и происходит при миссклике, когда лайк снимается), либо если человек передумал и поменял на другую реакцию, это соответствует стандартному поведению. Кроме того, наиболее активно использовался емодзи злости “🤬”, а при добавлении менее популярных реакций происходит обычное инкрементирование счетчика (+1), а при их удалении – декрементирование (-1).
Обращаю внимание на задержку синхронизации реакций между двумя датацентрами (что также воспроизводится в следующем примере ниже). Очевидно, что основной резонанс происходит на датацентре 2 (канал находится на ДЦ 2), а датацентр 5 получает реакции с задержкой.
Сейчас поведение счётчика можно объяснить защитой от целенаправленных накруток: Telegram может специально размывать показания счётчика, чтобы усложнить скраппинг. Это частая практика в социальных сетях.
Повторюсь: хотелось бы увидеть примеры, где размывание счётчика приводит к тому, что недовольство превращается в положительные реакции посредством серверных махинаций.
Рассматривали ли вы вариант, что накруткой занимается не сам Telegram? Есть ли что-либо, что указывало бы на то, что только Telegram может быть причиной такой манипуляции?
Этот вариант я больше не рассматриваю ввиду проведения еще одного эмпирического эксперимента, в котором, как и в описанном выше, использовались 4 аккаунта (2 – наблюдатели на датацентрах 2 и 5, и 2 – клиенты через Telegram Desktop).
Видео с экспериментом: https://vimeo.com/1087726960
В ходе эксперимента выяснилось, что подкрутка реакций по-прежнему работает по следующей схеме:
Добавление +1 лайка приводит к +3 лайкам.
Удаление -1 лайка – к -3 лайкам.
Добавление +1 дизлайка – к +2 лайкам.
Удаление -1 дизлайка – к -2 лайкам.
Если имеется Telegram Premium, то возможно оставить две реакции:
Добавление +1 дизлайка и +1 лайка дает +5 лайков.
Удаление -1 дизлайка и -1 лайка дает -5 лайков.
Подкрутка реакций срабатывает мгновенно на всех датацентрах, однако синхронизация происходит с задержкой: например, между датацентрами 2 и 5 реакции обновляются с интервалом, варьирующимся от 30 секунд до 3 минут.
ПОДЧЕРКИВАЮ: Главное в этом предложении — подкрутка — МГНОВЕННО — на всех датацентрах — БЕЗ ЗАДЕРЖКИ. Т.е. 1 лайк мгновенно становится 3 лайками на текущем датацентре и затем через некоторый интервал времени другие датацентры получают также подкрученные реакции. Они даже складываются, например:
с учетом задержки синхронизации: ДЦ 2 (+1 лайк) + ДЦ 5 (+1 лайк) → +6 лайков. Такая же пара применима и наоборот, согласно формуле выше для одного датацентра.
Механизм подкрутки работает мгновенно на всех датацентрах — без какой-либо задержки. У обычного пользователя такое бы не вышло, так как новые реакции мгновенно обновляются только на родном датацентре пользователя, у других датацентров будет задержка, и на время задержки у них устарелая информация о реакциях.
Поскольку механизм подкрутки, согласно приведенной формуле, срабатывает мгновенно на всех датацентрах от 1 до 5, я с вероятностью 99% считаю, что только Telegram способен выполнять такую манипуляцию реакциями.
Никакой сторонний злоумышленник не смог бы технически обеспечить мгновенное инкрементирование и/или декрементирование реакций на всех датацентрах с точностью «секунда в секунду». Ни одна ботоферма не предоставляет подобных услуг – это можно убедиться, ознакомившись с соответствующими сайтами, где обычно предлагается накрутка реакций.
Интересно, если Telegram готов так явно подкручивать реакции в одном посте, что ещё может быть нечестным в его работе?
Добавили бы `sleep(2000)` перед накруткой хотя бы.
Как конкурсный пост Telegram раскрыл методы манипуляций и противостояния с WhatsApp