Иногда основанием для маршрутизации служит не «какой домен запрашивается», а «какая программа его запрашивает». Например: проксировать только один инструмент разработчика или, наоборот, полностью убрать BitTorrent-клиент с прокси.
Для этого нужны правила по процессам.
Предварительное условие: включить find-process-mode
Это самая частая причина, по которой написанное правило ничего не делает.
find-process-mode: strictТри значения:
| Значение | Поведение | Стоимость |
|---|---|---|
off | Процессы не ищутся вовсе; все правила по процессам мертвы | Никакой |
strict (рекомендуется) | Ищет только когда правила по процессам существуют | Низкая |
always | Ищет для каждого соединения, так что лог всегда называет процесс | Выше |
Преимущество always в том, что столбец «Process» на странице подключений всегда заполнен, а это очень удобно при диагностике; цена — обращение к таблице процессов на каждое соединение.
Базовый синтаксис
rules:
- PROCESS-NAME,Telegram.exe,🚀 Выбор
- PROCESS-NAME,qbittorrent.exe,DIRECT
- PROCESS-PATH,/usr/local/bin/curl,🚀 ВыборPROCESS-NAME против PROCESS-PATH
Mihomo поддерживает также PROCESS-NAME-REGEX и PROCESS-PATH-REGEX:
- PROCESS-NAME-REGEX,(?i)^(chrome|msedge)\.exe$,🚀 Выбор
- PROCESS-PATH-REGEX,(?i).*\\JetBrains\\.*,🚀 ВыборКак узнать имя процесса
Способ 1: прочитать со страницы подключений (самый быстрый)
Поставьте find-process-mode в always, откройте страницу Connections в Clash Verge и дайте программе один раз выйти в сеть. Столбец «Process» покажет точное имя.
Это надёжный способ — не гадать, а скопировать увиденное.
Способ 2: Диспетчер задач / Мониторинг системы
Windows: Диспетчер задач → вкладка «Подробности»; столбец «Имя» и есть имя процесса.
macOS: Мониторинг системы → двойной щелчок по процессу → смотрите «Process Name».
Linux: ps -e -o comm= перечисляет имена всех процессов.
Способ 3: командная строка
# Windows: перечислить все процессы, сейчас использующие сеть
Get-NetTCPConnection -State Established |
Select-Object -Property OwningProcess -Unique |
ForEach-Object { (Get-Process -Id $_.OwningProcess).ProcessName }# macOS / Linux
lsof -i -P -n | awk '{print $1}' | sort -uПрактические применения
1. Принудительно направить BitTorrent-клиенты напрямую
Многие провайдеры подписок запрещают трафик BitTorrent условиями, и пропускать его через них рискованно для аккаунта. К тому же это впустую тратит ваш лимит.
prepend-rules:
- PROCESS-NAME,qbittorrent.exe,DIRECT
- PROCESS-NAME,Transmission.exe,DIRECT
- PROCESS-NAME,aria2c.exe,DIRECT
- PROCESS-NAME,BitComet.exe,DIRECT
- PROCESS-NAME,uTorrent.exe,DIRECT
- PROCESS-NAME,deluge.exe,DIRECTДля надёжности плюс правило по портам:
- DST-PORT,6881-6889,DIRECT2. Отправить инструменты разработчика через прокси
prepend-rules:
- PROCESS-NAME,git.exe,🚀 Выбор
- PROCESS-NAME,node.exe,🚀 Выбор
- PROCESS-NAME,python.exe,🚀 Выбор
- PROCESS-NAME,docker.exe,🚀 Выбор
- PROCESS-NAME,go.exe,🚀 Выбор3. Отправить игровые платформы на конкретный узел
prepend-proxy-groups:
- name: "🎮 Игры"
type: fallback
include-all: true
filter: "(?i)IPLC|dedicated|game"
interval: 300
prepend-rules:
- PROCESS-NAME,steam.exe,🎮 Игры
- PROCESS-NAME,Battle.net.exe,🎮 Игры
- PROCESS-NAME,EpicGamesLauncher.exe,🎮 Игры4. Принудительно направить региональный софт напрямую
Часть приложений через прокси ведёт себя плохо (региональные ограничения, антифрод):
prepend-rules:
- PROCESS-NAME,WeChat.exe,DIRECT
- PROCESS-NAME,DingTalk.exe,DIRECT
- PROCESS-NAME,QQ.exe,DIRECT
- PROCESS-NAME,cloudmusic.exe,DIRECT
- PROCESS-NAME,BaiduNetdisk.exe,DIRECT5. Сочетание с другими условиями
Проксировать, только когда конкретная программа обращается к конкретному диапазону:
- AND,((PROCESS-NAME,Telegram.exe),(IP-CIDR,91.108.4.0/22)),🚀 ВыборОдна программа идёт через прокси для зарубежных адресов и напрямую для локальных:
- AND,((PROCESS-NAME,chrome.exe),(GEOIP,CN)),DIRECT
- PROCESS-NAME,chrome.exe,🚀 ВыборСледите за порядком: более специфичное комбинированное правило обязано идти перед простым.
Соображения производительности
Правила по процессам заметно дороже доменных. Каждое сопоставление требует:
Советы по оптимизации:
Поддержка платформ
| Платформа | Поддержка | Примечания |
|---|---|---|
| Windows | ✅ Полная | Нужно имя exe; следите за регистром |
| macOS | ✅ Полная | Могут потребоваться дополнительные разрешения |
| Linux | ✅ Полная | Нужен доступ на чтение /proc |
| Android | ⚠️ Частичная | Проксирование по приложениям — более подходящий инструмент |
| Маршрутизатор / шлюз | ❌ | Трафик идёт с других устройств, локального процесса нет |
На Android не используйте правила по процессам — и CMFA, и FlClash предлагают графическое проксирование по приложениям с выбором по имени пакета, что и точнее, и проще.
Диагностика правила, которое ничего не делает
Самый быстрый способ проверить: поставьте find-process-mode в always, откройте страницу подключений, дайте программе выйти в сеть и прочтите столбец Process.
- Столбец пуст → ядро не видит процесс; проверьте права
- Столбец заполнен, но отличается от вашего правила → приведите правило к тому, что показано
- Столбец совпадает, но в столбце Rule сработало другое правило → проблема порядка; поднимите своё через
prepend-rules
Коротко
find-process-mode: strict— обязательное условие; без него ничего не работает- Копируйте имя процесса со страницы подключений, а не угадывайте
- Под системным прокси консольный трафик не доходит до ядра, так что для этих инструментов правила по процессам работают только под TUN
- Для шлюзов используйте SRC-IP-CIDR, где правила по процессам бесполезны
- Правила по процессам относительно дороги; ставьте их позже и предпочитайте доменные там, где можно
Смотрите также: справочник по типам правил и шпаргалка по прокси для разработчиков.
Смежные документы
Синтаксис, логика сопоставления и относительная стоимость каждого типа правил, что на самом деле делает no-resolve, почему порядок правил решает всё, и как узнать, какое правило сработало.
Как заменить сотни написанных руками правил внешними списками. Разница между behavior domain, ipcidr и classical, text против yaml, как задавать интервал обновления и что проверять, когда набор не работает.
Полная конфигурация, обслуживающая одновременно корпоративный VPN, прямой локальный доступ и проксируемые зарубежные сервисы: домены и диапазоны IP, маршрутизация DNS и типичные конфликты.