Подписка прокси — это приватный URL от вашего провайдера прокси, который возвращает список ваших серверов. Прокси-приложение загружает его, импортирует сразу все серверы, а потом периодически загружает заново, так что новые или измененные серверы появляются сами. Ссылка на подписку Clash устроена так же, только URL возвращает полную конфигурацию Clash: не только серверы, но и группы прокси и правила.

В этой статье разберем, что содержит подписка, какие есть три распространенных формата, как приложения загружают и обновляют подписки и как сохранить свою подписку в тайне.

Что такое подписка прокси?

Отдельным сервером можно поделиться в виде одной ссылки, например ss://… или vless://…. Это удобно для одного собственного сервера. Но провайдеры обычно дают много серверов в разных странах и время от времени меняют адреса, порты и ключи. Присылать каждый раз новые ссылки было бы неудобно.

Поэтому вместо этого они дают один URL, например:

https://sub.example.com/api/v1/client/subscribe?token=abc123

За этим URL находится документ со списком ваших серверов. Часть token определяет ваш аккаунт, поэтому один и тот же URL возвращает именно ваши серверы и ничьи больше. Вы один раз вставляете его в приложение, а дальше приложение само поддерживает его в актуальном состоянии.

Ссылка на сервер URL подписки
Содержит Один сервер Список серверов, часто с группами и правилами
Выглядит как ss://, vless://, trojan://, … https://…
Изменения Никогда: новый сервер — новая ссылка Провайдер меняет то, что возвращает URL
Обновляется в приложении Нет Да, по расписанию или по запросу

Распространенные форматы подписок

Единого стандарта нет. Большинство провайдеров используют один из трех форматов.

Подписки Base64 (V2Ray, Xray, Shadowsocks)

Самый старый и простой формат — обычный список ссылок, по одной на строку, закодированный в Base64. В декодированном виде он выглядит так:

ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#Tokyo
vless://3971e1b2-18a3-4f83-8fa6-bf9b142ee258@vless.example.com:443?security=tls&sni=vless.example.com#Singapore
trojan://secret@trojan.example.com:443?sni=trojan.example.com#Frankfurt

Его легко прочитать любому приложению, но в нем есть только серверы. Групп и правил нет, так что как направлять трафик, решает приложение.

YAML для Clash и Mihomo

Подписка Clash возвращает конфигурацию в формате YAML. Mihomo, движок большинства современных приложений Clash, читает тот же формат и поддерживает больше протоколов. Сокращенный пример:

proxies:
  - name: Tokyo
    type: ss
    server: ss.example.com
    port: 8388
    cipher: aes-256-gcm
    password: secret
proxy-groups:
  - name: Auto
    type: url-test
    proxies: [Tokyo]
    url: https://www.gstatic.com/generate_204
    interval: 300
rules:
  - DOMAIN-SUFFIX,example.org,DIRECT
  - MATCH,Auto

Помимо proxies, конфигурация Clash может содержать proxy-groups (выбор вручную, самого быстрого или резервного сервера), rules, которые решают, что идет через прокси, rule-providers и proxy-providers, подтягивающие дополнительные списки по другим URL, и настройки dns. Поэтому подписку Clash предпочитают, когда она есть: вы получаете готовую схему маршрутизации, а не только серверы.

Профили Surge

Surge использует текстовый файл в стиле INI с разделами вроде [Proxy], [Proxy Group] и [Rule]. Многие провайдеры предлагают и его. Другие приложения могут прочитать общие части, но у разделов, которые есть только в Surge, например скриптов и перезаписи URL, аналогов в других приложениях нет.

Как приложения загружают подписку

Когда приложение загружает подписку, оно отправляет обычный HTTPS-запрос. Здесь важны две детали.

Формат определяет User-Agent

Многие панели провайдеров отдают разный формат в зависимости от того, какое приложение запрашивает, и различают приложения по заголовку User-Agent. Запрос, который представляется клиентом Clash, получает YAML, а остальные могут получить список Base64. Некоторые панели также позволяют выбрать формат дополнительной частью URL — смотрите инструкции провайдера.

Potatso при загрузке подписки представляется как clash.meta. Поэтому панель, которая выбирает формат по приложению, отправляет и Potatso свою конфигурацию Clash / Mihomo с группами и правилами.

