Справочник / Установка
Подключение, прокси и защита данных
Аутентификация, автоматические пулы прокси-серверов, режимы работы с IP-адресами, политика резервного переключения, внешние запросы и хранение секретных данных.
В данном документе описывается поведение TgWitness версии 0.7.0 и его ограничения. Аутентификация, доступ к источнику, сетевое соединение и полнота сбора данных представляют собой отдельные состояния. Для ознакомления с этапами входа в систему, форматами файлов и работой с несколькими учетными записями начните с раздела «Учетные записи и форматы сеансов». Информацию о правилах обработки событий и поведении при перезапуске см. в разделе «Как работает сбор данных».
Методы аутентификации#
Идентификатор API и хеш API служат для идентификации приложения; они не заменяют данные для входа в учётную запись. Их использование в TgWitness не является обязательным. Приоритет: сначала пара, введённая в форму, затем — из импортированного JSON-файла учётной записи, далее — пара, сохранённая в рабочей области, и, наконец, встроенный пул из 50 общедоступных пар, которые пробуются в случайном порядке с автоматической ротацией в случае отказа Telegram. Только пара Telegram Desktop (2040) отправляется с соответствующим описанием клиента Telegram Desktop. Ваша собственная пара из инструментов разработки API на сайте my.telegram.org может использоваться со всеми вашими учётными записями; при этом каждая учётная запись по-прежнему имеет собственную авторизацию.
| Метод | Требования | Служба поддержки TgWitness |
|---|---|---|
| Номер телефона, код, двухфакторная аутентификация (2FA) — по желанию | Доступ к учётной записи; пара API не обязательна | Вход в панель управления |
| HEX-код авторизационного ключа + DC-идентификатор | Полный ключ длиной 512 символов и DC 1–5 | Вкладка «Ключ прямой авторизации»; при желании перед сохранением авторизации проверяется идентификатор пользователя |
| Telethon StringSession | Действительная строка сеанса | Вход в панель управления |
Telethon SQLite .session |
Закрытый, последовательный текст | Прямой импорт схем через панель управления 7/8; опциональный автономный интерфейс командной строки (CLI) |
Pyrogram SQLite .session |
Закрытая производственная сессия пользователя | Прямой импорт схем через панель 2/3 |
| Telegram Desktop TData ZIP | Одна современная учетная запись; локальный пароль, если учетная запись защищена | Преобразование в памяти с проверкой контрольных сумм и расшифровки |
| JSON-файл учетной записи | Поддерживаемые поля API/сессии/ключа | Метаданные сами по себе заполняют учетные данные API; по-прежнему требуется вход с помощью сеанса/ключа или номера телефона/QR-кода |
| Вход с помощью QR-кода | Подтверждение от официального приложения Telegram | Локальное генерация QR-кодов, управление сроком действия и повторными попытками, опциональная двухфакторная аутентификация (2FA) |
| TDLib / Pyrogram StringSession | Другие форматы, специфичные для библиотек | Не поддерживается |
| Токен бота | Бот с собственной моделью доступа и обновления | Не используется данным сборщиком данных |
Telegram использует доставку кодов; доставка SMS не гарантируется. Хеш API не может восстановить отмененную сессию или заменить забытый пароль двухфакторной аутентификации. TgWitness не сохраняет коды входа или пароль двухфакторной аутентификации Telegram на диск.
Для частного источника учетная запись должна уже иметь доступ. Имя пользователя группы не требуется. Использование прокси или импорт сеанса не предоставляют ни членства, ни прав администратора. Текущее членство не гарантирует доступ к истории, предшествующей вступлению в группу.
Импорт файла сеанса Telethon#
Telethon SQLite, Pyrogram SQLite и Telegram Desktop TData используют разные форматы. Панель распознаёт и преобразует поддерживаемые структуры; переименование файла не меняет его формат. Выберите одну сессию и сопутствующий JSON в разделе «Файлы», затем нажмите «Подключить аккаунт». Допускается до четырёх связанных файлов общим объёмом до 8 MiB. Подробности о TData и JSON приведены в разделе «Ограничения форматов». Восстановление локального пароля не поддерживается. Вход по номеру телефона с 2FA или по QR-коду создаёт отдельную авторизацию.
Дополнительный путь командной строки, доступный исключительно для Telethon, по-прежнему остается в использовании:
- Прекратите работу клиента, использующего исходную сессию, и создайте точную копию. Конвертер отклоняет файлы с незавершённым журналом WAL. Закройте исходный клиент надлежащим образом, а не удаляйте эти файлы, чтобы обойти проверку.
- Из среды TgWitness выполните следующую команду:
python -m tgwitness.sessions account.session --out account.tgwitness-session
- В разделе «Добавить аккаунт» → «Файлы» загрузите результат или вставьте его строку и продолжайте.
- Проверьте отображаемый цифровой идентификатор аккаунта, выберите источники и начните наблюдение.
Конвертер открывает базу данных SQLite только для чтения, не выполняет обновления схемы и не отправляет сетевых запросов, а также не выводит данные сеанса. Он проверяет версию схемы, типы таблиц, одну строку сеанса, IP-адрес/порт/дата-центр и длину ключа. Объём входных данных в командной строке ограничен 64 MiB; текст StringSession ограничен 4 KiB. Конвертация через панель управления загружает файлы на аутентифицированный сервер TgWitness, обрабатывает их в памяти и возвращает нормализованные учетные данные в тот же браузер без сохранения загруженных оригиналов. Для удаленного сервера используйте протокол HTTPS.
Преобразованный файл представляет собой незашифрованный секретный ключ доступа к учётной записи. Храните его в защищённом месте и ни в коем случае не фиксируйте его в репозитории и не отправляйте сторонним сервисам конвертации. TgWitness сохраняет авторизованную сессию в своём зашифрованном хранилище. Копирование сессии не приводит к созданию отдельной авторизации: не запускайте одновременно несколько клиентов с клонированными ключами авторизации и не предполагайте независимую доставку обновлений.
Преобразование передаёт авторизацию, а не исходные сообщения, кэш объекта или постоянный курсор обновления. Оно не обеспечивает восстановление обновлений после перезапуска процессов.
MTProto, Telethon и прокси-серверы#
MTProto — это протокол Telegram. Telethon — это библиотека клиента на языке Python, которую использует TgWitness. MTProxy — это транспортный прокси Telegram; SOCKS5 и HTTP CONNECT обеспечивают общие туннели. Ни один из них не заменяет аутентификацию учетной записи.
Сохраните маршрут для каждого рабочего пространства в разделе «Аккаунт» → «Настройки» → «Настройки подключения» → «Изменить маршрут подключения» перед входом в систему. Для новых рабочих пространств по умолчанию установлен режим «Автоматический MTProxy» · публичные списки с функцией «Скрыть IP». Существующие рабочие пространства, в которых явно использовался режим «Прямой», сохраняют режим, допускающий его использование.
Режимы IP#
Маршрут определяет тип соединения. Режим IP определяет, когда адрес сервера может быть раскрыт. Эти настройки не предусматривают установку VPN и не перенаправляют весь трафик устройства.
| Режим | Telegram | Внешние запросы |
|---|---|---|
Hide IP (hide) |
Используйте прокси; если ни один из них не работает, подождите. Прямого резервного варианта нет. | Требуется SOCKS5/HTTP; запросы без соответствующего прокси-сервера отклоняются. |
Разрешить использование запасного варианта (fallback) |
Автоматический MTProxy может использовать Direct по истечении настроенной задержки, а затем вернуться к рабочему прокси-серверу. | Предпочтительно использовать настроенный внешний прокси-сервер или маршрут SOCKS5/HTTP учетной записи; в противном случае допускается использование прямого подключения. |
Tunnel / VPN (tunnel) |
Допускаются прямые маршруты и немедленное переключение на резервный пул. | Прямой доступ разрешён, если не настроено соответствующее прокси-сервер. |
Режим «Туннель/VPN» предполагает, что вы управляете этой сетью отдельно. Без работающего туннеля адресаты могут увидеть собственный адрес сервера. Выбирайте режим в соответствии с вашей фактической сетевой конфигурацией, а не по названию опции.
Выберите вариант#
| Маршрут | Настройки | Границы |
|---|---|---|
| Автоматический MTProxy | Встроенные списки или каталог операторов | Поддерживается рабочий маршрут Telegram; выбор альтернативного варианта зависит от режима IP |
| Прямой | Режим туннеля/VPN | Telethon использует сетевой маршрут хоста |
| SOCKS5 | Хост, порт, опционально — имя пользователя/пароль | python-socks, поддержка удалённого DNS-адреса |
| HTTP CONNECT | Хост, порт, опционально — имя пользователя/пароль | Используется простой HTTP-запрос CONNECT; поддержка TLS для самого прокси не реализована |
| MTProxy | Хост, порт, секретный ключ | Экспериментальный формат передачи данных Telethon: 32 шестнадцатеричных цифры или «dd» + 32 шестнадцатеричных цифры |
Поддельные секретные ключи TLS ee отклоняются. Функция нормализации в Telethon 1.45 может удалять префикс
и домен, однако это не реализует механизм Fake TLS. Вставьте tg://proxy?server=…&port=…&secret=…
или https://t.me/proxy?server=…&port=…&secret=… и выберите «Заполнить поля из ссылки».
При этом происходит проверка и заполнение полей без установления соединения или сохранения; проверьте и сохраните
маршрут отдельно. Поля для ручного ввода остаются доступными. См. ссылки на прокси Telegram.
Общедоступные прокси-серверы, предоставляемые вашей установкой#
Встроенный список объединяет четыре источника: SoliSpirit/mtproto, zakky8/mtproto-proxy-pro, kort0881/telegram-proxy-collector и 3yed-61/MTP-Collector. Включённый в комплект снимок содержит данные о конечных точках, информацию об источниках и даты загрузки. Наличие провайдера в списке не является доказательством того, что прокси работает или предоставляет все обновления Telegram.
MTProxy автоматически проверяет работоспособность транспортного соединения Telegram, поддерживает рабочий прокси-сервер и переключается на другой в случае сбоя. Рабочие пространства предпочитают использовать разные прокси-серверы при наличии достаточного количества рабочих записей; уникальный выходной адрес не гарантируется. Неработающие прокси-серверы отдыхают перед повторной попыткой. Если ни один из них не работает, режим IP определяет, следует ли сбору данных подождать или можно использовать прямое соединение. Смена прокси-серверов не приводит к смене учётной записи или удалению её журнала. Выбор и изменения маршрутов фиксируются в подписанном журнале.
Пока активны автоматические маршруты, списки обновляются ежечасно, а проверки каналов транспорта выполняются по умолчанию каждые десять минут. Эти интервалы можно настроить. Обновление общедоступных списков инициирует их перезагрузку; простой просмотр списка не изменяет сохраненный ручной маршрут.
Каждый ответ из канала ограничен размером 1 МиБ с таймаутом запроса в восемь секунд и
общим лимитом на загрузку в 20 секунд; перенаправления
отклоняются. Сохраняется и дедуплицируется до 64 совместимых записей на каждый источник.
Парсер принимает поддерживаемые секретные ключи в шестнадцатеричном формате и формате base64url, а также JSON-канал.
Поддельные TLS-ee, недействительные ссылки, литералы частных/зарезервированных IP-адресов и локальные имена хостов
пропускаются. Имена хостов преобразуются и проверяются перед использованием, а выбранный IP-адрес фиксируется
для данного соединения. При автоматическом повторном подключении имя хоста преобразуется заново; для повторного преобразования
необходимо повторно ввести запись вручную.
В случае неудачных, пустых или несовместимых ответов канала сохраняется предыдущий снимок источника. Обновления являются атомарными, сериализованными и ограничены одной попыткой в минуту на каждое рабочее пространство. Успешный тест связи подтверждает установку соединения, но не гарантирует анонимности или полноты сбора данных.
Трафик Telegram и HTTPS-запросы используют разные маршруты. Загрузка списков осуществляется через
отдельное HTTPS-соединение и предоставленный маршрут внешних запросов.
TGWITNESS_PROXY_FEED_PROXY явно переопределяет этот маршрут с помощью HTTP/SOCKS5-прокси;
оба варианта сборщика Compose перенаправляют его. Фоновый пул следует за основным рабочим пространством.
Ни сеансы Telegram, ни учетные данные API, ни токен панели, ни токен бота не передаются поставщикам данных.
Названия поставщиков, даты создания моментальных снимков и маршрут загрузки указаны в разделе «Откуда взят список».
MTProxy передаёт исключительно трафик Telegram. HTTP-операции рабочей среды, такие как установка временных меток, уведомления, создание внешних копий и проверка источников, используют отдельный SOCKS5/HTTP-прокси, если он настроен, а затем — маршрут SOCKS5/HTTP учетной записи. При отсутствии любого из них Hide IP отклоняет запрос; в остальных режимах разрешен прямой доступ. Внешние запросы можно отключить. Явно настроенный прокси для загрузки каналов по-прежнему управляется отдельно оператором. Независимый сервис «Witness» использует собственный маршрут.
Параметры автоматического пула
В разделе **«Параметры» → «Автоматический MTProxy»** настройте порог сбоя, время ожидания, плановую ротацию, совместное использование прокси-серверов и допустимую задержку переключения на резервный сервер. | Параметр | По умолчанию | | --- | --- | | Отключения до замены | 3 за 10 минут | | Количество проб прокси на одну попытку подключения | 3 | | Первая / максимальная пауза после сбоя | 10 минут / 6 часов | | Планируемая ротация | Отключено; переключение при сбое | | Количество учетных записей на один прокси | 0: предпочтительно использовать отдельные записи, совместное использование — по необходимости. Установите значение 1, чтобы дождаться эксклюзивной записи. | | Задержка до разрешённого перехода на Direct | 10 минут; функция «Скрыть IP» по-прежнему блокирует Direct | | Обновление канала / проверки канала передачи | 60 / 10 минут; значения основного рабочего пространства применяются к общему пулу | Использование разных прокси-серверов не гарантирует разных адресов выхода. Эти настройки не отменяют ограничения Telegram и не обеспечивают анонимность.Чтобы заменить общедоступный список на свой собственный каталог операторов, настройте приведённую ниже переопределение.
Это полностью отключает внешние подписки, в том числе в случае, когда массив proxies пуст.
Скопируйте пустой каталог
в папку «proxy-config/proxies.json
» и добавьте ваши развернутые публичные конечные точки:
{"format": "tgwitness-proxy-catalog-v1", "proxies": [
{"id": "project-eu", "label": "Project EU",
"link": "tg://proxy?server=REPLACE_HOST&port=443&secret=REPLACE_SECRET"}
]}
Примерные значения необходимо заменить. Допускается до 32 уникальных записей. Аутентифицированный список возвращает метки/хосты/порты без общих секретных ключей; при выборе одного из них его учетные данные сохраняются в хранилище рабочей среды. Доступность остается непроверенной до момента явно указанного теста транспорта. При наличии некорректно сформированного каталога допускается ручная настройка.
Запуск в нативной среде: укажите TGWITNESS_PROXY_CATALOG в качестве локального пути к файлу JSON. Docker:
docker compose -f compose.yaml -f deploy/compose/compose.proxies.yaml up -d --build
Накладка монтирует каталог proxy-config в режиме «только для чтения»; файлы должны быть доступны для чтения контейнеру с UID 10001.
Данный каталог исключён из Git, контекста сборки Docker и архивов исходного кода. В этом
каталоге настраиваются учётные записи для сбора данных; бот-свидетель использует собственный
маршрут HTTP/SOCKS5, а не MTProxy.
Прямой резервный вариант регулируется описанным выше IP-режимом. Приостановите наблюдение перед изменением маршрута. Сохранение отключает старые клиенты и отменяет незавершённый вход в систему; новый клиент использует сохранённый маршрут. Связь между учётной записью и журналом/сессией сохраняется. Настройки заменяют предыдущий маршрут: при их редактировании необходимо повторно ввести учетные данные прокси.
Учетные данные шифруются с использованием алгоритма network.enc. API не возвращает имя пользователя,
пароль или секретный ключ. Подписанные записи содержат тип маршрута и информацию о наличии
учетных данных, исключая конечную точку и секретные ключи. Оператор может увидеть конечную точку
в панели управления. Поля с секретными данными очищаются после сохранения, блокировки или переключения рабочих пространств.
Функция «Проверить соединение с Telegram», доступная также до входа в систему, открывает и закрывает временное неавторизованное соединение с Telegram через маршрут. Она не обращается к веб-сайту проверки IP-адресов. Успешное выполнение этой функции подтверждает наличие транспортного соединения, но не гарантирует доступ к группам, полную доставку сообщений или анонимность.
Прокси применяется к соединениям клиента Telegram, включая загрузку медиафайлов из дата-центров Telegram.
Для браузера, pip, SSH и запускаемых вручную инструментов TSA предусмотрены отдельные маршруты.
Имя хоста прокси может разрешаться локально. rdns влияет на имена хостов назначения;
Telegram часто предоставляет числовые IP-адреса дата-центров.
Протоколы SOCKS5 и простой HTTP CONNECT сами по себе не шифруют учетные данные прокси-сервера или туннель «клиент-прокси». MTProto отдельно защищает трафик Telegram. Используйте соответствующий безопасный канал для подключения к прокси в ненадежной сети. Закрытые группы являются облачными чатами; протокол MTProto не преобразует их в секретные чаты с сквозным шифрованием.
Шифрование и подписи#
| Уровень | Реализовано | Ответственность оператора |
|---|---|---|
| Трафик Telegram | Telethon MTProto | Доверие к платформе, маршрутизация и доступность |
| Веб-панель | Токен-носитель, настройка loopback по умолчанию, ограничения на количество запросов | HTTPS или SSH-туннель для удалённого доступа |
| Секреты | Fernet для хранения учетных данных API, сеансов, учетных данных прокси и закрытого ключа для подписи | Обеспечьте защиту ключа дешифрования и хоста, на котором работает система |
| Ключ хранилища | Локальный ключ или внешний мастер-ключ для новой установки | Отдельное защищённое хранилище и резервное копирование ключей |
| Сообщения и вложения | Хранение приложений в виде открытого текста | Зашифрованный диск/том |
| ZIP/JSONL/CSV/HTML | Проверка целостности данных, отсутствие шифрования содержимого | Защита экспортированных копий и передач данных |
| Происхождение и время | Подписанный журнал, подтверждение обработки, инструменты в соответствии с RFC 3161 | Доверенный ключ, независимые контрольные точки/TSA и процедура хранения |
В разделе «Защита хранилища» в учетной записи отображаются следующие состояния. Токен панели — это секретный ключ доступа, а не пароль для шифрования. Он предоставляет права администратора; выданные токены могут быть привязаны к конкретным учетным записям и чатам. Рабочие пространства используют общий хост-процесс и не являются изолированными арендаторами.
Явно запущенная, изолированная синтетическая демонстрационная версия может открываться автоматически через прямое лупбэк-соединение. При этом используется отдельная функция, действующая в течение срока жизни процесса; она ни раскрывает настроенный токен панели, ни предоставляет доступ к реальным рабочим пространствам. Удалённые, проксированные или междоменные запросы не могут получить доступ к этой функции автоматического входа или использовать её. Данная удобная функция не снимает ограничений аутентификации в отношении данных реальных учетных записей.
BitLocker, LUKS, FileVault или управляемый зашифрованный том могут обеспечить защиту хранилища в рамках соответствующих моделей угроз. Администратор разблокированного работающего компьютера по-прежнему может прочитать данные. При планировании хранилища учитывайте файлы WAL/SHM баз данных SQLite, мультимедиа, временные экспортные файлы, файлы подкачки, резервные копии и загрузки из браузера. Том Docker не шифруется только по той причине, что он является томом. TgWitness не реализует шифрование SQLCipher или объектное шифрование.
Внешний мастер-ключ#
При новой установке поместите главный ключ за пределами каталога данных. Это не приведёт к автоматическому переносу существующего хранилища с локальными ключами. Подготовьте каталог для ключей, доступный только для учетной записи службы, а затем выполните:
python -m tgwitness.security create-master-key /private/keys/tgwitness-master.key
export TGWITNESS_VAULT_KEY_FILE=/private/keys/tgwitness-master.key
python -m tgwitness --data-dir /private/observations/new-case
PowerShell с использованием установленной среды проекта:
python -m tgwitness.security create-master-key E:\PrivateKeys\tgwitness-master.key
$env:TGWITNESS_VAULT_KEY_FILE = 'E:\PrivateKeys\tgwitness-master.key'
python -m tgwitness --data-dir E:\PrivateData\new-case
В Docker смонтируйте файл в режиме «только для чтения» вне каталога /data, например, в каталоге
/run/secrets/tgwitness-master.key, и задайте переменную среды с указанием этого пути.
UID службы должен иметь права на чтение этого файла. Передавайте путь, а не байты ключа, через
файлы среды/конфигурации.
Каждое рабочее пространство получает случайный публичный солевой ключ (salt) и собственный ключ Fernet, полученный с помощью алгоритма
HKDF-SHA256. В базе данных «vault.external.json» хранятся метаданные о выведении ключа, а не сам мастер-ключ.
Отсутствие или неверность ключа приводит к сбою при запуске без автоматической замены. Сохраняйте как
метаданные о солевом ключе, так и мастер-ключ для восстановления.
Все рабочие пространства производятся от одного и того же мастер-ключа; его компрометация затрагивает всю инсталляцию. Запущенный процесс может расшифровывать секретные данные. Это не HSM и не KDF на основе пароля. Произвольные пароли, введенные пользователем, не допускаются вместо случайного ключа.
Сохраняйте существующий ключ для действующих установок до тех пор, пока не будет
осуществлена и проверена плановая миграция. Удаление vault.key или замена мастер-ключа может привести к
потере доступа к сеансам/ключам подписи. Храните зашифрованные резервные копии и ключи отдельно и
проверяйте возможность восстановления в изолированной среде.
Источники и объем проверки#
Проверено 26 октября 2026 года:
- https://core.telegram.org/api/auth
- https://core.telegram.org/api/obtaining_api_id
- https://docs.telethon.dev/en/stable/basic/signing-in.html
- https://docs.telethon.dev/en/stable/concepts/sessions.html
- https://core.telegram.org/mtproto/mtproto-transports
- https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/SourceFiles/storage/storage_account.cpp
- Telethon 1.45.0: SQLiteSession, StringSession,
Connection._proxy_connect,TcpMTProxy.normalize_secretи методы загрузки.
Локальные тесты охватывают фикстуры SOCKS5/HTTP CONNECT с обратной связью, синтетические сессии SQLite, изоляцию маршрутов, исключение секретных данных и отказ при отсутствии ключа. Они не позволяют установить реальную совместимость Telegram и прокси-сервера, а также поведение MTProxy в реальных условиях. См. файлы VERIFICATION.md и LIVE_ACCEPTANCE.md.