Обычная подписка склеивает узлы и правила - одно без другого не поменять. proxy-providers выносит источник узлов в независимо обновляемую единицу: в основном конфиге ваши правила, узлы подтягиваются из одного или нескольких провайдеров. Это скелет схемы «несколько провайдеров - один набор правил».
Базовая форма
proxy-providers:
provider-a:
type: http
url: "https://a.example.com/sub?clash=1"
path: ./providers/provider-a.yaml
interval: 3600
health-check:
enable: true
url: http://www.gstatic.com/generate_204
interval: 300
provider-b:
type: http
url: "https://b.example.com/clash"
path: ./providers/provider-b.yaml
interval: 3600
health-check:
enable: true
url: http://www.gstatic.com/generate_204
interval: 300
Провайдеры в группах
proxy-groups:
- name: "Select"
type: select
use: # ссылка на провайдеров (use, а не proxies)
- provider-a
- provider-b
proxies: # ручные записи уживаются рядом
- DIRECT
- name: "Auto"
type: url-test
use: [provider-a, provider-b]
url: http://www.gstatic.com/generate_204
interval: 300
use и proxies сосуществуют; все узлы провайдера разворачиваются в группу автоматически.
Детали и грабли
- url обязан возвращать YAML формата Clash с секцией proxies. Берутся только узлы; правила внутри файла провайдера игнорируются.
pathуникален для каждого провайдера, лучше в./providers/, чтобы файлы не затирали друг друга.- Включайте
health-check: группы url-test и fallback зависят от его данных о задержке. - Неудачное обновление не ломает кешированные узлы (работает старый файл); в журнале -
provider ... update failed. - Фильтр узлов:
filter: "HK|Hong Kong"оставляет только имена под регулярку - то, что нужно региональным группам.
Типовая архитектура
«Свои правила + несколько провайдеров»: в основном конфиге ваши правила маршрутизации и региональные группы с фильтрами; все узлы - из провайдеров. Провайдер сменил адрес подписки - правится одна строка, система правил не тронута.