Заголовки передают остаток трафика

Многие панели добавляют к ответу заголовок subscription-userinfo:

subscription-userinfo: upload=1234; download=5678; total=107374182400; expire=1798761600

upload и download — израсходованные байты, total — объем трафика по тарифу, а expire — метка времени Unix, когда тариф заканчивается. Приложения, которые читают этот заголовок, показывают израсходованный трафик и дату окончания без входа на сайт провайдера. Заголовок Content-Disposition с именем файла часто становится названием профиля.

Профиль-подписка в Potatso: использованные данные, срок действия, последнее и следующее обновление и кнопка «Обновить сейчас»

Автоматические обновления

Подписка полезна, только пока она актуальна. Приложения загружают ее заново по расписанию, чаще всего раз в день, и заменяют старый список серверов новым. Большинство приложений также позволяют обновить подписку вручную, если сервер перестал работать.

Хорошее приложение к тому же сохраняет ваши изменения. Если вы переименовали группу или добавили правило, следующее обновление не должно все это отменить. Potatso, например, записывает ваши правки как переопределения и применяет их снова после каждого обновления, не трогая исходную подписку.

Храните URL подписки в тайне

URL подписки, по сути, — это пароль:

  • Любой, у кого он есть, может пользоваться вашим аккаунтом. Он сможет импортировать ваши серверы и израсходовать ваш трафик.
  • Не публикуйте его. Это касается и скриншотов, QR-кодов, отчетов об ошибках и групповых чатов.
  • Используйте HTTPS. Подписку, загруженную по обычному http://, можно прочитать и изменить по пути. Potatso показывает предупреждение, если конфигурация пришла по обычному HTTP.
  • Сбросьте его при утечке. В большинстве личных кабинетов провайдеров есть кнопка сброса ссылки на подписку. После этого импортируйте новый URL.
  • Осторожнее с онлайн-конвертерами. Вставляя URL на сторонний сайт для конвертации, вы отдаете этому сайту свои серверы.

Подписки и протоколы

Подписка — это просто контейнер. Серверы внутри нее используют протоколы вроде Shadowsocks, VLESS, Trojan, Hysteria 2 или AnyTLS, и приложение должно поддерживать каждый из них, чтобы им воспользоваться. Обычно приложение пропускает серверы, которые не может использовать, и сообщает причину. Чем отличаются эти протоколы, рассказано в статье Сравнение протоколов прокси, а о самом распространенном из них — в статье Что такое Shadowsocks.

Подписка на iPhone

Potatso, бесплатный прокси-клиент для iPhone и iPad, импортирует YAML Clash / Mihomo, подписки Base64, JSON V2Ray / Xray, профили Surge и Shadowsocks SIP008. Перед импортом он показывает предпросмотр, отображает израсходованный трафик и дату окончания и по умолчанию обновляет подписку ежедневно.

Пошаговая инструкция — в статье Как импортировать подписку Clash на iPhone, а полный список форматов — на странице Импорт подписок и конфигураций.

Частые вопросы

Что такое ссылка на подписку Clash?
Это URL от вашего провайдера прокси, который возвращает конфигурацию Clash или Mihomo в формате YAML. В файле перечислены ваши серверы, а обычно еще группы прокси и правила, и приложение по расписанию загружает его заново, чтобы данные оставались актуальными.
URL подписки — то же самое, что ссылка на сервер?
Нет. Ссылка вроде ss:// или vless:// описывает один сервер и никогда не меняется. URL подписки указывает на список на сервере провайдера, где серверы можно добавлять, удалять и изменять, а приложение загружает его заново, чтобы получить эти изменения.
Почему подписка в браузере выглядит как случайный набор символов?
Многие подписки V2Ray и Shadowsocks — это списки ссылок, закодированные в Base64. Прокси-приложение их декодирует. Кроме того, некоторые провайдеры отдают разный формат в зависимости от того, какое приложение запрашивает, поэтому браузер может увидеть не то, что получает приложение.
Что будет, если кто-то получит мой URL подписки?
Он сможет импортировать ваши серверы и расходовать ваш трафик, потому что URL обычно содержит токен, который работает как пароль. Если ссылка утекла, сбросьте ее в личном кабинете провайдера и импортируйте новую.

Другие языки: English · 简体中文 · 繁體中文 · 日本語