TgWitness / Документация

Справочник / Сбор

Возможности и ограничения

Что реализовано в TgWitness на сегодняшний день, какие ограничения налагает платформа Telegram и над чем предстоит работать в будущем.

Справочная информация по дизайну: 26 октября 2026 года. Основной сценарий использования — частные группы и каналы Telegram, доступные для подключённых учётных записей. В настоящем документе проводится разграничение между реализованным поведением, ограничениями платформы и будущими задачами. Указание элемента целевой архитектуры не означает, что данная функция уже существует.

Автономное приложение#

TgWitness имеет собственную процедуру установки, каталог данных и жизненный цикл выпусков. Входящий в комплект веб-интерфейс обеспечивает настройку и просмотр; экспортированные записи можно использовать независимо.

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

Важны четыре отдельных состояния: авторизация учетной записи, доступ к источнику, работоспособный коллектор и степень подтверждения полноты доставки. Ни одно из первых трёх состояний автоматически не доказывает наличие четвёртого. Отсутствие активности в группе не обязательно означает неисправность коллектора.

Совместные расследования#

Администратор может выдавать токены доступа, привязанные к рабочим пространствам и отдельным чатам, с семью уровнями прав доступа, ограничениями по IP-адресам, сроком действия, ограничениями на вход и контролем сеансов. Рецензент с правами только на чтение может изучать дело без получения авторизации Telegram или ключа главной панели. Доступ, ограниченный конкретным чатом, остается отдельным от настроек на уровне учётной записи и экспорта полного журнала.

Автоматический MTProxy поддерживает рабочие маршруты Telegram из четырёх общедоступных источников или каталога операторов. Режимы IP определяют, следует ли в случае сбоя дожидаться другого прокси-сервера или можно использовать явно разрешённый прямой маршрут. Внешние HTTP-запросы имеют отдельный маршрут и переключатель для отключения.

Инструменты для архивирования#

В текущей версии main добавлены функции сбора истории, поиска и анализа в архиве, MCP только для чтения, локального OCR/транскрипции и исходящих веб-хуков. Это функции, доступные в исходном коде, добавленные после выхода предварительной версии 0.7.0 для портативных систем. Аналитические отчеты и распознанный текст хранятся отдельно от зафиксированных событий.

Дополнительные возможности#

Повседневная настройка: аккаунт → источники → наблюдение. «Дополнительные функции» — это отдельный раздел с ботом Telegram Witness и предварительным просмотром снимков экрана на GitHub. Перед отображением настроек для каждого из них указывается информация о доступности и требованиях. При нажатии на карточку открываются инструкции; это не приводит к регистрации или запуску службы.

Настройка бота состоит из трёх этапов: создание доступа только для чтения, выбор настроек публикации и запуск на хосте Witness. Параметры сети и публикации, существующие подключения и команды проверки раскрываются по запросу. Загруженная конфигурация отличается от работающего «witness». При смене дополнительных настроек черновик сохраняется; изменения учетной записи и блокировка очищают временный токен и форму. Встроенное руководство содержит инструкции по запуску. GitHub Actions запускает закрепленный коллектор из вашего форка, фиксирует один чат и генерирует зашифрованный пакет данных с указанием происхождения рабочего процесса.

Протокол и конфиденциальные источники#

MTProto — это протокол Telegram; Telethon — библиотека на языке Python, которую TgWitness использует для работы с MTProto. Это не альтернативные методы подключения. Функция «Сбор» использует MTProto; дополнительный модуль «Witness» публикует подписанные проверки через Bot API.

Каждая рабочая область имеет собственного авторизованного клиента и поток обновлений учетной записи. TgWitness отбирает данные из настроенных источников и отправляет отдельные явные запросы на выполнение таких функций, как создание моментальных снимков истории и загрузка мультимедиа.

Частному источнику не требуется публичное имя пользователя. Идентификаторами служат тип узла Telegram и числовой идентификатор; названия и имена пользователей могут изменяться. Доступ зависит от существующего членства и разрешений. TgWitness не присоединяется к источникам автоматически и не обходит процедуру утверждения присоединения. Хеш доступа из другой учетной записи не является универсальным токеном доступа.

Модель сбора данных должна учитывать скрытую историю до присоединения, роли участников/администраторов, отзыв сеансов, удаление или изменение прав доступа, переход из группы в супергруппу, темы/форумы, связанные обсуждения, идентификаторы каналов и недоступные вложения. Не все комбинации были проверены в реальных условиях.

