Документация / 02
Выгрузка через GitHub Actions
Выгрузите чат на временной машине GitHub и получите зашифрованный архив с проверяемым происхождением.
Полный справочник
Предварительная версия в ветке main. Пользователь делает форк,
запускает задачу, входит в Telegram во временной панели и выбирает один чат.
Сборщик сохраняет доступные сообщения и вложения, GitHub создаёт аттестацию
готового ZIP, затем результат шифруется открытым ключом пользователя.
Запуск по шагам#
Схема показывает пять этапов и подмену сообщения или сборщика на примере. Кнопка «Перейти к выгрузке» открывает мастер.
- Нажмите «Выгрузка через GitHub Actions» на главной странице проекта,
экране входа в панель или откройте «Экспорт → Открыть помощник выгрузки».
Прямая ссылка на помощник.
Можно также открыть
tgwitness/static/capture.htmlиз доверенной копии репозитория локально в современном браузере. - Нажмите «Создать и сохранить ключ». Сохраните
sealed-key.jsonу себя. В GitHub копируется только отдельно показанное значение recipient. Закрытый файл ключа нельзя публиковать. Без него результат не восстановить. Отметьте, что сохранили файл, и перейдите на следующий шаг. Если архив уже получен, загрузите свой ключ и нажмите «У меня уже есть архив». - Нажмите «Создать форк TgWitness», затем в своём форке откройте Actions и включите выполнение workflow. Выберите Sealed chat capture → Run workflow. Вставьте только recipient и выберите 30, 60 или 120 минут. Телефон, коды, пароль Telegram и закрытый ключ в поля GitHub не вводятся.
- Не дожидаясь конца задачи, скачайте артефакт sealed-connection.
Распакуйте ZIP и откройте
connection.tgwsealedв помощнике. Если страница перезагружалась, сначала загрузите сохранённыйsealed-key.json. - Откройте полученную ссылку. Введите собственные
api_idиapi_hash, войдите по QR либо телефону/коду и паролю 2FA. Готовые Telegram-сессии импортировать нельзя. Загрузите список чатов и выберите один источник. API-пару получают на my.telegram.org/apps. Ссылка открывает временную панель и содержит секрет доступа: не публикуйте её. - Дождитесь сбора или завершите его с уже доступными данными. Пропуски, ошибки вложений и остановка по времени остаются в подписанном журнале.
- Скачайте sealed-result, распакуйте и откройте
delivery.tgwsealedсвоим ключом в помощнике. Полученныйdelivery.zipсодержитevidence.zipиattestation.jsonl. Для файлов больше 256 МиБ используйте локальную команду:
python -m tgwitness.sealed_crypto decrypt delivery.tgwsealed --key sealed-key.json --out delivery.zip
Проверка результата#
Распакуйте delivery.zip и проверьте evidence.zip доверенной установкой TgWitness:
python -m tgwitness.sealed_verify evidence.zip --bundle attestation.jsonl --repo OWNER/TgWitness
Нужны зависимости TgWitness и актуальный GitHub CLI. Проверка требует одобренную версию нашего общего workflow, даже если запуск принадлежит пользовательскому форку. Подпись произвольного изменённого форка не подходит. После окончания завершите временную сессию в Telegram → Настройки → Устройства, если её отзыв не подтверждён или задача была принудительно убита.
Проверяющему передают evidence.zip и attestation.jsonl. Закрытый ключ
sealed-key.json передавать не нужно: он используется только для расшифровки
доставленного пакета. Расшифровка без последующей проверки аттестации не
подтверждает, каким кодом получен архив.
Какой режим выбрать#
В разделе «Экспорт → Открыть помощник выгрузки» мастер работает прямо внутри панели. Отдельная страница использует тот же мастер, оформление и темы. Четыре шага показывают, где вы находитесь: ключ → GitHub → сбор → готовый архив. GitHub и временная панель Telegram открываются в новых вкладках; после сбора нужно вернуться в мастер. При блокировке рабочей панели ключ удаляется из её памяти. Сохранённый файл ключа остаётся на вашем устройстве.
| Задача | Вариант |
|---|---|
| Один доступный аккаунту чат, ограниченное время сбора, архив с аттестацией запуска | Выгрузка через GitHub Actions |
| Несколько чатов, постоянное наблюдение, поиск, чтение и управление аккаунтами | Локальная установка или Docker |
| Восстановить удалённое до сбора или получить абсолютное доказательство истинности сообщений | Ни один из этих вариантов этого не обеспечивает |
Это отдельный сбор: существующий журнал и сессия из вашей локальной панели никуда не загружаются. В облаке нужно войти заново. Источник выбирается один раз; после старта заменить чат нельзя. При остановке по времени после начала сбора сохраняется частичный результат с указанием пропусков. До начала сбора или при отмене архив не создаётся. После уничтожения раннера продолжить тот же сбор нельзя — следующий запуск создаст новый журнал.
Форк, ключи и приватность#
Форк публикует копию кода, а не вашу переписку. Данные Telegram не нужно
коммитить в репозиторий. В параметры workflow передаются открытый ключ
шифрования recipient и время работы. Закрытый sealed-key.json остаётся у вас.
Не помещайте в репозиторий, Issues или логи API-ключи Telegram, коды входа,
пароль 2FA, файлы сессий, закрытый ключ и расшифрованную ссылку подключения.
В Artifacts загружаются только зашифрованные connection.tgwsealed и
delivery.tgwsealed. Срок хранения — один день. Скачайте их вовремя.
sealed-key.json нужно хранить отдельно: без него ни мы, ни GitHub не смогут
восстановить зашифрованный результат.
Во время работы Telegram-сессия и открытые данные находятся на временной машине GitHub. GitHub и HTTPS-туннель входят в модель доверия. Аттестация может публично раскрывать хеш архива и сведения о workflow, но не содержит саму переписку. Её время относится к фиксации архива, а не подтверждает даты сообщений.
Два разных ключа решают разные задачи: ваш закрытый ключ расшифровывает доставку, а ключ журнала внутри сборщика подписывает наблюдения. Внешняя аттестация GitHub связывает готовый архив с разрешённой версией workflow. Проверка требует именно её: обычной подписи произвольного изменённого форка недостаточно.
Если что-то не получается#
| Проблема | Что проверить |
|---|---|
| Нет кнопки Run workflow | Открыт ли ваш форк, включён ли Actions и синхронизирован ли форк с main исходного репозитория. Не меняйте закреплённые версии сборщика ради обхода ошибки. |
| Не появился sealed-connection | Задача должна стартовать и пройти создание панели и загрузку артефакта. Очередь, правила репозитория, ошибка загрузки образа или туннеля могут остановить запуск. |
| Ссылка не открывается | Раннер ещё работает; артефакт распакован; загружен ключ именно этого запуска. |
| История приостановлена | Посмотрите статус в панели. Пока задача активна, можно продолжить чтение или завершить с уже собранными данными. Telegram может ограничить запросы. |
| Нет sealed-result | После отмены и истечения времени до выбора чата архива нет. Ошибка сбора, аттестации или упаковки тоже предотвращает выдачу результата. Посмотрите упавший шаг, не публикуя секреты. |
| Большой файл не открывается в браузере | Для пакетов больше 256 МиБ используйте команду расшифровки выше. Ошибочный или потерянный ключ не заменяется новым. |
| Проверка отклоняет подпись | Укажите точное OWNER/REPOSITORY своего форка и используйте доверенную актуальную версию TgWitness. Не принимайте файл политики, предложенный вместе с неизвестным архивом. |
| Сессия осталась в Telegram | Завершите её в «Настройки → Устройства». Автоматический выход может не сработать при сетевой ошибке или принудительном завершении задачи. |
Что проверено и чего режим не обещает#
Перед важной выгрузкой проверьте небольшой чат под своим контролем: сообщение и вложение должны попасть в архив, расшифровка и проверка должны завершиться успешно, а временная сессия — исчезнуть из Telegram либо требовать ручного отзыва. Автоматические тесты проверяют синтетический чат и отдельно настоящую аттестацию GitHub; они не заменяют сквозной тест с реальным аккаунтом.
GitHub и HTTPS-туннель остаются доверенной инфраструктурой: это не аппаратный анклав и не гарантия отсутствия доступа к памяти машины. Подпись фиксирует архив и происхождение запуска, но не превращает сообщения в подписанные Telegram документы. Удалённое до сбора и прошлые правки не восстанавливаются. Скриншоты и запись экрана автоматически не создаются.
Форк не отменяет правил использования Actions. Эта версия предназначена для проверки функции; обещать на её основе неограниченный бесплатный сервис нельзя. Подробности, ограничения, криптографический формат, проверка без сети и порядок публикации закреплённых версий: Sealed Actions.