Поставщики прокси
proxy-providers: provider1: type: http url: "http://test.com" path: ./proxy_providers/provider1.yaml interval: 3600 proxy: DIRECT size-limit: 0 age-secret-key: AGE-SECRET-KEY-1ZTQLLN0A4U3ZTT3DCZKYN0CGZEZQLWX2DFTXUWMT4ZHR0N2UG6LSW9NT0N header: User-Agent: - "mihomo/1.18.3" Authorization: - 'token 1231231' # X-Age-Public-Key: # - 'age1xh86kh9v23vattr58yedspm3f57sxvnswu9krr6ns438amekx5gsd09uma' health-check: enable: true url: https://www.gstatic.com/generate_204 interval: 300 timeout: 5000 lazy: true expected-status: 204 override: tfo: false mptcp: false udp: true udp-over-tcp: false down: "50 Mbps" up: "10 Mbps" skip-cert-verify: true name-cert-verify: example.com dialer-proxy: proxy interface-name: tailscale0 routing-mark: 233 ip-version: ipv4-prefer additional-prefix: "provider1 prefix |" additional-suffix: "| provider1 suffix" proxy-name: - pattern: "IPLC-(.*?)倍" target: "iplc x $1" # override-expr: # - '.name = "[provider1] " + .name' # - '.plugin-opts.mode = "tls"' # - '.alpn[] |= upcase' # - 'del(.skip-cert-verify)' # - '.name = (.name | trim | upcase)' # - '.name = "[\(.type)] \(.name):\(.port)"' # - '(select(.port == 443) | .tls) = true' # - '.tags |= (unique | sort)' # - '.names = [.servers[] | select(.enabled) | .name]' # - '.servers |= map(select(.enabled))' # - '.options |= with_entries(.key |= upcase)' # - '. | with_entries(.key |= upcase)' filter: "(?i)港|hk|hongkong|hong kong" exclude-filter: "xxx" exclude-type: "ss|http" payload: - name: "ss1" type: ss server: server port: 443 cipher: chacha20-ietf-poly1305 password: "password"Обязательное поле. Имя провайдера (например, provider1). Должно быть уникальным. Рекомендуется, чтобы оно не совпадало с именами групп прокси (Proxy Groups).
Обязательное поле. Тип провайдера, доступные варианты: http / file / inline.
URL-адрес для загрузки. Требуется только в том случае, если type имеет значение http.
fallback-urls 👻
Заголовок раздела «fallback-urls 👻»Резервные адреса провайдера, их пробуют по порядку, если url не отвечает. См. fallback-urls.
Необязательное поле. Путь к файлу. Должен быть уникальным. Если не указан, в качестве имени файла будет использоваться MD5-хэш от URL.
Из соображений безопасности по умолчанию разрешено сохранение файлов только внутри домашней директории HomeDir (которая задается параметром запуска -d). Если вы хотите сохранить файл в другом месте, укажите дополнительные разрешенные пути через переменную окружения SAFE_PATHS. Синтаксис этой переменной соответствует правилам системной переменной PATH (разделение точкой с запятой ; в Windows и двоеточием : в других операционных системах).
interval
Заголовок раздела «interval»Интервал обновления провайдера, в секундах.
Выполнять загрузку/обновление через указанный прокси. По умолчанию DIRECT (напрямую).
size-limit
Заголовок раздела «size-limit»Ограничение максимального размера загружаемого файла. Значение по умолчанию 0 означает отсутствие ограничений. Единица измерения — байты (b).
age-secret-key
Заголовок раздела «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
Пользовательские заголовки HTTP-запроса.
health-check
Заголовок раздела «health-check»Проверка доступности (тест задержки).
health-check.enable
Заголовок раздела «health-check.enable»Включение проверки. Доступные варианты: true/false.
health-check.url
Заголовок раздела «health-check.url»URL-адрес для проверки доступности. Рекомендуется использовать один из следующих адресов:
https://cp.cloudflare.comhttps://www.gstatic.com/generate_204health-check.interval
Заголовок раздела «health-check.interval»Интервал между проверками доступности, в секундах.
health-check.timeout
Заголовок раздела «health-check.timeout»Таймаут проверки доступности, в миллисекундах.
health-check.lazy
Заголовок раздела «health-check.lazy»Ленивый режим (Lazy state). По умолчанию true. Проверка задержки не выполняется, если узлы из данного провайдера не используются.
health-check.expected-status
Заголовок раздела «health-check.expected-status»См. Ожидаемый статус (Expected Status).
override
Заголовок раздела «override»Переопределение конфигурации узлов при их загрузке. Поддерживаются следующие поля:
override.additional-prefix
Заголовок раздела «override.additional-prefix»Добавляет фиксированный префикс к имени узла.
override.additional-suffix
Заголовок раздела «override.additional-suffix»Добавляет фиксированный суффикс к имени узла.
override.proxy-name
Заголовок раздела «override.proxy-name»Заменяет текст в имени узла с поддержкой регулярных выражений. pattern — это заменяемое регулярное выражение, а target — строка замены.
override.Прочие_параметры_конфигурации
Заголовок раздела «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.udp-443 👻
Заголовок раздела «override.udp-443 👻»allow или reject (алиас quic): записывается в каждый узел провайдера. См. udp-443.
override.override-expr
Заголовок раздела «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.
Фильтрует узлы, соответствующие ключевым словам или регулярным выражениям. Вы можете использовать символ ` для разделения нескольких регулярных выражений.
exclude-filter
Заголовок раздела «exclude-filter»Исключает узлы, соответствующие ключевым словам или регулярным выражениям Вы можете использовать символ ` для разделения нескольких регулярных выражений.
exclude-type
Заголовок раздела «exclude-type»Регулярные выражения не поддерживаются. Разделяйте типы прокси символом |. Исключает узлы на основе типа прокси, указанного в конфигурационном файле.
payload
Заголовок раздела «payload»Содержимое списка узлов. Работает только в том случае, если type имеет значение inline.
Если парсинг по протоколам http или из локального файла file завершается ошибкой, payload может использоваться в качестве резервного списка прокси-серверов.