Проверка доступности источника осуществляется при запуске сборщика. Отсутствие источника в ограниченном результате диалога означает, что доступ не подтверждён, а не то, что удаление доказано. Отсутствие одного источника не препятствует наблюдению за другими доступными источниками. Ни в коем случае не размещайте ссылки на приглашения или реальные сессии в общедоступных материалах.

Наличие нескольких учётных записей#

Панель поддерживает любое количество рабочих пространств, каждое из которых имеет:

  • Авторизация, зашифрованное хранилище и маршрут соединения.
  • Журнал на базе SQLite и идентификатор подписи Ed25519.
  • Выбранные источники, очередь медиафайлов и настройки захвата.
  • Состояние наблюдения, ошибки, контрольные точки и экспорт данных.

Смена отображаемого рабочего пространства не приводит к остановке работы другого сборщика данных. Повторная авторизация одной и той же учетной записи в разных рабочих пространствах не допускается. Журнал, уже привязанный к одной учетной записи Telegram, не может быть переназначен другой учетной записи; допускается повторное подключение той же учетной записи. Это позволяет сохранить идентичность учетной записи и соответствующий диапазон идентификаторов сообщений.

Фиксированного количества рабочих пространств нет, и гарантии пропускной способности не предоставляется. Рабочие пространства используют один процесс Python и один цикл событий. Реализация отдельных рабочих процессов для учетных записей остаётся задачей на будущее. Для изоляции текущих процессов используйте отдельные установки, порты и каталоги данных.

Присвойте каждому аккаунту источники, к которым он имеет доступ. Различные аккаунты могут наблюдать за одной и той же группой, однако их наблюдения остаются отдельными и сохраняют свою исходную принадлежность. Два аккаунта, расположенные на одном компьютере, управляемом одним оператором, не являются двумя независимыми свидетелями. Экспорт данных осуществляется по рабочим пространствам; объединенный пакет материалов по делу или глобальная временная шкала Telegram не реализованы.

Сбор данных и установление авторства#

В разделе «Источники» предусмотрены переключатели для каждого аккаунта, позволяющие выбирать: новые сообщения, правки, удаления, реакции и членство в группах. Предустановленные настройки сохраняют либо все категории, либо только сообщения, правки и удаления. Данная политика применяется к выбранным группам рабочего пространства, сохраняется после перезапуска и подписывается с указанием состояния до и после изменений. По умолчанию сохраняются все категории. Отключение категории не приводит к удалению старых записей; повторное включение не восстанавливает пропущенные события. Операционные записи, другие события, связанные с обслуживанием групп, и явные моментальные снимки истории являются отдельными. Захваченные объекты Telegram могут сохранять встроенные метаданные независимо от параметров отдельного обновления. На данный момент отсутствует возможность переопределения категорий на уровне группы.

Материалы Зафиксировано сейчас Границы
Сообщение Текст, идентификаторы участников/сообщений, метаданные отправителя, ответы и исходный конверт обновления Отсутствует публично проверяемая подпись Telegram для данного сообщения
Редактировать Новая обнаруженная версия и все ранее сохраненные версии Промежуточные правки, внесённые во время простоя, могут быть утрачены; отправитель не обязательно является редактором
Удаление Уведомление и ранее зафиксированное содержимое (при наличии) Как правило, не указывается лицо, удалившее сообщение, или точное время действия
Удаление без указания объёма Исходное уведомление на уровне учетной записи без предположений относительно собеседника Обеспечение строгой корреляции с ранее сохраненными идентификаторами на уровне учетной записи планируется реализовать в будущем
Реакция Предоставлены счетчики и отображаются недавние идентификационные данные Для получения полного списка доступных реакторов требуются отдельные запросы; каналы могут скрывать идентификационные данные
Членство Сервисные сообщения и обновления, отправленные участникам Видимость зависит от роли и типа чата; отсутствие событий не означает их отсутствия
Действия администратора Только актуальные обновления Отдельный опрос журнала администратора не реализован
Вложение Описание исходной версии, количество загруженных байтов/SHA-256 и результаты попыток Удаленный файл может оказаться невозможным для восстановления; последняя версия не заменяется
История Явный снимок текущих видимых сообщений Не восстанавливает все изменения или удалённый контент
Процесс сбора данных Запуск/остановка, проверка работоспособности, ошибки, настройки, область действия и получение программы Самоотчёт, а не независимое подтверждение процесса

