Заголовки ответа
Ответ подписки может нести настройки в HTTP-заголовках. Те же ключи можно записать строками #ключ: значение в начале тела (см. Формат подписки); если есть и то и другое, побеждает заголовок. Ключи не зависят от регистра. На этой странице перечислены все ключи, которые реализует mins.
Как читаются значения
Заголовок раздела «Как читаются значения»| Тип | Правило |
|---|---|
| bool | true или 1 включает настройку. Любое другое непустое значение (false, 0, yes, True) выключает. Пишите true/false строчными или 1/0. Исключение: per-app-proxy-enable принимает только 1 или 0. |
| text | Обычный текст либо base64: и далее base64 от текста в UTF-8 (используйте для не-ASCII и многострочного текста, так как значения заголовков должны быть ASCII). Более длинный текст обрезается до лимита, а не отклоняется. |
| URL | Должен быть https:// с корректным хостом и без пробелов. Шесть ключей принимают также ссылку mins://, которая всегда открывает предпросмотр импорта: support-url, profile-web-page-url, announce-url, premium-url, sub-info-button-link, sub-expire-button-link. |
| list | Элементы через запятые и/или пробелы. |
| range | N или N-M: целые без знака, N не больше M. |
| seconds | Целое от 5 до 15. |
Прочие правила:
- Пустое или состоящее из пробелов значение считается «не передано»: прежнее значение сохраняется.
- Отправляйте каждый заголовок один раз. Повторяющиеся заголовки с одним именем склеиваются через запятую.
- Обычные HTTP-заголовки (
Content-Type,Server,Dateи т. д.) не являются ключами подписки. Они молча пропускаются и не попадают в раздел Не применяется. - Допустимый ключ с некорректным значением пропускается с причиной; остальные заголовки применяются.
Подтверждение
Заголовок раздела «Подтверждение»Настройки, которые меняют маршрутизацию трафика устройства, DNS, автозапуск или локальные порты, никогда не применяются молча. Они сохраняются как ожидающие и показываются пользователю в предпросмотре импорта (Подписка запрашивает изменение настроек, значения Сейчас и Будет) либо на экране подписки (Подписка запрашивает изменение настроек) с кнопками Принять и Отклонить.
- Пока пользователь не принял, действует прежнее значение.
- Отклонённое значение запоминается и не предлагается снова, пока панель не пришлёт для этого ключа другое значение. Повторная отправка уже принятого значения ничего не меняет.
- После Принять, если подключение идёт через эту подписку, клиент переподключается, чтобы применить изменение.
- Остальные ключи применяются сразу и перечисляются в разделе Задано подпиской, где пользователь может переопределить каждый своим значением или вернуть глобальную настройку.
Ключи, требующие подтверждения, в таблицах ниже отмечены «Да»: routing-enable, proxy-enable, tun-enable, exclude-local-networks-enable, exclude-routes, exclude-routes-set, include-all-networks-enable, exclude-apns-enable, inbound-http-enable, dns-from-json-enable, app-auto-start и все ключи, начинающиеся с per-app-proxy- или server-address-resolve-.
Оформление
Заголовок раздела «Оформление»| Ключ | Значение | Лимиты | Действие | Подтверждение |
|---|---|---|---|---|
profile-title |
text | 25 символов | Название подписки. Имя, введённое пользователем, главнее. | Нет |
profile-description |
text | 200 символов | Описание на карточке подписки. | Нет |
announce |
text | 200 символов | Объявление рядом с группой подписки на главном экране и на экране подписки. | Нет |
announce-url |
URL | https:// или mins:// |
Кнопка Подробнее на объявлении на экране подписки. | Нет |
support-url |
URL | https:// или mins:// |
Ссылка Поддержка в разделе Ссылки провайдера. | Нет |
profile-web-page-url |
URL | https:// или mins:// |
Ссылка Сайт. | Нет |
premium-url |
URL | https:// или mins:// |
Ссылка Тариф на сайте. | Нет |
support-email |
адрес | содержит @; без пробелов, управляющих символов, ?, & и # |
Ссылка Написать в поддержку (открывает mailto:). |
Нет |
sub-info-text (псевдоним banner-text) |
text | 200 символов | Информационная карточка на экране подписки. | Нет |
sub-info-button-text (псевдоним banner-button-text) |
text | 25 символов | Подпись кнопки карточки. По умолчанию: Подробнее. | Нет |
sub-info-button-link (псевдоним banner-button-url) |
URL | https:// или mins:// |
Куда ведёт кнопка карточки. Без него кнопки нет. | Нет |
sub-info-color |
red, blue, green |
Тон карточки: цвет ошибки, обычный акцент, цвет успеха. Другие цвета не принимаются. | Нет | |
serverDescription |
text | 30 символов | Описание по умолчанию для серверов подписки, у которых нет своего. | Нет |
Трафик и срок
Заголовок раздела «Трафик и срок»| Ключ | Значение | Лимиты | Действие | Подтверждение |
|---|---|---|---|---|
subscription-userinfo |
upload=<байты>; download=<байты>; total=<байты>; expire=<unix-секунды> |
Целые без знака; неизвестные поля и неверные числа пропускаются с предупреждением; нужно хотя бы одно верное поле | Показывает израсходованный трафик (upload + download) из total и дни до expire. total=0 или отсутствие — без лимита, expire=0 или отсутствие — без срока. Индикатор переходит в тон предупреждения при 90% лимита или за 3 дня до конца и в тон ошибки, когда лимит исчерпан или срок прошёл. |
Нет |
notification-subs-expire, sub-expire |
bool | false отключает уведомления об истечении для этой подписки. По умолчанию включены. Клиент уведомляет, когда остаётся 3 дня, когда остаётся 1 день и когда подписка истекла, по одному разу на этап. Нужен expire в subscription-userinfo. |
Нет | |
sub-expire-button-link |
URL | в приложении https:// или mins://; действие в уведомлении принимает только https:// |
Кнопка Продлить на карточке подписки и в уведомлении об истечении. | Нет |
Обновление и переезд
Заголовок раздела «Обновление и переезд»| Ключ | Значение | Лимиты | Действие | Подтверждение |
|---|---|---|---|---|
profile-update-interval |
целые часы | больше 0 | Интервал автообновления. По умолчанию — 6 часов, если не передан. | Нет |
subscription-auto-update-enable |
bool | false отключает автообновление этой подписки. |
Нет | |
subscription-auto-update-open-enable |
bool | true: при каждом запуске приложения обновляются все подписки независимо от интервалов. Действует на устройство; решает последняя подписка, приславшая ключ. |
Нет | |
subscription-request-timeout |
секунды | от 5 до 15 | Таймаут загрузки этой подписки. По умолчанию 9. | Нет |
new-url |
URL | https:// |
С этого ответа заменяет сохранённый адрес подписки. На карточке подписки показывается URL подписки изменён со старым и новым адресом. Если новый адрес не HTTPS, обновление завершается ошибкой «Insecure subscription migration refused». Главнее new-domain. |
Нет |
new-domain |
имя хоста | без /, :, ?, #, @ и пробелов |
Заменяет только хост сохранённого адреса; схема, порт, путь и запрос остаются. То же уведомление и то же правило HTTPS, что у new-url. |
Нет |
fallback-url |
URL | https:// |
Второй адрес, который один раз пробуется, если загрузка основного не удалась. Сохраняется из успешного ответа, поэтому работает со второй загрузки. | Нет |
change-user-agent |
строка | без управляющих символов | User-Agent для следующих запросов этой подписки вместо пресета пользователя. См. Заголовки запроса. |
Нет |
manual-block-user-agent |
bool | true блокирует выбор User-Agent на экране подписки. |
Нет | |
subscription-always-hwid-enable |
bool | true помечает подписку как требующую идентификатор устройства. Если пользователь выключил Отправлять идентификатор устройства (HWID), показывается предупреждение, что обновления могут перестать работать; выбор остаётся за пользователем. |
Нет |
Поведение списка серверов
Заголовок раздела «Поведение списка серверов»| Ключ | Значение | Лимиты | Действие | Подтверждение |
|---|---|---|---|---|
subscription-autoconnect |
bool | true: при запуске приложения с выбранным сервером этой подписки подключение выполняется автоматически. Также сразу после первого импорта подписки. |
Нет | |
subscription-autoconnect-type |
lastused, lowestdelay, random |
Какой сервер выбирает автоподключение. lastused (по умолчанию): последний выбранный сервер группы, а если его нет — первый. lowestdelay: пингует группу и берёт самый быстрый. random: случайный. |
Нет | |
subscription-ping-onopen-enabled |
bool | Пингует серверы этой подписки при запуске приложения и после импорта. | Нет | |
subscriptions-sort-type (псевдоним sort-order) |
without, ping, alphabet |
sort-order принимает также none (= without) и name (= alphabet) |
Порядок серверов в группе: как у провайдера, по пингу, по имени. | Нет |
subscriptions-collapse |
bool | false: группу нельзя свернуть. |
Нет | |
subscriptions-expand-now |
bool | true: при обновлении подписки группа разворачивается. |
Нет | |
subscription-pin |
bool | true: группа закрепляется выше остальных. |
Нет |
| Ключ | Значение | Лимиты | Действие | Подтверждение |
|---|---|---|---|---|
ping-type |
tcp, proxy, proxy-head, icmp |
Как измеряются серверы этой подписки. Собственный mins.ping.type сервера и выбор пользователя для сервера главнее. |
Нет | |
ping-result |
time, icon |
Показывать число или только цвет качества. | Нет | |
check-url-via-proxy |
URL | только https:// (без mins://) |
Адрес проверки для proxy и proxy-head. По умолчанию https://www.gstatic.com/generate_204. |
Нет |
proxy-ping-timeout |
секунды | от 5 до 15 | Таймаут пинга. По умолчанию 5 секунд. | Нет |
proxy-ping-mode |
default |
только default |
Принимается и сохраняется; на работу не влияет. Другие значения (double, keepalive) отклоняются. |
Нет |
Настройка трафика
Заголовок раздела «Настройка трафика»Применяется только к серверам, которые клиент собирает сам: серверам из ссылок и отдельным outbound в JSON. Полный Xray JSON используется как есть, и каждый ключ этой таблицы для JSON-подписки отклоняется с причиной «Traffic controls do not override a full Xray JSON configuration». Фрагментация и шумы работают с TCP-соединениями; к серверам на UDP (Hysteria2, WireGuard, mKCP) они неприменимы, и пока включены, такие серверы не собираются.
| Ключ | Значение | Лимиты | Действие | Подтверждение |
|---|---|---|---|---|
fragmentation-enable |
bool | Включает или выключает фрагментацию TLS. | Нет | |
fragmentation-packets |
tlshello или range |
all отклоняется |
Какие пакеты делить. | Нет |
fragmentation-length |
range | Размер фрагмента в байтах, например 50-100. |
Нет | |
fragmentation-interval |
range | Задержка между фрагментами, например 10-20. |
Нет | |
fragmentation-maxsplit |
range | Максимальное число разбиений. | Нет | |
noises-enable |
bool | Включает или выключает шумовые пакеты. | Нет | |
noises-packet-type (псевдоним noises-type) |
array, str, hex, base64, rand |
по умолчанию array |
Формат noises-packet. |
Нет |
noises-packet |
строка | должна соответствовать типу (ниже) | Содержимое шума. Если не соответствует заявленному типу, все ключи noises-* этого ответа игнорируются. |
Нет |
noises-delay |
range | Задержка в миллисекундах. | Нет | |
noises-rand |
range | Длина случайных данных. | Нет | |
noises-rand-range |
range | по умолчанию 0-255 |
Диапазон значений случайных байт. | Нет |
mux-enable |
bool | Включает или выключает мультиплексирование. | Нет | |
mux-tcp-connections |
целое | 32-битное знаковое целое; диапазон mins не проверяет | Параллелизм TCP в Mux. | Нет |
mux-xudp-connections |
целое | 32-битное знаковое целое; диапазон mins не проверяет | Параллелизм XUDP в Mux. | Нет |
mux-quic |
reject, allow, skip |
Как Mux обращается с QUIC (UDP 443). | Нет | |
sniffing-enable |
bool | Включает или выключает определение назначения (sniffing). | Нет |
Форматы noises-packet: array — байты, 1,2,3 или [1,2,3]; str — любая строка; hex — hex-пары через запятую, например 0a0b,ff00; base64 — элементы base64 через запятую; rand — диапазон, например 10-20.
Настройки устройства (с подтверждением)
Заголовок раздела «Настройки устройства (с подтверждением)»Эти ключи меняют поведение всего устройства, пока используются серверы подписки. Все ключи таблицы, кроме user-agent-geo-files, требуют подтверждения пользователя.
| Ключ | Значение | Лимиты | Действие | Подтверждение |
|---|---|---|---|---|
proxy-enable |
bool | при передаче обоих должен быть противоположен tun-enable |
true: режим подключения Только прокси; false: VPN (TUN). |
Да |
tun-enable |
bool | см. выше | true: VPN (TUN); false: Только прокси. Если оба ключа присланы с одним значением, оба игнорируются. Если прислан только один, второй сбрасывается. |
Да |
exclude-local-networks-enable |
bool | Обход локальных сетей. | Да | |
exclude-routes |
list | IP или CIDR (10.0.0.0/8, 2001:db8::/32) |
Добавляет к Исключённым маршрутам: они идут напрямую. | Да |
exclude-routes-set |
list | то же | Заменяет Исключённые маршруты. | Да |
include-all-networks-enable |
bool | Включить все сети. Только iOS и macOS. | Да | |
exclude-apns-enable |
bool | Исключить push-уведомления Apple. Только iOS и macOS. | Да | |
inbound-http-enable |
bool | В режиме VPN дополнительно открывает локальный порт прокси на 127.0.0.1 с сгенерированными учётными данными. |
Да | |
dns-from-json-enable |
bool | Только для серверов с полным JSON. true (по умолчанию): используется собственный dns из JSON. false: его заменяет DNS, построенный из действующего профиля маршрутизации. |
Да | |
server-address-resolve-enable |
bool | нужны оба ключа ниже | Перед подключением разрешает доменные имена серверов подписки через DoH-резолвер ниже и подключается по IP. SNI и Host не меняются. Только серверы из ссылок. Если разрешение не удалось, используется исходный домен с предупреждением. |
Да |
server-address-resolve-dns-domain |
URL | DoH-адрес https:// |
DoH-резолвер. | Да |
server-address-resolve-dns-ip |
IP | IP-адрес | Адрес этого резолвера, чтобы ему самому не требовалось разрешение имени. | Да |
app-auto-start |
bool | Android: Запускать после загрузки устройства. | Да | |
routing-enable |
bool | true: серверы подписки используют профиль маршрутизации подписки. false: профиль маршрутизации для них не используется. Автоматически становится true, если routing содержит профиль, который должен быть включён (JSON, base64, адрес https:// или ссылка onadd). |
Да | |
routing |
профиль | см. Профили маршрутизации | Профиль маршрутизации: JSON, base64 от JSON (можно с base64:), адрес https:// или ссылка маршрутизации mins:///happ:///incy://. Профиль сохраняется неактивным и используется серверами этой подписки только после подтверждения routing-enable. Адрес загружается при импорте подписки; последующие обновления подписки его заново не скачивают, поэтому присылайте профиль внутри ответа, если он часто меняется. Профиль, не прошедший проверку, пропускается как «Invalid routing profile». |
Через routing-enable |
user-agent-geo-files |
safari-mac, chrome-win, safari-ios, firefox-win, chrome-android |
User-Agent браузера, с которым загружаются геофайлы (User-Agent геофайлов). Действует на устройство; решает последняя подписка, приславшая ключ. | Нет |
Раздельное туннелирование по приложениям
Заголовок раздела «Раздельное туннелирование по приложениям»Per-app-маршрутизация есть только на Android, Windows и Linux. Ключи без суффикса (per-app-proxy-enable, per-app-proxy-mode, per-app-proxy-list, per-app-proxy-list-set, per-app-proxy-list-invert) — это варианты для Android: они читаются на всех платформах, кроме Windows и Linux, где игнорируются и вместо них используются ключи с -windows и -linux. Ключи с -windows читаются только на Windows, с -linux — только на Linux. На iOS и macOS принятая per-app-настройка приводит к ошибке подключения «Per-app routing is not supported on this platform». Используйте заголовок запроса x-device-os (см. Заголовки запроса) и отправляйте эти ключи только на поддерживаемые платформы.
| Ключ | Значение | Действие | Подтверждение |
|---|---|---|---|
per-app-proxy-enable |
1 или 0 |
Ключ без суффикса (вариант для Android). 0: режим по приложениям выключен. 1: включает режим «только выбранные», если режим не задан. |
Да |
per-app-proxy-mode |
off, on, bypass (proxy читается как on) |
Ключ без суффикса (вариант для Android). on: через VPN идут только перечисленные приложения. bypass: все приложения, кроме перечисленных. |
Да |
per-app-proxy-list |
список ID пакетов | Ключ без суффикса (вариант для Android). Добавляет к списку. | Да |
per-app-proxy-list-set |
list | Ключ без суффикса (вариант для Android). Заменяет список. | Да |
per-app-proxy-list-invert |
list | Ключ без суффикса (вариант для Android). Включает режим «все, кроме перечисленных» и заменяет список. | Да |
per-app-proxy-mode-windows |
off, on, bypass |
Windows. Смысл тот же, что у per-app-proxy-mode. |
Да |
per-app-proxy-list-windows-add, per-app-proxy-list-windows-set |
список имён исполняемых файлов | Windows. Добавить к списку или заменить его. | Да |
per-app-proxy-mode-linux |
off, on, bypass |
Linux. Смысл тот же. | Да |
per-app-proxy-list-linux-add, per-app-proxy-list-linux-set |
список имён исполняемых файлов | Linux. Добавить к списку или заменить его. | Да |
Отклоняемые ключи
Заголовок раздела «Отклоняемые ключи»Эти ключи распознаются и отклоняются. Они появляются в разделе Не применяется в сведениях о подписке с указанной причиной (текст причины показывается на английском).
| Ключ | Причина |
|---|---|
hide-settings, hide-url, hide-check |
Providers cannot hide client settings or controls. (Провайдеры не могут скрывать настройки и элементы управления клиента.) |
color-profile, banner-bg-color, banner-button-color |
Provider colors are not applied; the application theme belongs to the user. (Цвета провайдера не применяются; тема приложения принадлежит пользователю.) |
custom-tunnel-config |
sing-box configuration is outside the supported scope. (Конфигурация sing-box вне поддерживаемого объёма.) |
hide-vpn-icon |
The system VPN indicator cannot be hidden. (Системный индикатор VPN скрыть нельзя.) |
subscription-alternative-hwid-enabled |
Alternative HWID format is undocumented. (Альтернативный формат HWID не документирован.) |
no-limit-enabled, no-limit-xhttp-enabled |
Xray memory-limit controls do not apply to this engine. (Лимиты памяти Xray к этому движку не относятся.) |
Любой другой заголовок не является ключом подписки и молча пропускается, без предупреждения. Это относится и к параметрам Happ и INCY, которые mins не реализует, например tun-type, socks-auth-* или http-auth-*. (Неизвестная строка #key: value в теле — иначе: она считается задуманными метаданными и пропускается с причиной «Unsupported subscription parameter».)
Отклонение по значению: ключ из таблиц выше со значением вне лимитов пропускается с причиной вроде «Timeout must be 5–15 seconds», «Expected a positive interval in hours», «Unsupported parameter value», «Expected IP literals or CIDR networks», «Unsafe URL ignored; HTTPS is required (mins links require import preview)» или «INCY boolean parameters require 1 or 0».
Примеры
Заголовок раздела «Примеры»Ответ с частыми ключами. Значения base64 декодируются в Example VPN и Planned maintenance on Friday, 02:00-03:00 UTC.
HTTP/1.1 200 OKContent-Type: text/plain; charset=utf-8profile-title: base64:RXhhbXBsZSBWUE4=profile-update-interval: 12subscription-userinfo: upload=1073741824; download=5368709120; total=107374182400; expire=1798761600support-url: https://t.me/example_supportprofile-web-page-url: https://example.comannounce: base64:UGxhbm5lZCBtYWludGVuYW5jZSBvbiBGcmlkYXksIDAyOjAwLTAzOjAwIFVUQw==announce-url: https://example.com/statussub-expire-button-link: https://example.com/renewsub-info-text: Renew by Friday and keep your plansub-info-button-text: Renewsub-info-button-link: https://example.com/renewsub-info-color: redsubscriptions-sort-type: pingping-type: proxy-headcheck-url-via-proxy: https://cp.cloudflare.com/generate_204subscription-ping-onopen-enabled: true
vless://11111111-1111-4111-8111-111111111111@fi.example.com:443?type=ws&security=tls&sni=fi.example.com&path=%2Fws&host=fi.example.com#Finlandhysteria2://s3cret@de.example.com:443/?sni=de.example.com#GermanyФрагментация и шумы работают только с серверами на TCP/TLS. Включайте их в подписке без серверов Hysteria2, WireGuard и mKCP (см. Настройка трафика), например только с VLESS:
HTTP/1.1 200 OKContent-Type: text/plain; charset=utf-8fragmentation-enable: truefragmentation-packets: tlshellofragmentation-length: 50-100fragmentation-interval: 10-20
vless://11111111-1111-4111-8111-111111111111@fi.example.com:443?type=ws&security=tls&sni=fi.example.com&path=%2Fws&host=fi.example.com#Finlandvless://11111111-1111-4111-8111-111111111111@nl.example.com:443?security=tls&sni=nl.example.com#NetherlandsНастройки, требующие подтверждения: исключение банковского приложения из туннеля на Android, исключение локальных сетей и профиль маршрутизации. Пользователя спросят один раз; если он отклонит, именно этот набор больше не предлагается.
HTTP/1.1 200 OKContent-Type: text/plain; charset=utf-8exclude-local-networks-enable: trueexclude-routes: 10.0.0.0/8, 192.168.0.0/16per-app-proxy-mode: bypassper-app-proxy-list: com.example.bank, com.example.walletrouting: https://example.com/routing/ru.json
vless://11111111-1111-4111-8111-111111111111@fi.example.com:443?security=tls#Finland