- SpamBot Telegram — не один bot, а несколько layer'ов защиты. Часть публично документирована, часть выведена через observation.
- 6 главных сигналов: session.entropy, swipe.velocity, pause.entropy, typing.cadence, fingerprint.mask, + 6-й (proprietary).
- Методика наблюдения: ~1 800 ban events в клиентской базе, correlation по features, A/B тесты на test-аккаунтах.
- Ни один сигнал по отдельности не даёт бан — нужно 2-4 совпадения. Это осложняет detection bots, но и повышает важность «закрыть всё».
- Если моделируешь <3 сигналов — в зоне риска. 4-5 — относительно безопасно. Все 6 — практически invisible.
Telegram не публикует механику своего anti-spam. Это разумно: публикация = roadmap для обхода. Но для нас, как вендора anti-ban решения, понимание механики критично. Невозможно эффективно обходить фильтр, который ты не понимаешь.
Эта статья — дистиллят 3 лет наблюдений. Не от Telegram-инженеров (их у нас нет), а от статистического анализа реальных ban events в нашей клиентской базе + контролируемые A/B тесты на test-аккаунтах.
Как мы выводим сигналы
Базовая methodology:
- Collect ban events — каждый раз, когда у клиента банится аккаунт, мы логируем полный контекст: сколько сообщений отправил, за какой период, с какими device fingerprints, через какие proxy, в какие группы.
- Correlation analysis — ищем features, которые коррелируют с бан-событиями. Например, «аккаунты с fingerprint из top-3 most common get banned 2.3× чаще, чем с rare fingerprints».
- A/B testing на test-аккаунтах — берём 50-100 тестовых аккаунтов, применяем разные стратегии, ждём 30-60 дней, сравниваем ban rate. Воспроизводимо.
- Elimination — убираем по одному фактору, смотрим, какой даёт падение ban rate. Isolated causality.
Результат — 6 сигналов ниже. Уверенность в каждом разная: первые 4 — высокая (воспроизводили многократно), 5-й — средняя, 6-й — гипотетический.
session.entropy
Распределение длительностей сессий аккаунта. Живой юзер: логнормальное. Бот: обычно uniform или фиксированные.
Как детектит Telegram: у них есть история сессий на server-side. Посчитать entropy distribution — дело не вычислительно дорогое, можно делать для millions аккаунтов в batch.
swipe.velocity
Скорость прокрутки чат-листа + траектория. У живых — bezier с micro-jitter. У ботов — прямая.
Как детектит: клиенты Telegram (TDesktop, iOS/Android apps) отправляют telemetry scroll-событий. Это не явное API, но встроенная телеметрия в app's.
Мы не можем подделать scroll через self-written client (TDLib не scroll'ит). Но можем использовать official clients с automation (через адресное пространство memory + synthetic input events). Это сложно и фрагмитировано, используется только в premium anti-detect setups.
pause.entropy(μ, σ)
Интервалы между действиями. Паузы зависят от контекста (читал длинное сообщение → долгая пауза перед ответом; увидел короткое → быстрая реакция).
Ключевое: у ботов паузы не коррелируют с контекстом. Scheduler просто ждёт фиксированный интервал. У живых — варьируется.
Проверка: если твой bot отвечает одинаковой паузой на «ок» и на «расскажите подробнее про Feature X, Y, Z» — это сигнал.
typing.cadence
В Telegram есть «typing indicator» — показывает «печатает...» пока юзер печатает. API позволяет послать sendChatAction(typing) — и делать это правильно важно.
Живой юзер:
- Начинает typing indicator
- Печатает 1-10 секунд (зависит от длины сообщения)
- Паузы на backspace (редко, ~10% сообщений)
- Отправляет
Бот обычно: либо не использует typing indicator вообще, либо посылает его на фиксированную длительность перед отправкой. Оба варианта — bot signatures.
fingerprint.mask
Device fingerprint собирается при authentication и attached к session. Для MTProto: device_model, app_version, system_version, lang_code.
Анализ: Telegram может групировать session'ы по fingerprint-cluster'ам. Если 50 аккаунтов имеют identical fingerprint (что редкий случай для реальной популяции 950M users), это signal.
Propritetary signal (скрыт)
Наблюдение: есть баны, которые происходят при, казалось бы, правильных 5 первых сигналах. Значит, есть 6-й, который мы не идентифицировали.
Гипотезы (не подтверждённые):
- Network-level ML на metadata пакетов
- Social-graph analysis (who you write to vs who writes back)
- Cross-account correlation через shared IP / cookies
- Content understanding beyond hash (semantic similarity LLM-style)
Мы не знаем точно. В TG:ON есть mitigation strategies, которые эмпирически снижают bans, но точная механика — spec'ы.
Как применять
Реальный чек-лист по сигналам:
- Session entropy: log-normal distribution session durations (μ=10min, σ=0.9)
- Swipe velocity: если используешь automation (TDLib), не trigger'и bot-like events. Если используешь browser automation, моделируй bezier curves
- Pause entropy: context-aware delays, зависящие от content length
- Typing cadence: send typing_indicator + типировать со скоростью 4-8 CPS (chars per second)
- Fingerprint mask: sample из real-world distribution, stable per-account
- 6th signal: базовая гигиена (residential IP, normal warmup) обычно достаточна
TG:ON для macOS · Windows · Linux
Desktop-приложение, 160 MB. Работает локально, твои ключи остаются у тебя. 3 дня триала без карты.
Скачать бесплатно5 сигналов моделируется.
6-й — мягкая мitigation.
В TG:ON весь стек anti-bot signals работает по умолчанию. 3 дня триала — наблюдай bouncetail на своих аккаунтах.
Начать триал