Действие приписывается конкретному лицу только в том случае, если источник действительно указывает этого субъекта. В противном случае интерфейс сообщает об отсутствии атрибуции. Имена пользователей и фамилии являются наблюдаемыми атрибутами, а не доказательством реальной личности.

Вместимость и ограничения Telegram#

Не существует универсального количества чатов, мониторинг которых можно обеспечить с гарантированным качеством. Пропускная способность зависит от пикового количества событий в секунду, объема и размера вложений, дополнительных RPC-запросов, количества активных учетных записей, задержки диска/свободного места, состояния сети, ограничений Telegram, допустимой задержки и глубины очереди.

Telegram проводит различие между пассивной доставкой и активным коротким опросом. В документации по обновлению описываются дополнительные вызовы updates.getChannelDifference для открытых каналов и супергрупп, а также рекомендуется использовать не более десяти источников, подвергающихся одновременному короткому опросу. Это не является ограничением в десять выбранных групп или гарантией полноты данных.

Режим Цель Статус
Стандартное замечание Регистрация обновлений из выбранных источников Реализовано
Приоритетные замечания Дополнительные проверки на различия для ограниченного набора источников Не реализовано в пользовательском режиме

Произвольный высокочастотный опрос, игнорирующий параметр FloodWait или предполагающий линейную пропускную способность дополнительных учетных записей, не является допустимой моделью расчёта объёма данных. По умолчанию ограничения составляют первые 1 000 перечисленных диалогов, до 500 сообщений на один снимок истории, 1–2 000 MiB на каждый собранный файл по типу и 4 GiB несжатого подписанного ZIP-содержимого; каждое из этих значений можно изменить для конкретного рабочего пространства в разделе «Параметры». Экспорт не имеет фиксированного ограничения по количеству событий. Резервный режим браузера по умолчанию ограничен 128 МБ; для потоковой CLI предусмотрен настраиваемый лимит передачи данных, по умолчанию равный 5 ГБ.

tools/check_capacity.py измеряет локальный синтетический приём и экспорт данных. Его результаты не являются показателями доставки Telegram или гарантированным подсчётом реальных чатов. См. файл VERIFICATION.md для ознакомления с измеренной версией и нагрузкой.

Надёжность и восстановление данных#

Реализованные функции включают: WAL SQLite и синхронные транзакции; атомарную запись сообщений и медиафайлов; сохранение заданий и задержки повторных попыток; дескрипторы исходной версии; ограниченные повторные попытки; сохранение медиафайлов с помощью FloodWait; загрузка медиафайлов вне сетевого ожидания текстового события; экспорт с фиксированным префиксом при продолжении последующей записи; атомарные настройки и аудиторские записи; сохранение действующей авторизации после неудачной попытки входа при замене учетных данных; изоляцию повреждённого дополнительного рабочего пространства; явные попытки повторного подключения; отдельную отчётность о потере авторизации; а также обнаружение сдвига реального времени с использованием монотонных часов.

Параметры учетной записи и канала (pts/qts/seq) сохраняются и восстанавливаются после перезапуска, а отслеживаемые чаты периодически перепроверяются; см. формат доказательств. Периодическое сохранение позиции не является атомарным подтверждением принятия журнала без потерь данных.

При каждом запуске процесса фиксируются предыдущая начальная точка и граница автономного режима. Текущая история не рассматривается как восстановление пробелов. Объём сохраняемых данных в Telegram ограничен; differenceTooLong не может восстановить весь исчезнувший контент. Невосполнимые пробелы должны оставаться явно обозначенными, даже если последующий снэпшот истории будет успешным.

Модель доказательств#

Каждое событие фиксирует последовательность, локальное время наблюдения в формате UTC, время источника (если указано), тип, источник, участника (если указан), исходное содержимое, предыдущий хеш и подпись. При наблюдении за сообщениями также сохраняются данные об учётной записи сборщика и контексте запуска.

Подписанная квитанция о процессе содержит случайный идентификатор запуска; версии зависимостей TgWitness/Python/OS; значения SHA-256 исходных файлов и совокупный отпечаток; исходную учетную запись, область действия и настройки; показания UTC/монотонности; а также начальную запись предыдущего журнала. Изменения настроек, запуск/остановка и ошибки заносятся в тот же журнал. Контрольные точки сохраняются при запуске, каждые пять минут во время наблюдения (параметр настраивается) и при упорядоченной остановке. Сохраненная локальная контрольная точка позволяет обнаружить откат к более раннему префиксу журнала.

