Skip to content

[FEATURE] Поддержка NaiveProxy как outbound #372

@kksudo

Description

@kksudo

Краткое описание

Привет! Пользуюсь podkop уже несколько месяцев на Cudy с OpenWrt 25.10, основной outbound — VLESS+Reality, всё отлично работает. Хочу предложить добавить ещё один тип outbound — NaiveProxy.

Если коротко, naive — это туннель поверх HTTP/2 CONNECT, который генерирует TLS-handshake тем же кодом, что и настоящий Chromium. То есть fingerprint не имитируется через uTLS, а буквально совпадает с Chrome, потому что это и есть Chrome net stack. На сервере живёт рядом с обычным сайтом-заглушкой (через Caddy с forwardproxy), и при пробинге снаружи отдаёт настоящий HTML — выглядит как сайт.

Проблема, которую решает

Зачем это в podkop, если уже есть VLESS+Reality:

Это другой класс маскировки. Reality прячет SNI под чужой домен, naive — наоборот, выставляет свой собственный сертификат на своём домене, но сам по себе сайт выглядит легитимно. Это закрывает сценарии, где Reality может палиться: timing-анализ, активный пробинг из неожиданной геолокации, поведенческий fingerprint. Сейчас у людей уже встречаются конфигурации с несколькими outbound-ами для разных условий — naive хорошо ложится в эту нишу как «максимально stealth» вариант.

💡 Предлагаемое решение

Главное, что интеграция должна быть лёгкой: sing-box уже поддерживает naive как outbound нативно, отдельный бинарь на роутере не нужен. Грубо говоря, это в основном про UI и парсер URL — всё остальное sing-box делает сам.

Для справки, эталонный outbound в sing-box-конфиге выглядит так:

{
  "type": "naive",
  "tag": "naive-out",
  "server": "example.com",
  "server_port": 443,
  "username": "user",
  "password": "pass",
  "tls": {
    "enabled": true,
    "server_name": "example.com",
    "alpn": ["h2"]
  }
}

Workaround

No response

Идеи реализации (опционально)

По аналогии с тем, как сейчас в podkop парсятся vless:// и ss://, можно было бы принимать схему вида:

naive+https://user:pass@example.com:443#name

Поля минимальные — server, порт, basic auth, TLS (по умолчанию on, без него naive теряет смысл), опционально SNI/ALPN/padding.

Видел открытый #329 про xhttp — задача похожая по характеру (добавить новый транспорт), но решает другое. Naive не пересекается, это отдельный outbound.

Полезные ссылки:

Спасибо за podkop, реально качественная штука.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions