При попытке создать или запустить какой‑нибудь склонированный проект с использованием библиотек Telethon или Pyrogram вам понадабятся api_id и api_hash. Из России сайт не открывается, а при подключении через VPN появляется ошибка ERROR.
Я перебрал много вариантов, чтобы получить ключи, но ни один из найденных способов мне не помог, поэтому я нашёл свой. Подход с hosts описан в статье об открытии my.telegram.org без VPN. Другие варианты разобраны в материале об ошибке ERROR при регистрации приложения. В этой статье я рассматриваю сочетание записи в hosts с подключением через Казахстан — вариант, который помог в моём случае.
Какие попытки «достучаться» до Telegram у меня были:
1) Открыть сайт my.telegram.org без VPN. Сайт просто не открывается, так как домен в России заблокирован.
2) Подключиться через VPN с сервером в Норвегии. Сайт открывался, но при создании приложения появлялась ошибка ERROR.
3) Изменить App title и Short name. Перебор названий не помог.
4) Очистить кэш, сменить браузер и включить режим инкогнито. Ошибка сохранилась.
Мне стало ясно, что проблема не в названии и не в куках. Дело в том, что Telegram тщательно сверяет страну номера телефона и страну IP‑адреса, они должны совпадать, иначе ничего не получится.
То есть два метода решения: либо заходить через Россию и российский номер телефона (но так не работает), либо через другую страну и указывать номер телефона этой страны.
Я узнал что у России и Казахстана есть общий телефонный код +7. Зная эту информацию, можно совместить два решения: всё, что нам нужно, — подключиться к Telegram через Казахстан.
Небольшое отступление: Когда вы вводите в браузере my.telegram.org, браузер сначала узнаёт у DNS‑сервера: «какой у этого сайта IP‑адрес?». DNS‑сервер по умолчанию — это сервер вашего провайдера. Он отвечает (или не отвечает) IP, и только потом браузер устанавливает соединение с этим IP‑адресом.
В России заблокирован DNS‑сервер и не отвечает IP‑адрес. В Казахстане DNS‑сервер также заблокирован, но IP‑адрес доступен. Через эту лазейку мы и залезем.
DNS‑блокировка — это когда провайдер на запрос «дай IP для my.telegram.org» отвечает либо отказом, либо подсовывает левый IP (например, страничку‑заглушку Роскомнадзора). Браузеру некуда стучаться, сайт не открывается.
DPI (Deep Packet Inspection) — это когда провайдер смотрит внутрь самих сетевых пакетов: куда они идут, что в них, по какому протоколу. DPI работает уже на уровне трафика, а не на уровне резолва имени.
Это обойти намного сложнее.
Благодаря тому что IP‑сервер Казахстана доступен. Нам остаётся обойти только DNS‑блокировку. Для этого нам нужно прописать IP‑адрес домена напрямую в файле hosts. Тогда браузер не будет обращаться к провайдеру, а возьмёт IP из локального файла. После этого антифрод телеграма установит совпадение страны номера и IP и выдаст данные.
Решение
Сначала посмотрим, какой IP‑адрес DNS‑сервер возвращает для my.telegram.org. Для этого выполните в терминале или командной строке:
nslookup my.telegram.org
Мы получим IP‑адрес my.telegram.org. Этот адрес понадобится дальше. В моём случае это 149.154.167.99, но я буду вводить этот адрес — 149.154.167.220, так как именно с ним у меня всё сработало. А так два эти адреса принадлежат my.telegram.org.
Теперь подключимся к Казахстану по VPN:

Проверяем IP‑адрес, можно через сайт 2ip.io, должен показываться Казахстан, иначе VPN не работает.
Проверяем, можем ли мы подключиться к сайту напрямую без DNS:
macOS, Linux (Терминал):
curl -sv --connect-timeout 5 -m 15 --resolve my.telegram.org:443:149.154.167.220 https://my.telegram.org -o /dev/null
Windows 10/11 (командная строка):
curl -sv --connect-timeout 5 -m 15 --resolve my.telegram.org:443:149.154.167.220 https://my.telegram.org -o NUL
Смотрите на вывод:
HTTP/2 200илиHTTP/1.1 302илиHTTP/1.1 200— сработает, продолжаем. С Казахстаном такой ответ удаётся получить:Failed to connect/Connection timed out— режут IP, hosts не поможет.Connection reset/ ошибкаSSL/ зависло — режут по DPI, hosts не поможет.
Как только добились вывода HTTP/2 200 или HTTP/1.1 302, продолжаем.
1) Открываем файл hosts:
На macOS:
sudo nano /etc/hosts
На Windows: открываем «Блокнот» от имени администратора, через него открываем файл
C:\Windows\System32\drivers\etc\hosts
2) Добавляем в конец файла строку:
149.154.167.220 my.telegram.org
3) Сохраняем файл.
В nano: Ctrl+O, Enter, Ctrl+X.
На Windows: Ctrl+S.
Обязательно откройте снова hosts и убедитесь, что добавленная строчка сохранилась.
4) Сбрасываем DNS‑кэш. Браузер и операционная система могут сохранить старый ответ DNS, поэтому кэш нужно почистить.
На macOS:
sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder
На Windows:
ipconfig /flushdns
5) Полностью закрываем (завершаем процесс) и открываем браузер.
6) Заходим на my.telegram.org. Авторизовываемся по номеру, вводим код, создаём приложение. На этот раз должно быть без ERROR. На странице появятся App api_id и App api_hash.
7) Удаляем добавленную строку из файла hosts. Открываете тот же файл, удаляете строку с 149.154.167.220 my.telegram.org, сохраняете. Делаем это на тот случай, если IP‑адрес Telegram сменится (это случается периодически) и сайт перестанет открываться вообще, независимо от того, из какой страны мы будем заходить.
Итог
Мы получили ключи для создания приложения для Telegram.
Способ, изложенный в данной статье работает на момент её написания, но пока что это один из немногих рабочий способ.
Если остались вопросы — пишите в комментарии или делитесь своим опытом. Удачи в разработке!
0ka
Эм, зачем делать что-то после пункта 0? Это просто какие-то бесполезные действия, разве нет? Как будто у вас что-то не так с впн, нормальный в том числе и днс блоки обходит
Это вообще что совершенно непонятно
Misha20062006
тоже не понял этого прикола. ещё кстати можно найти хостера в РФ без тспу, такие тоже есть. либо с тспу, но без бана тг на нём.
UsualDinoPinguino Автор
Лично у меня с Казахстаном, сайт не открывался, из этого я сделал такой вывод.
0ka
сделайте норм диагностику. зайдите на сайт https://browserleaks.com/dns без впн и с, сравните результаты