Механизм Что он обеспечивает
SHA-256 файла Количество байтов совпадает с известным дайджестом
Цепочка хешей событий Упорядочивание и сопоставление записей относительно известной границы
Ed25519 Подпись с использованием конкретного ключа
Независимо сохраняемый контрольный пункт Последующий текст соответствует установленным границам
Анализ размера программного файла Отчёт сборщика о проанализированных файлах
Достоверный независимый ответ TSA Наличие определённых байтов на момент времени TSA при явных допущениях о доверии

Реализованы подготовка запросов в соответствии с RFC 3161 и проверка ответов с помощью OpenSSL. Автоматическая отправка не реализована. Запрос или локальная подпись, содержащая время работы компьютера, не являются независимой временной меткой. См. файл TIMESTAMP.md.

Оператор, контролирующий сборщик данных и ключ подписи, может сфабриковать новые подписанные записи. Подписи не подтверждают происхождение из Telegram, достоверность или автоматическую юридическую допустимость. Для обеспечения более надежного хранения требуются независимые контрольные точки/хранение с фиксацией времени, контроль доступа к ключам, записи о передаче данных и проверка с помощью надежного программного обеспечения.

Экспорт, развертывание и передача#

Подписанный ZIP-архив содержит исходные файлы в форматах JSONL, CSV, HTML, сохраненные вложения, хэши, подписанный манифест и удобный инструмент для проверки. Он охватывает одно рабочее пространство и фиксированный полный префикс журнала. Фильтры поиска на панели не удаляют записи без уведомления. Секретные ключи, токены и сеансы Telegram исключаются; исходные записи по-прежнему могут содержать личную информацию и метаданные Telegram.

Сохраняйте дайджест ZIP-архива, доверенный отпечаток, контрольную точку, подтверждение обработки и передачу отдельно. Используйте средство проверки из надёжной установки, а не доверяйте исполняемому коду исключительно на том основании, что он содержится в проверяемом ZIP-архиве.

Интерфейс браузера поставляется локально без использования Node.js, CDN или внешних шрифтов. Управление установкой осуществляется с помощью одного токен оператора. Для удалённого доступа требуется HTTPS или SSH-туннель. Предоставляются исходные коды на языке Python и определения контейнеров, а примеры сервисов находятся в каталоге deploy/; результаты проверок платформы приведены отдельно.

Рабочая область по умолчанию использует корневой каталог данных; дополнительные рабочие области используют profiles/<id>/. Для создания резервной копии необходимо остановить процесс и иметь полный набор данных и ключей. ZIP-архивы с доказательствами не являются резервными копиями приложения. Для секретных данных можно использовать внешний мастер-ключ для нового каталога данных; шифрование журнала и мультимедиа обеспечивается диском или томом оператора. См. файлы CONNECTION-SECURITY.md и OPERATIONS.md.

Критерии стабильного выпуска#

До выхода стабильной версии следует уточнить:

  1. Реальные закрытые группы, супергруппы, форумы и каналы с ролями участников и администраторов, а также скрытой и видимой историей, включая данные о входе в систему, двухфакторной аутентификации, отзыве доступа и потере доступа.
  2. Контролируемые изменения, удаления, реакции, членство и медиафайлы в сопоставлении с известными действиями.
  3. Сбои процессов/хоста, сбои дисков/переполнение диска, ссылки на файлы с истекшим сроком действия, FloodWait, потеря сетевого соединения, повреждённые файлы и откат базы данных.
  4. Длительное использование нескольких учетных записей с контролируемыми задержками, очередями, объёмом памяти и дисковым пространством, включая как «тихие», так и «шумные» источники одновременно.
  5. Задержка между переходом в следующее состояние протокола MTProto и принятием записи в журнал.
  6. Чистая установка на целевой матрице ОС/контейнеров и проверенное восстановление резервной копии.
  7. Независимый обзор вопросов безопасности, подписей и утверждений об авторстве/доказательствах.

Опрос журнала администратора, дополнительные списки реакторов, приоритетный опрос, отдельные рабочие процессы, а также шифрование на уровне всего приложения остаются задачами на будущее. Ограниченный доступ к панели описан в разделе «Доступ и разрешения». Версия 0.6 поддерживает ограниченный формат TData для одной учетной записи и импорт файлов учетных записей, описанные в файле ACCOUNTS.md. Перед публикацией ознакомьтесь с условиями использования API Telegram. Ссылки на исследования и выводы по платформе приведены в файле RESEARCH.md.