Перейти к содержанию

Синтаксис

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

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

Комментарии

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

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

Объекты

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

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

Многострочный формат

1
2
3
4
5
tun:
  enable: true
  stack: system
  auto-route: true
  auto-detect-interface: true

Многострочный JSON

1
2
3
4
5
6
tun: { 
  enable: true,
  stack: system,
  auto-route: true,
  auto-detect-interface: true
  }

Однострочный JSON

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

Полный JSON

1
2
3
4
5
6
7
8
{
  "tun": {
    "enable": true,
    "stack": "system",
    "auto-route": true,
    "auto-detect-interface": true
  }
}

Массивы

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

Многострочный массив

1
2
3
4
a:
  - b
  - c
  - d

Однострочный JSON массив

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.

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

Пример использования

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

1
2
3
4
5
fake-ip-filter:
- ".lan"
- "xbox.*.microsoft.com"
- "+.xboxlive.com"
- localhost.ptlogin2.qq.com

Использование наборов доменов

Warning

rule-set поддерживает только поведение domain/classical

1
2
3
fake-ip-filter:
- "rule-set:xxx"
- "geosite:xxx"

Диапазоны портов

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

Пример

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

114-514/810-1919,65530