VPN·HUB·CRACK Личный кабинет бота (miniapp) за CDN: живёт под «белыми списками» · VPN HUB CRACK
Все статьи
Bot PRO

Личный кабинет бота (miniapp) за CDN: живёт под «белыми списками»

Обновлено 11 августа 2026 Проверено

Личный кабинет бота (miniapp) за CDN: чтобы работал под «белыми списками»

🛡️ Коротко. Когда провайдер уходит в белый список (работает только горстка «разрешённых» доменов/подсетей), домен твоей панели и мини-аппа блокируется, клиент не откроет кабинет, не продлит подписку, не оплатит. Лечится тем же приёмом, что и сокрытие ноды: прячем кабинет за крупный CDN (сеть-посредник, что прячет реальный IP), чьи адреса в белом списке. Инструкция ниже универсальна (Beeline, Yandex, Selectel, Timeweb): меняются названия галочек, суть одна.

📖 Незнакомые слова? Все термины простыми словами смотрите в Словаре терминов.


1. Зачем это (проблема белых списков)

При веерных отключениях и жёсткой фильтрации мобильный/домашний интернет в РФ переводят в режим whitelisting: пропускаются только «белые» ресурсы (госуслуги, банки, крупные CDN), всё остальное молча дропается. Подробнее про сам режим смотрите в статье «Белые списки мобильного интернета».

Что при этом ломается у тебя:

  • домен кабинета / мини-аппа не открывается → клиент не видит подписку, ключи, кнопку продления;
  • вход через Telegram (Login Widget) не проходит;
  • оплата/продление недоступны → прямой минус к выручке именно в тот момент, когда клиенты паникуют и хотят продлить.

Идея решения: IP-адреса крупных CDN почти всегда в белом списке (через них раздаётся критичная российская инфраструктура). Если поставить кабинет за такой CDN, запросы клиента идут на «белые» адреса CDN, а тот уже тянет ответ с твоего origin (твоего сервера-источника). Кабинет снова доступен.


2. Что это такое: тот же CDN-фронтинг

Механизм идентичен сокрытию ноды за CDN (см. семейство гайдов «Beeline CDN», «Yandex CDN» и др.):

Клиент → «белый» IP CDN → (CDN проксирует) → твой origin (домен кабинета:443)

Разница только в объекте и в наборе правил:

Фронт ноды (35-cdn-*) Фронт кабинета (эта статья)
Что прячем VLESS-инбаунд (XHTTP/gRPC) Веб-кабинет / мини-апп / subpage
Ключевое правило потоковые пути без кэша /api/ без кэша, разрешить POST/PUT
Доп. настройка отпечаток edge, packet-up Login Widget + Menu Button в BotFather

Поэтому: если научился фронтить ноду, фронтишь и кабинет. И наоборот. CDN может быть любой: Yandex ничем не отличается от Beeline по сути, отличается только UI панели.


3. Пошагово (пример Beeline, применимо к любому CDN)

3.1 Создаём ресурс

CDN → Добавить ресурс. Тип: Статика. В адрес источника указываем домен кабинета с портом :443. Жмём Создать.

3.2 Конфигурация ресурса

  • Использовать HTTPS при запросе к источникам: 🟢 ВКЛ
  • Hostname при запросе к источнику: домен кабинета
  • Кэширование: 🟢 ВКЛ (глобально; динамику отключим правилом ниже)
  • Желаемый CNAME: по желанию задаём свой + включаем «Раздача HTTPS через CNAME»

🔐 Сертификат для CNAME. К желаемому CNAME нужно привязать TLS-сертификат: либо выпустить его внутри CDN (Beeline/Yandex умеют), либо выпустить свой на VPS (certbot) и загрузить в панель CDN. Порядок выпуска/загрузки смотрите в отдельном материале по сертификату (вложение к гайду).

3.3 Правило на /api/ (самое важное!)

Правила → Создать правило. Путь к директории: /api/.

Открываем конфигурацию правила /api/ → Редактировать:

  • Кэширование: ❌ ВЫКЛ

⚠️ Если закэшировать /api/, кабинет «залипнет» на старых ответах: клиент увидит чужую/устаревшую подписку, оплата не подтвердится. API всегда без кэша.

Возвращаемся в основные настройки правила:

  • Сжатие Brotli: ❌ ВЫКЛ
  • Сжатие Gzip: ✔️ ВКЛ
  • Проверка CORS на стороне CDN: ❌ ВЫКЛ

