Перейти к содержимому

Синтаксис

Mihomo использует yaml в качестве формата конфигурационного файла

yaml чувствителен к регистру, использует отступы для обозначения иерархических отношений. Для отступов запрещено использовать табуляцию, разрешены только пробелы. Количество пробелов в отступе не имеет значения, главное, чтобы элементы одного уровня были выровнены по левому краю.

В файлах формата yaml комментарии начинаются с символа ”#” и продолжаются до конца строки. Символ ”#” должен быть либо в начале строки, либо перед ним должен быть пробел, иначе он не будет считаться комментарием.

port: 7890 # http прокси порт
socks-port: 7891
# socks прокси порт

Пары ключ-значение в объектах обозначаются двоеточием key: value, после двоеточия должен быть пробел. Отступы используются для обозначения иерархических отношений.

Поскольку формат yaml является надмножеством json, можно напрямую использовать синтаксис json.

tun:
enable: true
stack: system
auto-route: true
auto-detect-interface: true
tun: {
enable: true,
stack: system,
auto-route: true,
auto-detect-interface: true
}
tun: { enable: true, stack: system, auto-route: true, auto-detect-interface: true}
{
"tun": {
"enable": true,
"stack": "system",
"auto-route": true,
"auto-detect-interface": true
}
}

Строки, начинающиеся с -, обозначают элементы массива, используются для нескольких значений внутри объекта.

a:
- b
- c
- d
a: [b, c, d]

& якорь и * псевдоним могут использоваться для создания ссылок. & используется для установки якоря, << для объединения с текущими данными, а * для ссылки на якорь.

В следующем примере, поскольку ключ p не существует в mihomo, он будет проигнорирован при обработке конфигурации.

Если при объединении есть повторяющиеся элементы, они не будут объединены.

p: &p
type: http
interval: 3600
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
proxy-providers:
provider1:
<<: *p
url: ""
path: ./proxy_providers/provider1.yaml
provider2:
<<: *p
type: file
path: ./proxy_providers/provider2.yaml

Это эквивалентно:

proxy-providers:
provider1:
type: http
interval: 3600
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
url: ""
path: ./proxy_providers/provider1.yaml
provider2:
interval: 3600
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
type: file
path: ./proxy_providers/provider2.yaml

Подстановочный знак * в Clash может сопоставить только один уровень домена за раз.

*.baidu.com соответствует tieba.baidu.com, но не соответствует 123.tieba.baidu.com или baidu.com.

* соответствует только таким именам хостов, как localhost, которые не содержат точку ..

Подстановочный знак + похож на DOMAIN-SUFFIX и может сопоставлять несколько уровней за раз.

+.baidu.com соответствует tieba.baidu.com, 123.tieba.baidu.com и baidu.com.

Подстановочный знак + может использоваться только для сопоставления префикса домена.

Подстановочный знак . может сопоставлять несколько уровней за раз.

.baidu.com соответствует tieba.baidu.com и 123.tieba.baidu.com, но не соответствует baidu.com.

Подстановочный знак . может использоваться только для сопоставления префикса домена.

При использовании подстановочных знаков следует заключать содержимое в кавычки ' ' или " ".

fake-ip-filter:
- ".lan"
- "xbox.*.microsoft.com"
- "+.xboxlive.com"
- localhost.ptlogin2.qq.com

fake-ip-filter:
- "rule-set:xxx"
- "geosite:xxx"

Mihomo может использовать - для сопоставления диапазонов портов, а также / или , для разделения нескольких портов/диапазонов портов.

Сопоставление портов от 114 до 514 и от 810 до 1919, а также порта 65530.

114-514/810-1919,65530