Trojan в Happ: параметры, настройка, когда выбирать
- Автор
- Екатерина Лебедева, редактор раздела knowledge base
- Проверил:
- Артём Волков
- Проверено:
- Опубликовано:
- Версия гайда:
- 1.0
Коротко
Trojan в Happ — протокол, который проверяет клиента по паролю и целиком полагается на TLS: ссылка trojan://password@host:443 с параметром sni добавляется из буфера обмена, QR-кода или подписки.
Trojan устроен просто: клиент открывает TLS-соединение с сервером и первым делом передаёт хэш пароля, после чего идут данные. Серверу нужны домен и действительный сертификат, клиенту — пароль, адрес, порт и SNI. Happ поддерживает Trojan поверх TCP, WebSocket и gRPC. Большинство проблем с Trojan связаны с сертификатом и TLS-рукопожатием, а не с самим протоколом.
Trojan — Trojan — протокол прокси, который передаёт данные внутри обычного TLS-соединения и проверяет клиента по паролю. Собственного шифрования у него нет, поэтому TLS обязателен. В Happ Trojan добавляется ссылкой trojan://, QR-кодом, подпиской или вручную.
Как устроен Trojan
Trojan задуман как прокси, встроенный в обычный HTTPS-сервер: на порту 443 работает сайт, а клиенты с правильным паролем получают доступ к прокси.
Xray-core поддерживает Trojan наряду с VLESS и VMess, поэтому Happ принимает его без дополнительных модулей и с теми же способами импорта.
Для клиента Trojan — один из самых коротких по настройке протоколов: пароль, адрес, порт и SNI. Транспорт, ALPN и отпечаток TLS добавляются, только если их требует сервер.
Раз безопасность целиком зависит от TLS, качество подключения определяется сертификатом сервера. Истёкший, самоподписанный или выданный на другой домен сертификат приводит к ошибке TLS-рукопожатия.
Формат ссылки
Схемы ссылок: trojan:////. Пример ниже — с условными значениями, для подключения нужны данные вашего сервера.
trojan://password@example.com:443?security=tls&sni=example.com&type=tcp&fp=chrome#ExampleТранспорт и шифрование
| Параметр | Значения |
|---|---|
| Транспорт | TCP (raw), WebSocket (ws), gRPC |
| Защита | TLS — обязателен, проверка сертификата сервера по имени из sni, отпечаток uTLS (fp) — по желанию |
Параметры конфигурации
| Параметр | Описание | Пример |
|---|---|---|
| пароль | Пароль пользователя перед @. Спецсимволы кодируются процентным кодированием. | password |
| адрес и порт | Домен сервера и порт; для Trojan почти всегда 443. | example.com:443 |
| security | Слой защиты; для Trojan — tls. | security=tls |
| sni | Домен, на который выдан сертификат сервера. | sni=example.com |
| type | Транспорт: tcp, ws или grpc. | type=ws |
| path и host | Путь и заголовок Host для WebSocket. | path=%2Ftrojan&host=example.com |
| serviceName | Имя сервиса для gRPC. | serviceName=trojan |
| alpn | Протоколы прикладного уровня, которые клиент предлагает в TLS: h2, http/1.1. | alpn=h2%2Chttp%2F1.1 |
| fp | Отпечаток TLS-клиента, с которым формируется ClientHello. | fp=chrome |
| fragment | Деление первого TLS-пакета на части с паузами; помогает стабильности рукопожатия, если крупный первый пакет на маршруте теряется. | fragment=1-10,5-20,tlshello |
| # имя | Имя сервера в списке Happ, до 30 символов. | #Example |
Сильные стороны
- Минимум обязательных параметров: пароль, адрес, порт и SNI.
- Нет зависимости от времени и второго слоя шифрования: нагрузка как у обычного TLS.
- Сервер делит порт 443 с сайтом через fallback.
- Передаёт UDP внутри TLS-соединения.
Ограничения
- Нужны домен и действительный сертификат, который придётся продлевать.
- Нет режима Vision: если внутри туннеля идёт HTTPS, данные шифруются дважды.
- Пароль хранится в ссылке открытым текстом, поэтому ссылкой нельзя делиться публично.
- Через CDN Trojan работает только с транспортом WebSocket или gRPC.
Когда выбирать Trojan
Trojan подходит, когда у сервера есть домен с сертификатом и нужен простой в поддержке протокол без UUID и требований к часам.
Если на сервере уже работает сайт на nginx, Trojan позволяет оставить его на том же порту 443 и отдавать сайт всем, кто подключается без пароля.
Если домена нет или продлевать сертификат неудобно, практичнее VLESS с Reality.
Сравнение с другими протоколами
| Протокол | Отличие |
|---|---|
| VLESS | Оба протокола используют TLS, но VLESS проверяет UUID и поддерживает Vision и Reality. Trojan проще: ему нужны только пароль и сертификат. |
| Shadowsocks | Shadowsocks шифрует данные сам и не требует домена. Trojan требует сертификат, зато работает поверх стандартного TLS и через CDN с транспортом WebSocket. |
| VMess | VMess может обойтись без TLS, но зависит от точного времени. Trojan без TLS не работает, зато к часам не привязан и не шифрует данные дважды. |
Главное
- Trojan не шифрует данные сам: вся защита канала обеспечивается TLS, поэтому без TLS протокол не используется.
- Сервер проверяет клиента по хэшу SHA-224 от пароля, который клиент отправляет в начале TLS-соединения.
- Параметр sni должен совпадать с доменом в сертификате сервера, иначе TLS-рукопожатие завершится ошибкой.
- Соединения без правильного пароля сервер Trojan может передавать на резервный веб-сервер (fallback), поэтому на порту 443 рядом с прокси работает сайт.
- Спецсимволы в пароле Trojan записываются в ссылке процентным кодированием, например @ как %40.
Частые вопросы
Почему для Trojan нужны домен и сертификат?
Trojan не шифрует данные сам: всю защиту даёт TLS, а TLS проверяет сервер по сертификату, выданному на домен. Без действительного сертификата клиент не может убедиться, что подключился к нужному серверу. Бесплатный сертификат Let's Encrypt подходит, если его вовремя продлевать. Если домена нет совсем, рассмотрите VLESS с Reality: там сервер проверяется по ключу.
Можно ли использовать Trojan с самоподписанным сертификатом?
Технически можно, но тогда клиенту придётся отключить проверку сертификата, а это лишает TLS защиты от подмены сервера: любой узел на пути сможет представиться вашим сервером. Для постоянной работы выпустите нормальный сертификат на домен, это занимает несколько минут. Самоподписанный вариант оставьте для краткой проверки сервера в собственной сети.
Что делать, если Trojan выдаёт ошибку TLS-рукопожатия?
Проверьте по порядку: совпадает ли sni с доменом сертификата, не истёк ли сертификат, открыт ли порт на сервере и верно ли установлены дата и время на устройстве — при неверной дате сертификат считается недействительным. Если сервер работает за CDN, в ссылке должен быть транспорт ws или grpc, а не tcp. В офисных сетях причиной бывает прокси с перехватом TLS.
Как записать в ссылке пароль со спецсимволами?
Пароль стоит в ссылке перед @, поэтому символы @, :, /, ?, # и % в нём нужно закодировать: @ как %40, : как %3A, / как %2F, ? как %3F, # как %23, % как %25. Без кодирования Happ неправильно разберёт ссылку и сообщит, что конфигурация trojan не валидная. Проще всего попросить администратора сгенерировать пароль из букв и цифр.
Поддерживает ли Trojan в Happ WebSocket и gRPC?
Да, транспорт задаётся параметром type: tcp, ws или grpc. Для WebSocket укажите path и, если нужно, host, для gRPC — serviceName. Транспорт в ссылке должен совпадать с настройкой сервера. WebSocket и gRPC нужны, когда между клиентом и сервером стоит CDN или обратный прокси; при прямом подключении tcp проще и быстрее.
Что такое fallback на сервере Trojan и важен ли он для клиента?
Fallback — адрес, куда сервер передаёт соединения без правильного пароля, обычно локальный веб-сервер с сайтом. Так на порту 443 одновременно работают сайт и прокси. Для Happ fallback ничего не меняет: при верном пароле соединение идёт в прокси. Но если в ссылке ошибка в пароле, вместо прокси сервер ответит страницей сайта, и подключение не заработает.
Передаёт ли Trojan UDP, например для звонков и игр?
Да, протокол Trojan умеет передавать UDP-пакеты внутри TLS-соединения, и Xray-core эту возможность поддерживает. Учтите, что такой UDP идёт поверх TCP и чувствителен к потерям: при плохой связи задержка в звонках растёт сильнее, чем у протоколов на QUIC. Для голосовых приложений на нестабильной сети сравните Trojan с Hysteria2, если сервер его поддерживает.
Упомянутые темы
Похожие материалы
Разделы по теме
Источники
- Документация Happ: примеры ссылок и параметры — обращение 27 сентября 2026
- Документация Happ: добавление конфигурации и подписки — обращение 27 сентября 2026
- Документация Happ: ошибки — обращение 27 сентября 2026