Справочник / Сбор
Возможности и ограничения
Что реализовано в 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.
Критерии стабильного выпуска#
До выхода стабильной версии следует уточнить:
- Реальные закрытые группы, супергруппы, форумы и каналы с ролями участников и администраторов, а также скрытой и видимой историей, включая данные о входе в систему, двухфакторной аутентификации, отзыве доступа и потере доступа.
- Контролируемые изменения, удаления, реакции, членство и медиафайлы в сопоставлении с известными действиями.
- Сбои процессов/хоста, сбои дисков/переполнение диска, ссылки на файлы с истекшим сроком действия, FloodWait, потеря сетевого соединения, повреждённые файлы и откат базы данных.
- Длительное использование нескольких учетных записей с контролируемыми задержками, очередями, объёмом памяти и дисковым пространством, включая как «тихие», так и «шумные» источники одновременно.
- Задержка между переходом в следующее состояние протокола MTProto и принятием записи в журнал.
- Чистая установка на целевой матрице ОС/контейнеров и проверенное восстановление резервной копии.
- Независимый обзор вопросов безопасности, подписей и утверждений об авторстве/доказательствах.
Опрос журнала администратора, дополнительные списки реакторов, приоритетный опрос, отдельные рабочие процессы, а также шифрование на уровне всего приложения остаются задачами на будущее. Ограниченный доступ к панели описан в разделе «Доступ и разрешения». Версия 0.6 поддерживает ограниченный формат TData для одной учетной записи и импорт файлов учетных записей, описанные в файле ACCOUNTS.md. Перед публикацией ознакомьтесь с условиями использования API Telegram. Ссылки на исследования и выводы по платформе приведены в файле RESEARCH.md.