Telegram Source Code: исходный код мессенджера и работа с ним

Исходный код клиентских приложений Telegram опубликован в открытом доступе на GitHub — репозитории Android, iOS и Desktop-версий можно клонировать и собрать самостоятельно, тогда как серверная часть мессенджера закрыта и не распространяется. Именно это разделение чаще всего вызывает путаницу у тех, кто ищет «telegram source code»: открыты только клиенты, а логика серверов остаётся проприетарной.

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

Что именно опубликовано в открытом доступе

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

Основные публичные репозитории проекта размещены в организации DrKLO и связанных аккаунтах на GitHub. Ключевые из них:

  • 📱 Telegram-Android — официальный клиент для Android, написан преимущественно на Java и C++;
  • 🍏 Telegram-iOS — клиент для iPhone и iPad, код на Swift и Objective-C;
  • 💻 Telegram Desktop (tdesktop) — десктопная версия на C++ с использованием Qt;
  • 🌐 Telegram Web — веб-клиенты (версии K и Z), распространяемые отдельными репозиториями;
  • 📚 TDLib — кроссплатформенная библиотека для создания собственных клиентов, ядро сетевой логики и шифрования.

Отдельно стоит упомянуть TDLib — это, по сути, самый ценный компонент для сторонних разработчиков. Библиотека инкапсулирует всю работу с протоколом MTProto, локальное хранение данных и шифрование, позволяя создавать собственные приложения поверх сети Telegram без глубокого погружения в детали протокола.

Лицензия: что разрешено и что запрещено

Клиентские приложения Telegram распространяются под лицензией GNU GPL v2 (для некоторых компонентов — v3). Это копилефт-лицензия, и она накладывает существенные обязательства на тех, кто решит опубликовать модифицированную версию приложения.

Основное правило простое: если вы распространяете сборку на основе исходников Telegram, вы обязаны открыть исходный код своих модификаций под той же лицензией. Выложить в магазин приложений «свой мессенджер» с закрытым кодом на базе Telegram нельзя — это нарушение GPL.

⚠️ Внимание: публикация форка с изменённым кодом без раскрытия исходников нарушает лицензию GPL. Кроме того, использование названия «Telegram» и фирменного логотипа в собственном приложении может нарушать права на товарный знак — для публичных сборок название и иконку необходимо заменить.

Дополнительно стоит учитывать, что для работы собственной сборки потребуется получить api_id и api_hash на сайте для разработчиков — эти ключи привязываются к вашему аккаунту и приложению. Использовать чужие ключи из публичных сборок небезопасно и противоречит условиям платформы.

Подготовка окружения для сборки

Требования к окружению зависят от платформы. Для Android-клиента понадобится Android Studio актуальной версии, Android SDK и NDK — нативные компоненты проекта собираются через NDK, поэтому без него сборка не пройдёт. Для iOS потребуется macOS с установленным Xcode, а для Desktop-версии — компилятор C++, CMake и библиотека Qt соответствующей версии.

Точные версии зависимостей периодически меняются, поэтому перед сборкой сверяйтесь с файлом README и инструкциями в конкретном репозитории — там указываются актуальные требования. Попытка собрать проект с неподходящей версией NDK или Qt — одна из самых частых причин ошибок компиляции.

КлиентОсновной языкИнструменты сборкиСложность
Telegram AndroidJava, C++Android Studio, SDK, NDKСредняя
Telegram iOSSwift, Objective-CXcode, macOSВысокая
Telegram DesktopC++CMake, Qt, компилятор C++Высокая
TDLibC++CMake, компилятор C++Средняя
📊 С какой целью вы ищете исходный код Telegram?
Изучить устройство приложения
Собрать собственный клиент
Проверить безопасность кода
Создать приложение на TDLib

Пошаговая сборка Android-клиента

Рассмотрим общий порядок действий на примере Android-версии как наиболее востребованной. Шаги описаны в общем виде — детали могут отличаться в зависимости от текущего состояния репозитория, поэтому ориентируйтесь на официальную инструкцию в нём же.

Сначала клонируйте репозиторий и перейдите в его каталог:

