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

Поставщики прокси

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.

Резервные адреса провайдера, их пробуют по порядку, если url не отвечает. См. fallback-urls.

Необязательное поле. Путь к файлу. Должен быть уникальным. Если не указан, в качестве имени файла будет использоваться MD5-хэш от URL.

Из соображений безопасности по умолчанию разрешено сохранение файлов только внутри домашней директории HomeDir (которая задается параметром запуска -d). Если вы хотите сохранить файл в другом месте, укажите дополнительные разрешенные пути через переменную окружения SAFE_PATHS. Синтаксис этой переменной соответствует правилам системной переменной PATH (разделение точкой с запятой ; в Windows и двоеточием : в других операционных системах).

Интервал обновления провайдера, в секундах.

Выполнять загрузку/обновление через указанный прокси. По умолчанию DIRECT (напрямую).

Ограничение максимального размера загружаемого файла. Значение по умолчанию 0 означает отсутствие ограничений. Единица измерения — байты (b).

Если этот параметр установлен, ядро попытается расшифровать файл конфигурации в формате 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> указан дефис -, запись будет производиться в стандартный вывод.

Примеры реализаций:

Пользовательские заголовки HTTP-запроса.

Проверка доступности (тест задержки).

Включение проверки. Доступные варианты: true/false.

URL-адрес для проверки доступности. Рекомендуется использовать один из следующих адресов:

https://cp.cloudflare.com

Интервал между проверками доступности, в секундах.

Таймаут проверки доступности, в миллисекундах.

Ленивый режим (Lazy state). По умолчанию true. Проверка задержки не выполняется, если узлы из данного провайдера не используются.

См. Ожидаемый статус (Expected Status).

Переопределение конфигурации узлов при их загрузке. Поддерживаются следующие поля:

Добавляет фиксированный префикс к имени узла.

Добавляет фиксированный суффикс к имени узла.

Заменяет текст в имени узла с поддержкой регулярных выражений. pattern — это заменяемое регулярное выражение, а target — строка замены.

См. общие поля 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.

allow или reject (алиас quic): записывается в каждый узел провайдера. См. udp-443.

Это подмножество правил переопределения конфигурации на основе выражений в стиле 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.

Фильтрует узлы, соответствующие ключевым словам или регулярным выражениям. Вы можете использовать символ ` для разделения нескольких регулярных выражений.

Исключает узлы, соответствующие ключевым словам или регулярным выражениям Вы можете использовать символ ` для разделения нескольких регулярных выражений.

Регулярные выражения не поддерживаются. Разделяйте типы прокси символом |. Исключает узлы на основе типа прокси, указанного в конфигурационном файле.

Содержимое списка узлов. Работает только в том случае, если type имеет значение inline.

Если парсинг по протоколам http или из локального файла file завершается ошибкой, payload может использоваться в качестве резервного списка прокси-серверов.