Поставщики прокси¶
name¶
Обязательное поле. Имя провайдера (например, provider1). Должно быть уникальным. Рекомендуется, чтобы оно не совпадало с именами групп прокси (Proxy Groups).
type¶
Обязательное поле. Тип провайдера, доступные варианты: http / file / inline.
url¶
URL-адрес для загрузки. Требуется только в том случае, если type имеет значение http.
path¶
Необязательное поле. Путь к файлу. Должен быть уникальным. Если не указан, в качестве имени файла будет использоваться MD5-хэш от URL.
Из соображений безопасности по умолчанию разрешено сохранение файлов только внутри домашней директории HomeDir (которая задается параметром запуска -d). Если вы хотите сохранить файл в другом месте, укажите дополнительные разрешенные пути через переменную окружения SAFE_PATHS. Синтаксис этой переменной соответствует правилам системной переменной PATH (разделение точкой с запятой ; в Windows и двоеточием : в других операционных системах).
interval¶
Интервал обновления провайдера, в секундах.
proxy¶
Выполнять загрузку/обновление через указанный прокси. По умолчанию DIRECT (напрямую).
size-limit¶
Ограничение максимального размера загружаемого файла. Значение по умолчанию 0 означает отсутствие ограничений. Единица измерения — байты (b).
age-secret-key¶
Если этот параметр установлен, ядро попытается расшифровать файл конфигурации в формате age armor, используя указанный секретный ключ.
Примечание:
- На данный момент для зашифрованного контента поддерживается только официальный ASCII-формат "armor" спецификации age-encryption.org/v1.
- Что касается форматов ключей, в настоящее время поддерживаются только типы получателей
x25519и гибридный постквантовый тип получателяmlkem768-x25519из спецификации age-encryption.org/v1. - На данный момент ядро не отправляет публичный ключ серверу автоматически. Пользователям необходимо вручную установить заголовок
X-Age-Public-Keyили загрузить публичный ключ другими способами. - Загрузка зашифрованных конфигурационных файлов также поддерживается через аргумент командной строки
-age-secret-keyили переменную окруженияCLASH_AGE_SECRET_KEY.
Утилиты:
- Вы можете сгенерировать подходящий ключ x25519 с помощью команды
mihomo age keygen. - Вы можете сгенерировать подходящий ключ mlkem768-x25519 с помощью команды
mihomo age keygen-pq. - Вы можете экспортировать открытый ключ age-public-key из секретного ключа с помощью
mihomo age convert <secret_key>. - Вы можете расшифровать зашифрованный файл с помощью
mihomo age decrypt <secret_key> <source_file> <target_file>. Если вместо<source_file>указан дефис-, чтение будет производиться из стандартного ввода; если вместо<target_file>указан дефис-, запись будет производиться в стандартный вывод. - Вы можете зашифровать незашифрованный файл с помощью
mihomo age encrypt <public_key> <source_file> <target_file>. Если вместо<source_file>указан дефис-, чтение будет производиться из стандартного ввода; если вместо<target_file>указан дефис-, запись будет производиться в стандартный вывод.
Примеры реализаций:
- Golang: FiloSottile/age
- Rust: str4d/rage
- Typescript: FiloSottile/typage
header¶
Пользовательские заголовки HTTP-запроса.
health-check¶
Проверка доступности (тест задержки).
health-check.enable¶
Включение проверки. Доступные варианты: true/false.
health-check.url¶
URL-адрес для проверки доступности. Рекомендуется использовать один из следующих адресов:
health-check.interval¶
Интервал между проверками доступности, в секундах.
health-check.timeout¶
Таймаут проверки доступности, в миллисекундах.
health-check.lazy¶
Ленивый режим (Lazy state). По умолчанию true. Проверка задержки не выполняется, если узлы из данного провайдера не используются.
health-check.expected-status¶
См. Ожидаемый статус (Expected Status).
override¶
Переопределение конфигурации узлов при их загрузке. Поддерживаются следующие поля:
override.additional-prefix¶
Добавляет фиксированный префикс к имени узла.
override.additional-suffix¶
Добавляет фиксированный суффикс к имени узла.
override.proxy-name¶
Заменяет текст в имени узла с поддержкой регулярных выражений. pattern — это заменяемое регулярное выражение, а target — строка замены.
override.Прочие_параметры_конфигурации¶
См. общие поля tfo
См. общие поля mptcp
См. общие поля udp.
См. Shadowsocks udp-over-tcp
См. Hysteria/Hysteria2 up.
См. Hysteria/Hysteria2 down.
См. общие поля skip-cert-verify.
См. общие поля name-cert-verify.
См. общие поля dialer-proxy.
См. общие поля interface-name.
См. общие поля routing-mark.
См. общие поля ip-version.
override.override-expr¶
Это подмножество правил переопределения конфигурации на основе выражений в стиле yq v4. Элементы массива выполняются последовательно и вступают в силу позже, чем статические переопределения полей, описанные выше (такие как udp: true и т. д.).
Поддерживаемые формы путей: ., .name, ."a.b", .["a.b"], .items[0], .items[-1]; [] может обходить массивы или mapping. Присваивание создает отсутствующие mapping и неотрицательные индексы массивов, но не обновляет данные через скаляры.
Поддерживаемые операции: =, |=, +=, -=, *=, del(.field), pipeline |, union через запятую, select, оператор значения по умолчанию //, обычные сравнения и булевы операции. Значения поддерживают null / ~, булевы значения, десятичные/шестнадцатеричные целые числа, float, строки в двойных кавычках, массивы и mapping с ключами в двойных кавычках.
Поддерживаемые функции: length, keys, has, contains, select, reverse, sort, unique, flatten, any, all, map, map_values, filter, to_entries, from_entries, with_entries, any_c, all_c, test, sub, split, join, upcase, downcase, trim, tostring, tonumber, type и not.
Ограничения и важные примечания
- Каждое выражение на выходе должно возвращать ровно один объект (mapping). Множественные результаты, не собранные в массив, а также операции
del(.), приводящие к пустому результату, не поддерживаются. - Обязательно используйте круглые скобки, если в правой части оператора присваивания используются конвейеры (
|) или логические операторыand/or. - Функция
from_entriesпринимает только массивы элементов, содержащие строковые ключи. - Функция
sortподдерживает только массивы скаляров (чисел или строк). Функцииany/allподдерживаются только в беспараметрической форме. - Операторы
==/!=сравнивают текстовые значения скаляров по правиламyq, глубокое структурное сравнение массивов или объектов не выполняется. - Операторы
<,<=,>,>=поддерживают сравнение только между числами, строками иnull. При логических проверках толькоfalseиnullобрабатываются как ложные значения, все остальные (включая0и"") считаются истинными. - Аргументы стандартных функций не должны возвращать несколько результатов. Однако функции, принимающие выражения (такие как
map/filter), могут обрабатывать потоки результатов в своих аргументах. Аргументы функций могут разделяться запятыми или точками с запятой. - Вычисления выполняются по семантике значений (глубокое копирование). Чтение за пределами границ массива не расширяет исходный массив, а функции
flatten/map_valuesв правой части не изменяют исходный путь неявно. - Используйте оператор
|=, если вам необходимо изменить значение по исходному пути. Если выражение справа не возвращает результат, цель сохранит свое исходное значение, а не превратится автоматически вnull. - Данные, прошедшие через потоки объектов, функции
keysи преобразования записей, автоматически сортируются по алфавитному порядку ключей, так как базовая структураmap[string]anyне сохраняет исходный порядок написания ключей в YAML. - Неподдерживаемые языковые возможности: определение переменных (например,
as/$x), итераторreduce, динамические пути (.[$key]), рекурсивный спуск (..). - Неподдерживаемые внешние возможности: обработка многодокументных файлов, доступ к файловой системе/переменным окружения, сохранение/обработка тегов, стилей и комментариев YAML, аргументы CLI-интерфейса
yq. - Любой синтаксис, операторы или функции
yq, не перечисленные в этой документации, не поддерживаются. Если вам нужно условное ветвление, используйте функциюselectс последующей цепочкой выражений присваивания вместо конструкцииif-else.
filter¶
Фильтрует узлы, соответствующие ключевым словам или регулярным выражениям. Вы можете использовать символ ` для разделения нескольких регулярных выражений.
exclude-filter¶
Исключает узлы, соответствующие ключевым словам или регулярным выражениям Вы можете использовать символ ` для разделения нескольких регулярных выражений.
exclude-type¶
Регулярные выражения не поддерживаются. Разделяйте типы прокси символом |. Исключает узлы на основе типа прокси, указанного в конфигурационном файле.
payload¶
Содержимое списка узлов. Работает только в том случае, если type имеет значение inline.
Если парсинг по протоколам http или из локального файла file завершается ошибкой, payload может использоваться в качестве резервного списка прокси-серверов.