Заголовки clod-*
Собственные заголовки Clod Clash, которые понимает Android: значения и что делает каждый
clod-* понимает только Clod Clash. Панель сама их не отдаёт — их вписывают в настройках
подписки в customResponseHeaders. Каждый действует только в своей подписке.
Все заголовки
| Заголовок | Значение | Что делает |
|---|---|---|
clod-portal-url | ссылка https:// | кнопка «Личный кабинет» — где продлевают тариф |
clod-bot-url | ссылка https://, tg: или mailto: | кнопка «Бот» |
clod-monitor-url | ссылка https:// | кнопка «Мониторинг» — состояние серверов |
clod-guide-url | ссылка https:// | кнопка «Инструкция» |
clod-announce | текст | постоянное объявление; важнее announce |
clod-promo | текст | промо-баннер, который можно закрыть |
clod-promo-url | ссылка https:// | куда ведёт нажатие на промо |
clod-lock-mode | true, lock или false | запирает режим маршрутизации на mode из шаблона |
clod-ping | A/B в мс, например 150/300 | границы цвета задержки. Без заголовка — 200/400 |
clod-disable-ping | только true | галочка или крестик вместо миллисекунд |
clod-show-0hosts | true или false | показывать узлы-заглушки панели как есть |
clod-mobile-only | имена серверов через | | серверы только для мобильной сети: вне сети SIM их не видно |
clod-app-mode | только all | режим «Разрешить все приложения», пока пользователь не отметил ни одного приложения |
clod-hide-badges | только true | скрыть у серверов подпись протокола, транспорта и защиты — «VLESS RAW (TCP) · Reality» |
clod-16-20-check | только true | проверка 16–20: обрывается ли скачивание через сервер в сети пользователя; значок-снежинка |
clod-new-sub | домен, например backup.example.com | запасной адрес подписки (домен) — на случай, если основной не ответил |
clod-move-sub | только true, вместе с clod-new-sub | перевести всех на запасной адрес |
Вместо true / false подходят 1 / 0, yes / no, on / off — кроме
clod-disable-ping, clod-hide-badges, clod-16-20-check и clod-move-sub, где работает только true. Непонятое значение равно отсутствию заголовка.
Текст с кириллицей отдавайте как base64:<текст в base64>.
Заголовки clod-*, которые работают только на ПК, здесь не перечислены — Android их не понимает.
Ссылки провайдера
«Личный кабинет», «Поддержка» (support-url), «Бот», «Мониторинг» и «Инструкция» собираются
в блок с именем подписки вверху вкладки Ещё. Показываются только присланные ссылки;
если нет ни одной, блока нет. «Личный кабинет» и «Поддержка» есть ещё на карточке подписки,
когда срок подходит к концу или закончился.
Объявление и промо
clod-announce— постоянное объявление на главном экране, висит, пока панель его отдаёт.clod-promo— баннер для акций под объявлением, свёрнут до двух строк. Закрывается крестиком; с новым текстом появляется снова, без заголовка — пропадает при следующем обновлении.clod-promo-urlделает его кликабельным.- Длина — до 300 видимых символов.
- Слова можно красить: код
#RRGGBBвплотную перед словом, например#EF4444ВАЖНО: узел на профилактике. Цвет действует до ближайшего пробела и в длину не входит.
Режим маршрутизации: clod-lock-mode
Запирает режим на тот, что в mode: шаблона (без него — «Режим правил»). В строке режима
стоит «задан провайдером», сменить режим нельзя.
| Значение | Что происходит |
|---|---|
true | режим заперт, пока панель это подтверждает. Если подписка не обновлялась удачно дольше 72 часов (или трёх интервалов обновления, если это дольше), замок снимается сам; следующее удачное обновление вернёт его |
lock | режим заперт без срока |
false | замка нет |
Для совместимости с Prizrak-Box global-mode: false понимается как clod-lock-mode: true,
global-mode: true — как «замка нет». clod-lock-mode важнее.
Задержка
clod-ping: A/B— доAмс задержка зелёная, доBжёлтая, дальше красная. Два целых через/,1 ≤ A < B ≤ 60000, иначе заголовок пропускается.clod-disable-ping: true— на главном экране и во вкладке «Серверы» вместо миллисекунд галочка (сервер отвечает), крестик (не ответил) или прочерк (ещё не проверялся).
Проверка 16–20: clod-16-20-check
С true приложение само проверяет каждый сервер подписки в сети пользователя: скачивает через него
64 КБ и смотрит одно — доходит ли всё или скачивание обрывается после первых килобайт. Сервер, на
котором оборвалось, через несколько секунд проверяется ещё дважды вместе с сервером, который в этой
сети работает. Значок-снежинка рядом с задержкой во вкладке «Серверы» и на главной ставится, только
если оборвались все три проверки, а рабочий сервер при этом прошёл; если последняя проверка прошла —
сервер считается рабочим. Сравнить не с чем или не прошёл и рабочий — значок не ставится: это скорее
плохая сеть. Нажатие на значок открывает объяснение: проверить соединение вручную и сообщить в
поддержку (кнопка «Написать в поддержку» есть, если прислан support-url). С серверами приложение
ничего не делает: задержка и выбор как были. Проверяются новые серверы и те, у которых изменились
данные подключения (адрес, порт, протокол, ключи; имя сервера TLS и Host не в счёт — их можно
выдавать случайными); итоги перепроверяются раз в 3 суток, а проверка, которая итога не дала, —
через 6 часов в той же сети. Итоги хранятся отдельно для каждой подписки и сети. Без заголовка (или
с любым значением, кроме true) ни проверок, ни значков нет.
Серверы только для мобильной сети: clod-mobile-only
Значение — точные имена серверов через |, например Москва LTE|МТС Питер. Регистр букв
важен, пробелы по краям имени не считаются. Сервер, в имени которого есть |, указать нельзя.
Имена действуют и на серверы подписки, и на серверы её наборов — в том числе на те, что появятся
в наборе при следующем обновлении.
- В мобильной сети (сеть SIM) эти серверы видны как обычно, с пометкой «моб. сеть».
- В любой другой сети — Wi-Fi (в том числе раздача с другого телефона), кабель, USB — их нет ни в одной группе и в списке серверов, их нельзя выбрать и их не проверяют. Если такой сервер выбран в группе или, когда выбора нет, стоит в ней первым, группа идёт через первый видимый сервер, а нет его — через первую группу, где виден хоть один сервер; прямым соединением — никогда. В мобильной сети группа сама возвращается к выбранному серверу.
- Серверы, которые соединяются через такой сервер (
dialer-proxy), скрываются вместе с ним. - Если в группе остались только такие серверы, вне мобильной сети группа ничего не пропускает, а не выпускает трафик напрямую; в списке вместо серверов — «Серверы доступны только в мобильной сети».
- Правило шаблона, которое называет такой сервер напрямую, по-прежнему ведёт через него — прячутся серверы только из групп.
Имена с кириллицей или флагами отдавайте целиком в base64: 🇷🇺 Москва LTE|МТС Питер —
это base64:8J+Ht/Cfh7og0JzQvtGB0LrQstCwIExURXzQnNCi0KEg0J/QuNGC0LXRgA==.
Режим приложений: clod-app-mode
Значение одно — all (регистр букв не важен); любое другое — как без заголовка.
Сразу после установки на экране Ещё → Приложения стоит «Разрешить выбранные приложения» с пустым
списком: если подписка не прислала свой список приложений, через туннель идёт только сам Clod Clash.
С clod-app-mode: all, пока пользователь ничего не отметил, вместо этого действует режим «Разрешить
все приложения» — вместе с tun.include-package и tun.exclude-package подписки, как они есть.
Если у подписки нет своих списков, под режимом на экране пишется «Пока ничего не отмечено, действует
режим провайдера — «Разрешить все приложения»».
- Пользователь отметил хоть одно приложение — заголовок не действует, через туннель идут отмеченные. Отметки у приложений, удалённых с телефона, не в счёт. Снял все отметки — снова действует.
- Пользователь сам выбрал «Разрешить все приложения» или «Запретить выбранные приложения» — заголовок ничего не меняет.
- В настройки пользователя заголовок ничего не записывает: перестали его присылать — после обновления подписки снова действует умолчание приложения.
- Какой трафик из пущенного в туннель уйдёт напрямую, по-прежнему решают правила шаблона.
clod-app-mode: allРежим «Разрешить все приложения» не рекомендуется. Лучше прислать tun.exclude-package со
списком приложений, которым VPN мешает (банки, госсервисы): тогда через туннель и без этого
заголовка пойдут все приложения, кроме перечисленных.
Подпись протокола у серверов: clod-hide-badges
Под именем сервера во вкладке «Серверы» приложение пишет протокол, транспорт и защиту — так же,
как панель: VLESS RAW (TCP) · Reality, Trojan WebSocket · TLS, Hysteria2 (UDP). С
clod-hide-badges: true этой подписи нет ни при включённом туннеле, ни без него.
clod-hide-badges: trueОстаётся всё остальное: имя и флаг сервера, задержка, пометка «моб. сеть», значок-снежинка,
«Закреплён», у групп в списке — «Сейчас:» и сервер, на котором группа стоит, а пока он неизвестен —
тип группы (при включённом туннеле; без него у такой группы подписи нет). У встроенных «Direct» и
«Reject» внутри групп подпись тоже пропадает. Остаются и подписи, которые провайдер задаёт сам:
описание сервера (поле serverDescription у узла в шаблоне) и часть имени, вырезанная
ui-subtitle-pattern при включённом туннеле. Шаблон — регулярное выражение в YAML подписки:
clash-for-android:
ui-subtitle-pattern: "[A-Z]{2}$"Подключение и выбор серверов от заголовка не меняются — меняется только то, что видно.
- Когда пригодится: протокол и защита в списке пользователю ни к чему или выдают лишнее, а имён
серверов достаточно. Чтобы под именем всё же была строка, задайте
serverDescription— например,Для видеоилиРезервный. - Заголовок перечитывается при каждом обновлении подписки: пришёл
true— подписи нет, заголовок пропал (или пришло другое значение) — после обновления подпись вернётся. - Действует только в своей подписке: у других подписок подпись остаётся.
- На ПК заголовок тот же —
clod-hide-badges.
Узлы-заглушки: clod-show-0hosts
Без заголовка приложение узнаёт узлы-заглушки панели (истёкшая подписка, закончился трафик,
«нет серверов») и вместо них показывает свой экран с причиной. С true узлы панели попадают
в список серверов как есть. Экран лимита устройств от этого заголовка не зависит.
Запасной адрес: clod-new-sub и clod-move-sub
clod-new-sub— только домен:backup.example.com, безhttps://, порта, пути,?и#. Иначе заголовок пропускается. Запасной адрес —https://, этот домен и путь с параметрами основного адреса: дляhttps://panel.example.com:8443/sub/abcэтоhttps://backup.example.com/sub/abc(порт основного не переносится).- Как писать домен, чтобы приложение его приняло и узнало:
- кириллический домен — только в punycode:
xn--e1afmkfd.xn--p1ai, а непример.рф; - без точки в конце:
backup.example.com, а неbackup.example.com.; - регистр букв не важен;
- запасной сервер отвечает на порту 443.
- кириллический домен — только в punycode:
- Домен в ссылке подписки у пользователей пишите так же — в punycode и без точки в конце.
Иначе приложение не узнает в
clod-new-subдомен основного адреса и сочтёт его запасным, а сclod-move-sub«переведёт» подписку на тот же сервер. - Запасной адрес нужен, только когда основной не ответил. Подписка с него применяется как обычное обновление. Отказ по лимиту устройств на запасном не повторяется — это та же панель.
- Каждое удачное обновление решает заново: заголовок пришёл — домен запоминается (новый заменяет прежний), не пришёл — запасного адреса больше нет. Домен основного адреса ничего не делает.
clod-move-sub: trueработает только вместе сclod-new-sub. После обновления с ним приложение проверяет запасной адрес. Отдал подписку — адрес подписки навсегда меняется на запасной, пользователь видит уведомление «Адрес подписки обновлён провайдером»; выбор серверов, режим и имя подписки остаются. Не ответил или отказал — ничего не меняется, попытка повторится при следующем обновлении с этим заголовком. На новом адресе тот же заголовок ничего не делает.- У подписки с защищённым каналом запасной адрес и переезд идут тем же каналом: на запасном
домене должна стоять та же прослойка и отвечать на
/c1/…. Без неё запасной адрес не выручит, а переезд не произойдёт.