Тестовые серверы Telegram: инструкция по эксплуатации

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Про разработку ботов в Telegram написано много текстов, а про «тестовый дата-центр» практически ничего. Ранее Pavelgram освещал этот вопрос: он кратко рассказал, что такое тестовые серверы и как с ними работать. Я продолжу это начинание.

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

Используйте навигацию, чтобы выбрать интересующий блок:

→ Тестовые дата-центры
→ Свои, откройте!
→ Прятки с официальными аккаунтами
→ Чего нельзя сделать
→ Инструменты разработчика
→ Жизнь в тесте
→ Заключение

Тестовые дата-центры


Серверы мессенджера распределены по всему миру. Набор серверов в одном регионе в терминах Telegram называется дата-центром (ДЦ). Для оптимизации запросов к API клиент должен подключиться к ближайшему из доступных дата-центров. Запись о пользователе и все его данные хранятся в одном ДЦ, который определяется при первом входе.

При авторизации клиент не знает, в каком дата-центре располагается учетная запись пользователя, и отправляет запрос в случайный ДЦ, который возвращает ошибку и перенаправляет на нужные серверы. Если пользователь переезжает в другой регион и задерживается там надолго, то бэкенд может мигрировать пользователя в другой дата-центр — и клиенту придется обработать перенаправление.

Без корректной обработки перенаправлений клиент Telegram будет практически бесполезен: «недомашние серверы» пользователя откажутся сотрудничать. Поэтому разработчикам необходимо отладить функциональность переходов между ДЦ. Однако Telegram не любит отладку на проде: для всех аккаунтов в «боевом» окружении установлено ограничение по количеству успешных попыток входа. Превышение этого лимита приведет к ошибке 420 FLOOD_WAIT_X до следующего дня.

Здесь в игру вступает тестовое окружение — три дата-центра, полностью изолированные от основного Telegram. Это значит, что вы можете зарегистрироваться в тестовом окружении со своего номера телефона, и это будет новый аккаунт, который ничего не знает о вашем «настоящем» аккаунте.


40 000 аккаунтов уже готовы, еще миллион на подходе.

Для тестирования процессов авторизации, регистрации и переключений между дата-центрами в «тесте» существует 40 тыс аккаунтов с номером +999 66 X YYYY, где X — это цифра от 0 до 3, а YYYY — любое четырехзначное число. Число X задает принадлежность к дата-центру: 1-3 — пользователи явно «прибитые» к соответствующему ДЦ, а 0 — автоматически определяется как ближайший к клиенту.

Аккаунты +999 имеют фиксированный OTP (One-Time Password) для входа: это пять цифр X из номера телефона. Например, если номер телефона — +999 66 2 4227, то код для входа — 22222. Если у вас появилось желание воспользоваться таким публичным номером, не пренебрегайте информационной безопасностью.

  1. «Секрет» входа в публичные аккаунты — не секрет. Особенно после публикации очередной статьи на эту тему.
  2. Если вы хотите сохранить действия на аккаунте в тайне от других любопытствующих, стоит поставить облачный пароль (2FA).
  3. Фиксированный OTP на публичных номерах значит, что любой желающий может удалить ваш защищенный облачным паролем аккаунт.
  4. Публичные аккаунты периодически очищаются.
  5. При входе с мобильных устройств по умолчанию выбран пункт «Синхронизировать контакты». Обязательно выключайте!


Слева — аккаунт на личный номер, справа — «публичный» аккаунт.

Еще одна особенность публичных аккаунтов: Telegram скрывает IP-адрес и локацию входа.

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



Свои, откройте!


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

Telegram Desktop (Windows, Linux): зайдите в настройки → нажмите Shift+Alt и ПКМ по кнопке Add Account → выберите Test Server.

Telegram Desktop (macOS): десять раз кликните на кнопку Settings → нажмите cmd и кликните по кнопке Add Account.

Android: скачайте приложение Telegram Beta с AppCenter → при первом входе выберите пункт Test Backend.

iOS: десять раз кликните по кнопке Settings → перейдите в Accounts → нажмите Add Account → выберите Test Server.

Напоминание: не синхронизируйте контакты своего телефона при входе в публичные аккаунты!

Ну вот и все, дойти до тестового окружения Telegram было не сложно. Теперь можно заниматься обычными «телеграмными» делами.

Прятки с официальными аккаунтами


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

Сервисный аккаунт


Первым в Telegram встречает сервисный аккаунт с номером телефона +42777. Этот аккаунт уведомляет о попытках входа и рассказывает, что изменилось при обновлении приложения.

Еще существует сервисный аккаунт с номером +333. У него нет верификации, но он доступен как в тестовом окружении, так и в продовом. «Старички» могли видеть от него приглашение в Telegram Desktop. Сейчас аккаунт не отвечает на сообщения.

В тестовом окружении сервисный аккаунт совершенно внезапно откликается на одну команду:
# Шаблон
/react {t.me url} {limit} {emoji_count}
# Ограничения
1 <= limit <= 200
1 <= emoji_count <= 11
# Пример
/react https://t.me/***/131 40 2


Данная команда увеличивает число реакций на указанном сообщении на limit. Параметр emoji_count указывает на количество реакций, доступных команде. Например, при emoji_count = 1 команда выбирает случайную реакцию из доступных и ставит ее limit раз. Если emoji_count = 4, то команда распределяет limit реакций между четырьмя случайными эмодзи. У этой команды есть несколько побочных эффектов:

  1. Реакции ставятся от имени «публичных» аккаунтов. Эти пользователи не вступают в канал/группу и не увеличивают счетчик просмотров. Так что возможна ситуация, когда реакций больше просмотров.
  2. Хотя верхняя граница limit — 200, более 38 реакций получить не удалось.
  3. Реации ставятся от одного набора аккаунтов. Иными словами, многократный вызов этой команды на одно сообщение не будет увеличивать количество реакций.
  4. Нет возможности управлять какую реакцию необходимо поставить. При emoji_count = 1 будет поставлена случайная реакция: это может быть как
Источник: https://habr.com/ru/companies/selectel/articles/763286/


Интересные статьи

Интересные статьи

Как настроить коммуникацию с заказчиком, какие для этого использовать инструменты и приёмы, на что обратить внимание и чего точно нельзя делать, а самое главное – как сделать проект более успешным? Об...
Данная статья поможет молодым специалистам легко начать работу со сценариями использования. Сценарии использования- это сценарий взаимодействия пользователя (или пользователей) с программным продуктом...
Языков в мире программирования масса, но корону по праву носит Python. Многие полюбили его за гибкость, лаконичность, бесчисленное количество модулей и поддержку сообщества. Именно этот язык стал осно...
Привет, Хабр! Меня зовут Антон. Примерно год назад я начал работать с Serverless — и был покорён этим подходом к разработке приложений. Несмотря на определённые недостатк...
Продолжение статьи: «Как взлететь на батарейках или немного теории электропарамотора. Часть 1» habr.com/ru/post/475174 4. Описание электропарамотора SkyMax. В предыдущей статье уже фигурир...