Clod Clash

Заголовки 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-modetrue, lock или falseзапирает режим маршрутизации на mode из шаблона
clod-pingA/B в мс, например 150/300границы цвета задержки. Без заголовка — 200/400
clod-disable-pingтолько trueгалочка или крестик вместо миллисекунд
clod-show-0hoststrue или 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 и без точки в конце. Иначе приложение не узнает в clod-new-sub домен основного адреса и сочтёт его запасным, а с clod-move-sub «переведёт» подписку на тот же сервер.
  • Запасной адрес нужен, только когда основной не ответил. Подписка с него применяется как обычное обновление. Отказ по лимиту устройств на запасном не повторяется — это та же панель.
  • Каждое удачное обновление решает заново: заголовок пришёл — домен запоминается (новый заменяет прежний), не пришёл — запасного адреса больше нет. Домен основного адреса ничего не делает.
  • clod-move-sub: true работает только вместе с clod-new-sub. После обновления с ним приложение проверяет запасной адрес. Отдал подписку — адрес подписки навсегда меняется на запасной, пользователь видит уведомление «Адрес подписки обновлён провайдером»; выбор серверов, режим и имя подписки остаются. Не ответил или отказал — ничего не меняется, попытка повторится при следующем обновлении с этим заголовком. На новом адресе тот же заголовок ничего не делает.
  • У подписки с защищённым каналом запасной адрес и переезд идут тем же каналом: на запасном домене должна стоять та же прослойка и отвечать на /c1/…. Без неё запасной адрес не выручит, а переезд не произойдёт.

На этой странице