git clone https://github.com/DrKLO/Telegram.git

cd Telegram

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

☑️ Чек-лист перед сборкой Telegram для Android

Выполнено: 0 / 6

После этого проект открывается в Android Studio, дожидается синхронизации Gradle и собирается стандартной командой сборки APK. Если сборка завершается ошибкой нативных компонентов — в первую очередь проверьте соответствие версии NDK той, что указана в документации проекта.

⚠️ Внимание: самостоятельно собранный APK не будет иметь доступа к некоторым сервисам, привязанным к официальной подписи приложения (например, push-уведомления через FCM могут работать иначе или потребовать собственной конфигурации). Это нормальное поведение, а не признак ошибки сборки.

Почему сборка iOS-клиента сложнее

Проект Telegram-iOS использует собственную систему сборки и требует генерации проектных файлов, а также активного аккаунта разработчика Apple для подписи и установки на устройство. Бесплатный аккаунт ограничивает срок действия установленного приложения. Детали описаны в README репозитория — следуйте именно им, так как процедура периодически меняется.

TDLib: создание собственных приложений

Если ваша цель — не форк официального клиента, а собственное приложение, работающее с сетью Telegram, правильный путь — использовать TDLib. Библиотека написана на C++, но имеет обёртки и привязки для множества языков: Java, Python, C#, JavaScript и других.

Архитектура работы с TDLib проста концептуально: вы инициализируете клиент, отправляете ему запросы в виде объектов и получаете ответы и обновления асинхронно. Вся сложность протокола MTProto, синхронизации и локального кэширования скрыта внутри библиотеки.

  • 🔧 Клонируйте репозиторий td и соберите библиотеку через CMake по инструкции для вашей ОС;
  • 🔗 Подключите готовую привязку для вашего языка программирования или используйте JSON-интерфейс;
  • 🔑 Передайте свои api_id и api_hash при инициализации клиента;
  • 🧪 Протестируйте авторизацию по номеру телефона в тестовом окружении, прежде чем переходить к боевому.

Безопасность и проверка подлинности исходников

Одна из причин, по которой Telegram публикует код, — возможность независимой проверки. Разработчики периодически предоставляют воспроизводимые сборки (reproducible builds): механизм, позволяющий убедиться, что приложение из официального магазина действительно собрано из опубликованного кода, без скрытых вставок.

При работе с исходниками соблюдайте базовые правила гигиены. Скачивайте репозитории только с официальных аккаунтов проекта на GitHub — в сети встречаются поддельные клоны с вредоносными модификациями, особенно под видом «взломанных» или «прокачанных» версий мессенджера.

⚠️ Внимание: никогда не устанавливайте сторонние «модифицированные» сборки Telegram из непроверенных источников — в отличие от официального открытого кода, их содержимое никем не проверяется, и встроенный вредоносный модуль может получить доступ к вашей переписке и аккаунту.

Единственный надёжный способ убедиться в чистоте сборки — собрать приложение самостоятельно из официального репозитория либо воспользоваться механизмом воспроизводимых сборок там, где он поддерживается. Любые другие «проверенные» APK с форумов такой гарантии не дают.

Часто задаваемые вопросы

Открыт ли серверный код Telegram?

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

Можно ли опубликовать свой форк Telegram в Google Play или App Store?

Можно, но при соблюдении условий: исходный код ваших модификаций должен быть открыт под GPL, название «Telegram» и фирменный логотип необходимо заменить, а для работы приложения потребуются собственные api_id и api_hash.

Чем TDLib отличается от Bot API?

Bot API предназначен для ботов и работает через HTTP-интерфейс с ограниченными возможностями. TDLib — это полноценная клиентская библиотека, позволяющая создавать полноценные пользовательские клиенты с доступом ко всем функциям мессенджера.

Почему сборка проекта завершается ошибкой?

Наиболее частые причины — несоответствие версий NDK, SDK, Qt или компилятора тем, что указаны в документации репозитория, а также отсутствие вписанных api_id и api_hash. Проверьте README проекта и сравните версии инструментов.

Легально ли изучать и модифицировать исходный код Telegram?

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