Parsers срабатывают в момент окончания загрузки или обновления подписки и преобразуют её содержимое автоматически. В отличие от глобального Mixin, парсер можно нацелить ровно на одну подписку - находка для тех, у кого несколько провайдеров.
Где редактировать
Settings → Parsers → Edit открывает YAML такого вида:
parsers:
# точное совпадение url подписки
- url: https://example.com/api/sub?token=abc
yaml:
prepend-rules:
- DOMAIN-SUFFIX,company.com,DIRECT
- DOMAIN-KEYWORD,tracker,REJECT
append-proxies:
- name: "my-backup"
type: ss
server: my.server.com
port: 8388
cipher: aes-256-gcm
password: mypass
Шорткаты секции yaml
| Директива | Действие |
|---|---|
prepend-rules / append-rules | Правила в начало / конец (начало = высший приоритет). |
prepend-proxies / append-proxies | Вставка узлов. |
prepend-proxy-groups / append-proxy-groups | Вставка групп. |
mix-proxy-providers / mix-rule-providers | Слияние определений провайдеров. |
mix-object | Поверхностное слияние любых верхних полей (dns, tun, …). |
Режим code: полный контроль
parsers:
- reg: ^https://example\.com/
code: |
module.exports.parse = (raw, { yaml }) => {
const config = yaml.parse(raw);
// выкинуть "информационные" узлы-объявления
config.proxies = config.proxies.filter(
p => !/expire|remaining|website/i.test(p.name)
);
return yaml.stringify(config);
};
reg матчит адреса подписок регуляркой - один парсер накрывает несколько подписок одного провайдера.