Подписка с сотней с лишним узлов делает написание состава групп вручную непрактичным, и всё ломается, как только подписка обновится.
include-all вместе с filter в Mihomo позволяет группе собирать подходящие узлы автоматически — весь фокус в том, чтобы правильно написать регулярное выражение.
Основы
proxy-groups:
- name: "🇭🇰 Гонконг"
type: url-test
include-all: true # взять всё
filter: "(?i)HK|Hong ?Kong" # оставить только совпавшее
exclude-filter: "(?i)remaining|expire|website" # затем выбросить это
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50Порядок операций: include-all собирает всё → filter оставляет совпадения → exclude-filter убирает из них.
Три опции include
| Опция | Что берёт |
|---|---|
include-all: true | Секцию proxies плюс все proxy-provider |
include-all-proxies: true | Только узлы, написанные руками в proxies |
include-all-providers: true | Только узлы из провайдеров |
use: [имя провайдера] | Названные провайдеры |
Когда ваши собственные серверы живут в proxies, а узлы подписки приходят из провайдера, эти опции дают точный контроль над тем, что в какую группу попадёт.
Основы регулярных выражений (сколько нужно)
Группировка по регионам
Самая частая задача. Охватите разные названия каждого региона:
# Гонконг
filter: "(?i)HK|Hong ?Kong|HKG|🇭🇰"
# Тайвань
filter: "(?i)TW|Taiwan|Taipei|TPE|🇹🇼"
# Япония
filter: "(?i)JP|Japan|Tokyo|Osaka|🇯🇵"
# Сингапур
filter: "(?i)SG|Singapore|🇸🇬"
# США
filter: "(?i)US|USA|United ?States|Los ?Angeles|San ?Jose|Seattle|🇺🇸"
# Южная Корея
filter: "(?i)KR|Korea|Seoul|🇰🇷"
# Великобритания
filter: "(?i)UK|United ?Kingdom|London|🇬🇧"Отбор по множителю
Многие подписки помечают множитель трафика в имени узла (0.5x, 1x, 3x).
# только низкие множители (экономия трафика)
filter: "(?i)0\\.[0-9]x|1x|1\\.0x"
# исключить высокие множители
exclude-filter: "(?i)[2-9](\\.[0-9])?x|1[0-9]x"
# только узлы, помеченные как выделенные линии (обычно лучшее качество)
filter: "(?i)IPLC|IEPL|dedicated|premium"Исключение псевдоузлов
Записи вроде «Остаток: 128 ГБ» или «Истекает через 30 дней» — это информация, засунутая в имена узлов ради отображения; настоящими узлами они не являются.
exclude-filter: "(?i)remaining|expire|expired|traffic|reset|website|subscription|url|group|announcement|backup|test|GB|Days?"Отбор по протоколу
# только Hysteria2 (для задач с низкой задержкой)
filter: "(?i)hy2|hysteria"
# исключить определённые протоколы (у Mihomo есть отдельное поле, оно надёжнее)
exclude-type: "ss|ssr|http"exclude-type фильтрует по реальному типу протокола, что куда надёжнее угадывания по имени узла.
Комбинирование условий
Регулярное выражение неуклюже выражает «и», но два слоя фильтрации это решают:
# Гонконг и низкий множитель
- name: "🇭🇰 Гонконг с низким множителем"
type: url-test
include-all: true
filter: "(?i)HK|Hong ?Kong"
exclude-filter: "(?i)[2-9](\\.[0-9])?x|remaining|expire"
interval: 300filter сужает до Гонконга, затем exclude-filter убирает высокие множители и псевдоузлы.
Для действительно сложного «и» подойдёт опережающая проверка:
# содержит и "Hong Kong", и "IPLC"
filter: "(?i)(?=.*Hong ?Kong)(?=.*IPLC).*"Избегайте этого, где можно: читаемость сильно страдает, а поддержка становится мучительной.
Полный шаблон
proxy-providers:
main:
type: http
url: "адрес вашей подписки"
interval: 3600
path: ./providers/main.yaml
header: { User-Agent: ["clash.meta"] }
exclude-filter: "(?i)remaining|expire|expired|traffic|reset|website|subscription|group|announcement|backup"
health-check: { enable: true, url: http://www.gstatic.com/generate_204, interval: 300, lazy: true }
proxy-groups:
# главный переключатель
- name: "🚀 Выбор"
type: select
proxies: ["♻️ Авто", "🇭🇰 Гонконг", "🇯🇵 Япония", "🇸🇬 Сингапур", "🇺🇸 США", "🇹🇼 Тайвань", "💎 Выделенные", DIRECT]
# общая автоматика
- name: "♻️ Авто"
type: url-test
use: [main]
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
lazy: true
# региональные группы
- name: "🇭🇰 Гонконг"
type: url-test
use: [main]
filter: "(?i)HK|Hong ?Kong|🇭🇰"
interval: 300
tolerance: 50
- name: "🇯🇵 Япония"
type: url-test
use: [main]
filter: "(?i)JP|Japan|Tokyo|Osaka|🇯🇵"
interval: 300
tolerance: 50
- name: "🇸🇬 Сингапур"
type: url-test
use: [main]
filter: "(?i)SG|Singapore|🇸🇬"
interval: 300
tolerance: 50
- name: "🇺🇸 США"
type: url-test
use: [main]
filter: "(?i)US|USA|United ?States|Los ?Angeles|San ?Jose|🇺🇸"
interval: 300
tolerance: 50
- name: "🇹🇼 Тайвань"
type: url-test
use: [main]
filter: "(?i)TW|Taiwan|Taipei|🇹🇼"
interval: 300
tolerance: 50
# выделенные линии (лучшее качество, для игр и видео)
- name: "💎 Выделенные"
type: fallback
use: [main]
filter: "(?i)IPLC|IEPL|dedicated|premium"
interval: 600
# по назначению
- name: "🤖 Сервисы ИИ"
type: select
proxies: ["🇺🇸 США", "🇯🇵 Япония", "🇸🇬 Сингапур", "🚀 Выбор"]
- name: "🎬 Стриминг"
type: select
proxies: ["🇭🇰 Гонконг", "🇸🇬 Сингапур", "💎 Выделенные", "🚀 Выбор"]
- name: "🎮 Игры"
type: select
proxies: ["💎 Выделенные", "🇭🇰 Гонконг", "🇯🇵 Япония"]
- name: "🐟 Прочее"
type: select
proxies: ["🚀 Выбор", DIRECT]Как убедиться, что фильтр верен
Группа пуста — проверяйте по порядку:
- Нет ли опечатки в регулярке (следите за лишними пробелами в именах узлов)
- Не забыли ли
(?i), когда имена узлов написаны строчнымиhk - Не слишком ли широк
exclude-filter, убравший нужное - Загрузился ли провайдер, указанный в
use
Пролезли лишние узлы:
Добавьте характерное слово из имени этого узла в exclude-filter либо сделайте filter точнее, привязав его через ^ или $.
Частые ловушки
Когда фильтр не нужен
При небольшом числе узлов (десяток-другой), нерегулярных именах или желании полностью контролировать состав каждой группы прописывать имена руками совершенно нормально:
- name: "🇭🇰 Гонконг"
type: url-test
proxies:
- "Hong Kong IPLC 01"
- "Hong Kong BGP 02"
interval: 300Цена в том, что новые узлы после обновления подписки автоматически не присоединяются и требуют ручной работы.
Коротко
(?i)нужен почти всегда- Не используйте двухбуквенный фрагмент как фильтр сам по себе — он перебирает
- Исключайте псевдоузлы один раз на уровне провайдера, а не в каждой группе
exclude-typeлучше угадывания протокола по имени- Написав фильтр, обязательно посчитайте узлы на странице прокси для проверки
- Выделенным линиям дайте отдельную группу fallback для игр и видео
Смотрите также: пять типов proxy-groups и управление несколькими подписками.
Смежные документы
Синтаксис, логика сопоставления и относительная стоимость каждого типа правил, что на самом деле делает no-resolve, почему порядок правил решает всё, и как узнать, какое правило сработало.
Как заменить сотни написанных руками правил внешними списками. Разница между behavior domain, ipcidr и classical, text против yaml, как задавать интервал обновления и что проверять, когда набор не работает.
Полная конфигурация, обслуживающая одновременно корпоративный VPN, прямой локальный доступ и проксируемые зарубежные сервисы: домены и диапазоны IP, маршрутизация DNS и типичные конфликты.