MasterHttpRelayVPN
- title
- MasterHttpRelayVPN
- type
- toolbox
- summary
- Python-прокси, маскирующий HTTPS-трафик через бесплатный релей на Google Apps Script
- tags
- python, proxy, vpn, domain-fronting, censorship-circumvention, google-apps-script
- language
- Python
- license
- MIT
- created
- 2026-04-21
- updated
- 2026-04-24
- lang
- ru
- translation_of
- masterhttprelayvpn
- source_updated
- 2026-04-24
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
См. также masterhttprelayvpn-rust - Rust-порт от @therealaleph (первый коммит 2026-04-21, сейчас v1.2.11), который сохраняет ту же архитектуру, но поставляется в виде статического бинарника с десктопным GUI на egui и полноценной сборкой под Android через VpnService. Рекомендуется пользователям, которые не могут запустить окружение Python у себя, а это существенная часть целевой аудитории.
Локальный прокси HTTP+SOCKS5, туннелирующий трафик через бесплатный deployment в Google Apps Script, из-за чего видимый трафик выглядит как HTTPS к www.google.com. Никаких VPS, платных серверов или доменов - нужен только аккаунт Google. Рассчитан на пользователей в сетях с цензурой (в репозитории есть README на английском и персидском).
Как это работает
Четыре ключевых компонента:
- Локальный прокси на машине пользователя. Слушает
127.0.0.1:8085(HTTP/CONNECT) и127.0.0.1:1080(SOCKS5). Браузер подключается к нему как к обычному прокси. - MITM-слой для HTTPS. При первом запуске утилита генерирует CA (
ca/ca.crt), автоматически устанавливает его в доверенное хранилище ОС/Firefox и использует для терминации TLS от браузера. Это даёт возможность инспектировать HTTPS-запросы и пересобирать внешний запрос. - Транспорт с фронтингом. Пересобранный запрос открывает TLS-соединение к IP-адресу Google (по умолчанию
216.239.38.120), передавая SNIwww.google.com. Внутри этого соединения отправляется HTTP/2-запрос кscript.google.com/macros/s/<DEPLOYMENT_ID>/execс JSON-телом, описывающим реальный запрос. См. domain-fronting. - Релей на Google Apps Script.
Code.gsвыполняется в бессерверном JS-рантайме Google, проверяет общийAUTH_KEY, вызываетUrlFetchApp.fetch()к реальному целевому серверу и возвращает тело ответа. Никакого состояния и никакой привязки к аккаунту помимо владельца deployment'а.
┌─────────┐ ┌──────────────┐ ┌────────────────┐ ┌──────────┐
│ Browser │──►│ Local proxy │──►│ SNI: google │──►│ Apps │──► Target site
│ │◄──│ (MITM + HTTP)│◄──│ Host: script.. │◄──│ Script │◄──
└─────────┘ └──────────────┘ └────────────────┘ └──────────┘
Фильтр DPI/SNI цензора видит TLS-рукопожатие с www.google.com. Заголовок Host: внутри зашифрованного туннеля указывает на другой ресурс Google (script.google.com), который собственный CDN Google без проблем маршрутизирует.
Режимы
Помимо стандартного релея на Apps Script, тот же клиент поддерживает три других бэкенда с фронтингом:
| Режим | Релей | Примечания |
|---|---|---|
apps_script |
script.google.com/macros/s/<id>/exec |
Бесплатно. Потолком становится дневная квота Apps Script. |
google_fronting |
Ваш сервис Cloud Run за CDN Google | Платно (Cloud Run), но без неожиданностей с квотами. |
domain_fronting |
Cloudflare Worker | На бесплатном тарифе есть лимиты по запросам; использует domain-fronting на Cloudflare. |
custom_domain |
Собственный домен на Cloudflare | Напрямую (без фронтинга), если цензура не направлена на ваш домен. |
Механизм балансировки нагрузки - обычный round-robin по массиву script_ids: пользователь развёртывает Code.gs N раз на N аккаунтах Google, собирает ID вместе, а клиент распределяет нагрузку.
Конфигурация
config.json компактный. Три ключевых параметра:
{
"mode": "apps_script",
"script_id": "AKfy...YOUR_DEPLOYMENT_ID...",
"auth_key": "your-secret-password-here"
}
auth_key должен совпадать с константой AUTH_KEY в Code.gs - это единственное, что защищает релей от тех, кто угадает deployment ID. Здесь нет ни TLS pinning, ни ротации токенов, ни подписи отдельных запросов. С учётом того, что deployment ID в Apps Script - это длинные случайные строки, такой связки секретного ключа и неочевидности хватает, хотя полноценной надёжной аутентификацией это назвать нельзя.
Компромиссы по сравнению с обходом на базе VLESS/Xray
Этот инструмент занимает другую нишу, нежели решения на базе VLESS (xray-tutorial, 3x-ui, mihomo, xkeen, happ-proxy):
- Стоимость настройки. Для MasterHttpRelayVPN нужны аккаунт Google и пара кликов в Apps Script. Для настройки VLESS требуются VPS (минимум $5 в месяц), домен, TLS-сертификаты и конфигурация Xray. Разница огромная.
- Производительность. Каждый запрос несёт накладные расходы схемы HTTP-поверх-JSON-поверх-UrlFetchApp. Задержка заметно выше, чем у прямого туннеля VLESS, а пропускная способность упирается в квоты Apps Script.
- Устойчивость к блокировкам. IP-адреса Google трудно заблокировать в большинстве стран, поскольку от них зависит слишком много инфраструктуры. Серверы VLESS на случайных IP заносить в списки блокировок проще. С другой стороны, цензор, анализирующий шаблоны в TLS ClientHello (как DPI в Иране), может распознать конкретный фронт по отпечаткам JA3/JA4; инструмент никак не скрывает, что клиентом выступает Python+httpx/h2.
- Привязка к аккаунту. Если Google обнаружит злоупотребление квотами или нарушение ToS Apps Script, скрипт или весь аккаунт заблокируют. У серверов VLESS нет такой зависимости от одного поставщика.
Таким образом, это решение закрывает сегмент "нулевой бюджет, невысокая скорость, один пользователь". Стек VLESS относится к категории "несколько пользователей, платный VPS, более высокое качество".
Безопасность
- Локальный CA является корневым центром доверия. Если кто-то посторонний получит
ca/ca.key, он сможет перехватывать любой HTTPS-сайт, открываемый пользователем. Проект рекомендует не делиться содержимымca/, но это стандартный риск для любого MITM-прокси. auth_key- единственная защита эндпоинта Apps Script. При его утечке (например, при случайном коммите в git) злоумышленники смогут расходовать квоту пользователя в Google.- Проекту всего четыре дня (создан 2026-04-20), и у него 418 звёзд. Развивается активно, но аудит безопасности не проводился.
Репозиторий
https://github.com/masterking32/MasterHttpRelayVPN - 418 звёзд, MIT, Python в ветке python_testing. Мейнтейнер выражает благодарность @abolix за базовый подход. Канал поддержки в Telegram на персидском языке (@masterdnsvpn) указывает на то, что основная аудитория находится в Иране.
Связанные страницы
- masterhttprelayvpn-rust - Rust-порт со статическим бинарником, UI на egui и поддержкой VpnService в Android
- serverless-relay-transport - более широкий паттерн, который этот инструмент внедрил для иранского сегмента
- domain-fronting - базовая техника обхода цензуры
- xray-tutorial, 3x-ui, mihomo, xkeen - стек на базе VLESS, минималистичной альтернативой которому выступает этот инструмент
- happ-proxy - схожая целевая аудитория (страны с цензурой), но другой технический подход
- russia-v2ray-rules-dat - файлы правил для другой крупной аудитории в условиях жёсткой цензуры