«Задача о трёх соседях», или динамические сайты на облачном хранилище
- четверг, 12 ноября 2026 г. в 00:00:11
Привет, хабровчане!
В этой статье хотел бы поднять вопрос, над которым мы с командой ведём дискуссии уже на протяжении нескольких месяцев, а конкретно с февраля этого года, когда я лично столкнулся с неудобствами белых списков.
Наверное, глупо рассказывать что единственное и главное неудобство этих самых списков заключается в том, что мобильный интернет ограничивается и вся инфраструктура "вне" отваливается. Логично, что все ресурсы внутри белых списков контролируются некоей организацией.
Не будем поднимать политические дебаты и додумывать революционные идеи. Для нас лично это стало своего рода вызовом: можно ли предложить какой-нибудь способ коммуникации внутри белых списков, при этом подумав о шифровании и безопасности содержимого.Конечно, можно общаться и через Макс, но уже много лет возможность зашифровать свои секреты будоражит лучшие умы человечества, и неважно от кого.
Попытка number one
В первую очередь, мы попытались использовать легендарный Мах для организации защищенной переписки. На бумаге - всё просто. Есть два клиента, которые даже не зарегистрированы в Махе. Оба получают токен бота и могут отправлять и получать сообщения. Далее происходит обмен ключами, клиент А шифрует и отправляет, клиент Б читает и расшифровывает.
Но сразу возникли две проблемы. Первая - токен бота должен быть защищён и не отдаваться клиентам. Его можно разместить на сервере, но ведь сервера из сети клиентов не пингуются?
Вторая проблема, которую мы конечно же спустили на случайность, ведь в безопасном мессенджере такого быть не может - на следующий день после регистрации бота у меня его угнали. Когда я в очередной раз зашел на него посмотреть - там стояла упоротая фотка и ссылка на тг для связи. С хаЦкером мы разумеется связались и он предлагал позаимствовать бота "для генерации ИИ картинок". Ну конечно.
В общем, убогая api-документация национального мессенджера и не менее убогая безопасность оставили свой осадочек, из-за чего на время было предложено забыть про задачу.

Попытка number two и сама задача
Спустя несколько месяцев, примерно в июле, когда я сидел и размышлял над этой новой задачей тысячелетия (лично для меня). Я решил использовать известный всем метод утёнка, и смоделировать какую-нибудь реальную задачку, которая могла бы произойти в реальной жизни.
Представьте, что есть три дачных участка, разделенные заборами и дорогами. На левом участке живёт Алиса, на правом живёт Боб, а посередине - какая нибудь Ева. Также есть почтальон, который бегает по дорогам между участков и также может принимать и отдавать сообщения, но он очень медленно ходит. Когда Алиса хочет написать Бобу и наоборот - они просто перекидывают письма Еве, а та уже на противоположный участок.
Примерно так было сформулировано условие задачи. Почему Алиса и Боб общаются через Еву? Так это банально быстрее.
Но что, если если запретит передавать определенные типы посылок? Например, бандероли... Просто не доставит до адресата.
Примерно так работает Интернет, во всяком случае в моём, неоконченном высшем, понимании. Человек А отправляет сервер example.com POST запрос, сервер обрабатывает и тогда человек Б через GET запрос сможет получить сообщение. Когда сервер example.com не работает - можно использовать суверенный primer.ru, накинуть сверху криптографию и радоваться жизни. Но практика показывает, что технически это не всегда возможно.
И тут в голову незаметно приходит тот самый медленный почтальон. Медленный взят не спроста. Дело в том, что в текущих условиях (опять же, лично для меня, так как я не эксперт в сетях) остается только транспортный уровень (или прикладной, ведь Яндекс.Диск это по-сути FTP😂). Тем не менее, да, в голову пришла идея использовать Яндекс.Диск, как хранилище сообщений.
Кроме того, что это (почти) единственное решение, доступное под мои задачи в условиях белых списков, так еще работает с GET и POST запросами напрямую со всяких localhost (это что-то связно с CORS, я честно тогда не до конца всё понял).
Новая модель обмена сообщениями выглядела гораздо брутальнее, а значит гораздо дольше обрабатывать запросы (именно поэтому почтальон в условии задачи стал медленнее). Спойлер: получение простого сообщения таким способом занимала в среднем от 15 до 25 секунд. Что, конечно, разумно, ведь на безрыбье и рак рыба. Но такая реализация, кроме скорости, имела второй недостаток: для доступа к API яндекс.диска требовался аккаунт яндекса. А также необходимость авторизоваться в яндексе и на своем клиенте, и на "сервере-посреднике". А это уже минус к анонимности, минус к скорости регистрации, минус в карму, минус миска риса, плюс шанс получить MITM и еще плюс шанс получить что нибудь от яндекса.
Однако реализация показала себя в деле достойно, но отправкой сообщений было решено не ограничиваться. Ниже всё также прилагаю ручную картинку из пэинта. Точные эндпоинты api не помню, да они и не важны. Важно уловить суть.

Попытка number three, финал
И вот, наступил октябрь. Я в очередной раз поменял место жительства, однако проблема меня не покидала. Сидя на каком-то сайте, я решил посмотреть, откуда грузятся картинки (было логично, что с s3 хранилища, но какого - в белых списках?!).
Этим самым хранилищем оказался Yandex.Cloud, который либо забыл, либо целенаправленно для себя оставил домены https://storage.yandexcloud.net/ в белых списках. Быстренько зарегистрировавшись в Облаке и даже получив щедрые 4000 бонусов закинул тестовый html файлик... И, о, чудо! Он у меня открылся на мобильном интернете, когда кроме госуслуг и вк в принципе ничего не работает. Зумеры открыли CDN
--
Вместо послесловия
Тут хочу пока сделать паузу и послушать что скажут более умные люди. Если статья вызовет интерес, опубликую вторую часть (исправив ошибки в первой).
Данная статья призывает к комментированию, так мне самому интересно, насколько это всё жизнеспособно, а то вдруг, новый Tor изобретём.
Всем спасибо, кто дочитал. Не обижайтесь, если где-то ошибся, все мы ошибаемся.