Trojan — это инструмент, который заставил многих поверить, что маскировка под HTTPS — это панацея. Идея простая: раз DPI пропускает TLS-трафик на 443 порт, давайте вести себя как легитимный TLS. Никакой «обфускации» ради обфускации, просто корректный TLS-хендшейк с реальным сертификатом, за которым спрятан туннель.
До Trojan был классический Shadowsocks, который маскировался под случайный трафик, но не умел убедительно притворяться HTTPS-сессией. Trojan взял другой подход: он не пытается зашифровать трафик ещё раз поверх TLS — он использует нативный TLS как транспорт. Клиент стучится на 443, сервер отдаёт валидный сертификат (не самоподписанный, а настоящий от Let’s Encrypt), идёт честный TLS-хендшейк. Если клиент не присылает пароль — сервер отдаёт 404, как обычный nginx. Снаружи это просто рендеринг легитимного сайта.
Ключевое отличие от VLESS/Vmess: Trojan не изобретает велосипед с собственным шифрованием. Он полагается на TLS — а значит, его трафик выглядит как самый обычный HTTPS. Никаких кастомных сигнатур, никаких отличий в длине пакетов. В теории — идеальный стелс.
На практике: DPI эволюционирует. Китайский GFW, например, научился детектить Trojan по нескольким признакам: во-первых, по времени установки соединения (троянские клиенты часто не завершают TLS-хендшейк полностью, а сразу шлют данные), во-вторых, по характерному «пустому» трафику после установки (обычный HTTPS-браузер генерирует HTTP-запросы, Trojan — нет). Плюс, Trojan-серверы часто живут на свежезарегистрированных доменах, что тоже палевно.
Сильная сторона Trojan — простота. Одна бинарная сборка, один конфиг, минимум зависимостей. Для обычного обхода региональных блокировок его хватает. Слабая — он не адаптивен: как только DPI выучил его паттерны, обновление протокола требует переписывания клиента.
Текущий статус: Trojan стабилен, но не развивается активно. Его место постепенно занимает Trojan-Go (добавил WebSocket и gRPC транспорт) и Reality (вообще не использует сертификаты и TLS как маскировку). Trojan — это «старая школа» 2021-2022 годов. Работает, но уже не везде.
А вы как думаете: стоит ли усложнять протокол ради устойчивости, или побеждает тот, кто умеет быть незаметным в самом простом?