Краткое описание
Привет! Пользуюсь 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, реально качественная штука.
Краткое описание
Привет! Пользуюсь 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://, можно было бы принимать схему вида:Поля минимальные — server, порт, basic auth, TLS (по умолчанию on, без него naive теряет смысл), опционально SNI/ALPN/padding.
Видел открытый #329 про xhttp — задача похожая по характеру (добавить новый транспорт), но решает другое. Naive не пересекается, это отдельный outbound.
Полезные ссылки:
Спасибо за podkop, реально качественная штука.