EnglishРусский Map

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 на английском и персидском).

Как это работает

Четыре ключевых компонента:

  1. Локальный прокси на машине пользователя. Слушает 127.0.0.1:8085 (HTTP/CONNECT) и 127.0.0.1:1080 (SOCKS5). Браузер подключается к нему как к обычному прокси.
  2. MITM-слой для HTTPS. При первом запуске утилита генерирует CA (ca/ca.crt), автоматически устанавливает его в доверенное хранилище ОС/Firefox и использует для терминации TLS от браузера. Это даёт возможность инспектировать HTTPS-запросы и пересобирать внешний запрос.
  3. Транспорт с фронтингом. Пересобранный запрос открывает TLS-соединение к IP-адресу Google (по умолчанию 216.239.38.120), передавая SNI www.google.com. Внутри этого соединения отправляется HTTP/2-запрос к script.google.com/macros/s/<DEPLOYMENT_ID>/exec с JSON-телом, описывающим реальный запрос. См. domain-fronting.
  4. Релей на 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 - файлы правил для другой крупной аудитории в условиях жёсткой цензуры