3.4 Экспертные настройки ресурса

  • HTTP/2: ✔️ ВКЛ
  • HTTP/3: ❌ ВЫКЛ
  • Только HTTPS: ✔️ ВКЛ
  • Только современные версии TLS: ✔️ ВКЛ
  • Следовать редиректам: ❌ ВЫКЛ
  • Проверка CORS на стороне CDN: ❌ ВЫКЛ
  • Сжатие Brotli: ❌ ВЫКЛ / Gzip: ✔️ ВКЛ
  • Разрешённые HTTP-методы: добавить PUT POST DELETE PATCH (GET/HEAD и так есть)

⚠️ Без POST/PUT/... отвалится всё, что не «просто чтение»: сохранение, покупка, продление кабинета.

3.5 Прописываем домен в приложении

В .env сервиса добавляем домен CDN-ки / CNAME-домен в Trusted origins (доверенные источники), чтобы бэкенд принимал запросы с нового домена.

3.6 Настройка бота (BotFather)

  1. Открываем @BotFather → выбираем бота своего VPN → MiniApps → Menu Button и вводим тех-домен CDN / CNAME-домен.
  2. Возвращаемся в главные настройки бота → Login Widget:
  3. Redirect URIs → добавить https://<домен-CDN-или-CNAME>/auth/telegram/callback
  4. Trusted origins → добавить https://<домен-CDN-или-CNAME>

Важно: CNAME не заработает в первый же день. Прогрев CNAME + выпуск/привязка сертификата занимают время (обычно до суток). Не паникуй, если сразу «не пингуется», проверь на следующий день.


4. Плюсы

  • Кабинет открывается под белыми списками: клиент входит, продлевает, платит даже во время шатдауна.
  • Реальный IP панели скрыт: заодно защита от блока по IP и от атак на origin.
  • Дёшево или бесплатно: Beeline бесплатен, Yandex и др. берут копейки за трафик кабинета (он лёгкий).
  • Быстрее: HTTPS-терминация на CDN, HTTP/2, современный TLS, gzip.
  • Один приём на всё: то же самое, что фронт ноды; один навык покрывает и кабинет, и подписку, и ноду.

5. Минусы и подводные камни

  • Сертификат на CNAME: нужно выпустить/загрузить, с первого дня не поднимется.
  • /api/ нельзя кэшировать: забыл правило → кабинет показывает устаревшие данные, оплата «не видится».
  • Методы POST/PUT/DELETE/PATCH: не разрешил → часть кабинета не работает.
  • CORS на CDN: только ВЫКЛ, иначе двойные заголовки, браузер режет запросы.
  • Login Widget капризен к домену: Redirect URIs и Trusted origins должны точно совпадать с CDN-доменом, иначе вход через Telegram не сработает.
  • Зависимость от политики CDN: провайдер может менять правила/резать; держи запасной CDN (Yandex ↔ Beeline) на случай.

6. Почему инструкция универсальна (Yandex, Beeline, любой)

Суть везде одна: клиент → «белый» CDN → origin кабинета. Отличаются только названия галочек в панели:

  • Beeline: «Статика», «Раздача HTTPS через CNAME», «Экспертные настройки».
  • Yandex Cloud CDN: «Ресурс», «Origin group», «CNAME», «Edge»-настройки; для GET-only-ноды там своя засада (эдж рубит POST), но для кабинета POST мы разрешаем правилом, так что кабинет живёт нормально.
  • Selectel / Timeweb / другой используют те же три сущности: ресурс + origin, CNAME + сертификат, правило на /api/ без кэша.

Берёшь любой CDN, чьи IP в белом списке, и повторяешь 6 пунктов. Детали конкретных провайдеров смотрите в гайдах «Yandex CDN» и «Beeline CDN».


7. Чек-лист

  • [ ] Ресурс типа Статика, origin = домен-кабинета:443, HTTPS к источнику ВКЛ
  • [ ] Hostname = домен кабинета, кэш ВКЛ (глобально)
  • [ ] CNAME + «Раздача HTTPS через CNAME» + сертификат привязан
  • [ ] Правило /api/ → кэш ВЫКЛ
  • [ ] Экспертные: HTTP/2 ВКЛ, только HTTPS, только modern TLS, методы PUT/POST/DELETE/PATCH, Gzip ВКЛ, Brotli/HTTP3/редиректы/CORS ВЫКЛ
  • [ ] .env → Trusted origins += CDN/CNAME-домен
  • [ ] BotFather → MiniApps → Menu Button = CDN/CNAME-домен
  • [ ] Login Widget → Redirect URIs += https://<CDN>/auth/telegram/callback, Trusted origins += https://<CDN>
  • [ ] Подождать прогрев CNAME/сертификата (не в первый день)

Готово: кабинет и мини-апп теперь доступны даже когда «обычный» интернет свёрнут в белый список.