Regelsatz
Sie können ein Bündel von Regeln aus einer URL, einem konfigurierten Regel-Provider oder einem eingebetteten Abschnitt der Konfiguration selbst verwenden. Chute bietet auch zwei interne Regelsätze.
Interner Regelsatz
SYSTEM
RULE-SET,SYSTEM,DIRECT
Enthält Regeln für die meisten Anfragen, die von macOS und iOS selbst gesendet werden. Die von App Store, iTunes und anderen Inhaltsdiensten gesendeten Anfragen sind nicht enthalten.
USER-AGENT,*com.apple.mobileme.fmip1
USER-AGENT,*WeatherFoundation*
USER-AGENT,%E5%9C%B0%E5%9B%BE*
USER-AGENT,%E8%AE%BE%E7%BD%AE*
USER-AGENT,com.apple.geod*
USER-AGENT,com.apple.Maps
USER-AGENT,FindMyFriends*
USER-AGENT,FindMyiPhone*
USER-AGENT,FMDClient*
USER-AGENT,FMFD*
USER-AGENT,fmflocatord*
USER-AGENT,geod*
USER-AGENT,locationd*
USER-AGENT,Maps*
DOMAIN,api.smoot.apple.com
DOMAIN,captive.apple.com
DOMAIN,configuration.apple.com
DOMAIN,guzzoni.apple.com
DOMAIN,smp-device-content.apple.com
DOMAIN,xp.apple.com
DOMAIN-SUFFIX,ess.apple.com
DOMAIN-SUFFIX,push-apple.com.akadns.net
DOMAIN-SUFFIX,push.apple.com
DOMAIN,aod.itunes.apple.com
DOMAIN,mesu.apple.com
DOMAIN,api.smoot.apple.cn
DOMAIN,gs-loc.apple.com
DOMAIN,mvod.itunes.apple.com
DOMAIN,streamingaudio.itunes.apple.com
DOMAIN-SUFFIX,lcdn-locator.apple.com
DOMAIN-SUFFIX,lcdn-registration.apple.com
DOMAIN-SUFFIX,ls.apple.com
PROCESS-NAME,trustd
Diese Regeln können mit Chute-Updates aktualisiert werden. Bitte beachten Sie die Beschreibung in der Software, um die neuesten Unterregeln zu erhalten.
LAN
RULE-SET,LAN,DIRECT
Enthält Regeln für LAN-IP-Adressen und das Suffix .local. Bitte beachten Sie, dass dieser Regelsatz eine DNS-Abfrage auslöst.
DOMAIN-SUFFIX,local
IP-CIDR,192.168.0.0/16
IP-CIDR,10.0.0.0/8
IP-CIDR,172.16.0.0/12
IP-CIDR,127.0.0.0/8
IP-CIDR,100.64.0.0/10
IP-CIDR,255.0.0.0/8
IP-CIDR,fc00::/7
IP-CIDR,::1/128
IP-CIDR,fe80::/10
Externer Regelsatz
Regelsatz von einer http(s)-URL. Die Regelsatzdatei sollte eine Textdatei sein. Jede Zeile enthält eine Regeldeklaration ohne die Richtlinie.
Hinweis: Regelsatzdateien unterstützen nur elementare Regeltypen (keine Verbundregeln). Logische Regeln (AND/OR/NOT), SCRIPT- und DOMAIN-SET-Zeilen werden verworfen. Eine RULE-SET-Zeile in einer über
RULE-SET,<url>geholten Datei ist wirkungslos: Der Parser behält nur die integrierten Werte SYSTEM und LAN, und selbst diese werden nie aufgelöst, die Zeile greift also nie. In einer[Rule Provider]-Nutzlast und in einem eingebetteten[Ruleset]-Abschnitt funktionieren verschachtelte Verweise dagegen sehr wohl. Eine reine CIDR-Zeile (z. B.1.2.4.0/24) wird als IP-CIDR-Regel akzeptiert.
RULE-SET,https://example.com/my-rules.txt,Proxy
RULE-SET,https://example.com/my-rules.txt,Proxy,update-interval=86400
Der optionale Parameter update-interval gibt an, wie alt die heruntergeladene Kopie in Sekunden werden darf. Einen Timer gibt es nicht: Der erste Treffer, nachdem die Kopie älter als dieser Wert geworden ist, lädt sie im Hintergrund erneut herunter. Beim Laden der Konfiguration wird eine zwischengespeicherte Kopie, die jünger ist, unverändert verwendet, ohne dass etwas heruntergeladen wird; eine, die älter ist, wird nicht verwendet, sodass der Satz erst heruntergeladen werden muss, bevor er greift. Ohne update-interval bleibt eine zwischengespeicherte Kopie erhalten, und der Satz wird nur heruntergeladen, wenn keine vorhanden ist. In der RULE-SET-Zeile geschrieben, gilt no-resolve für jede IP-basierte Regel des Satzes.
Beispiel einer Regelsatzdatei:
DOMAIN,exampleA.com
DOMAIN,exampleB.com
Um eine lokale Datei zu verwenden, definieren Sie einen Eintrag im Abschnitt [Rule Provider] mit einem path=-Parameter und referenzieren Sie ihn über den Namen:
[Rule Provider]
my-rules = type=file, path=/path/to/my-rules.txt, format=native
[Rule]
RULE-SET,my-rules,Proxy
Regel-Provider-Parameter: type (http oder file; http erfordert url=), behavior (classical für Regeldeklarationen, domain für eine Domain-Menge, ipcidr für eine Liste reiner CIDRs — ebenfalls für Clash/mihomo-Provider nutzbar, deren Nutzlasten mit reinen CIDRs akzeptiert werden; Standard classical), format (native — oder surge — für Chute-Regelzeilen, mihomo-yaml für eine Clash/mihomo-Rule-Provider-YAML-Nutzlast, sing-box-source — oder sing-box, source — für einen sing-box-Regelsatz im source-Format (JSON); Standard mihomo-yaml) und interval (Sekunden, Standard 86400). Ein positives interval lädt die Nutzlast bei jedem Laden der Konfiguration erneut herunter, und eine zwischengespeicherte Kopie, die älter ist, wird nicht verwendet; 0 lädt nur herunter, wenn keine zwischengespeicherte Kopie existiert; ein negativer Wert lädt nie herunter — nicht einmal für das update-interval einer RULE-SET-Zeile —, sodass der Provider inaktiv bleibt, sofern keine zwischengespeicherte Kopie existiert. Während Chute läuft, wird ein Provider nur über eine RULE-SET-Zeile aktualisiert, die ihn nennt und update-interval trägt: Der erste Treffer, nachdem die zwischengespeicherte Kopie älter als dieser Wert geworden ist, lädt sie erneut aus der eigenen Quelle des Providers herunter. Eine [Rule Provider]-Zeile hat keinen Schlüssel, der Regeln trägt, daher ergibt type=inline dort einen leeren Provider; schreiben Sie einen eingebetteten Satz als [Ruleset <name>]-Abschnitt.
policy=<name> lädt die Nutzlast über diese Richtlinie oder Gruppe herunter — mihomos proxy: —, etwa my-rules = type=http, url=https://example.com/rules.yaml, policy=Proxy; bei einer Gruppe gilt ihre Auswahl zu Beginn des Downloads. Ohne die Option oder mit policy=DIRECT wird die Nutzlast direkt abgerufen. Ein nicht definierter Name lehnt den Download ab, statt direkt abzurufen.
GET /api/rules/providers der HTTP-Control-API meldet jeden [Rule Provider]-Eintrag und jeden [Ruleset]-Abschnitt: ob er geladen wurde, den Grund, falls nicht, und etwaige Konvertierungswarnungen. Sein rule_count zählt die Zeilen eines [Ruleset]-Abschnitts und bleibt bei einem heruntergeladenen oder dateibasierten Provider 0. RULE-SET,<url> und DOMAIN-SET,<url> stehen nicht in der Liste; ein fehlgeschlagener Download eines solchen Satzes zeigt sich nur im Protokoll.
Auf iPhone, Apple TV und Android hat die Nutzlast eines Regel-Providers — heruntergeladen oder aus einer Datei gelesen — eine Größenobergrenze, weil der Tunnel dort kaum Speicher übrig hat: 400 KB für sing-box-source, 1 MB für jedes andere Format. Eine Nutzlast über der Grenze wird nicht geladen, und der Status des Providers nennt den Grund. RULE-SET,<url> und DOMAIN-SET,<url> werden gelesen, ohne im Speicher konvertiert zu werden, und haben keine Grenze. Auf dem Desktop gibt es keine Grenze, daher lädt ein großer veröffentlichter Satz (geosite/cn und Verwandte) nur dort als Provider. Der Regelsatz-Index hält auf diesen Plattformen höchstens 24 Datenbankverbindungen gleichzeitig offen (128 auf dem Desktop).
Lässt sich eine mihomo-yaml-Nutzlast nicht parsen, sieht aber wie eine einfache Liste von Regelzeilen aus, wird sie stattdessen als native gelesen und ein Hinweis protokolliert. Eine Zeile einer classical-mihomo-Nutzlast nennt keine Richtlinie, daher wird alles, was auf ihren Wert folgt, als Parameter gelesen: no-resolve bleibt erhalten, jeder andere Parameter — etwa mihomos src — wird verworfen. Eine logische Regel und eine …-REGEX-Regel behalten den Rest der Zeile als ihren Wert.
Eine Nutzlast, die ein JSON-Objekt ist, wird zuerst als sing-box-Regelsatz gelesen, sodass auch ein mit dem Standardformat deklarierter sing-box-Regelsatz lädt. In einem sing-box-Regelsatz wird eine Regel, deren Matcher alle einer Art angehören, zu einer Zeile pro Wert. Die Arten sind: Ziel (domain, domain_suffix, domain_keyword, domain_regex, ip_cidr, geoip sowie ip_is_private, das zu den privaten Adressbereichen mit no-resolve wird), Zielport (port, port_range), Quelladresse (source_ip_cidr, source_ip_is_private), Quellport (source_port, source_port_range) sowie protocol, network, process_name und process_path, jeweils eine eigene Art. clash_mode: rule wird ignoriert, da der Regelmodus der einzige ist, den Chute ausführt; jeder andere clash_mode verwirft die Regel. Eine Regel, die Arten kombiniert (etwa eine Domain und einen Port), eine invert-Regel und eine logical-Regel lassen sich nicht als einzelne Zeile ausdrücken; sie werden übersprungen und in den Warnungen des Regelsatzes aufgeführt. Die kompilierten Binärformate können nicht gelesen werden. Ein sing-box-.srs-Provider wird als solcher erkannt — an format=srs oder format=binary oder an einem Ort, der auf .srs endet — und bleibt inaktiv, mit einem Status, der auf die source-Fassung (.json) von sing-box verweist. Mihomos .mrs wird nicht erkannt: Seine Nutzlast lässt sich schlicht nicht als Text dekodieren, der Regelsatz bleibt daher unter dem allgemeinen Status für fehlgeschlagene Downloads inaktiv. Unter macOS lenkt der Importer einen binären Regelsatz auf die daneben angebotene source-Fassung um, wo der Herausgeber eine anbietet; unter iOS, Apple TV und Android nicht.
RULE-SET und DOMAIN-SET dürfen als Unterregeln innerhalb von logischen AND/OR/NOT-Regeln verwendet werden —
NOT,((RULE-SET,cn_ip)),Proxyfunktioniert, und der verschachtelte Satz wird mit demselben Nutzlast-Filter abgeglichen wie ein eigenständig geschriebener.
Eingebetteter Regelsatz
Ein Abschnitt [Ruleset <name>] hält einen Regelsatz in der Konfigurationsdatei selbst (Surge-Syntax). Jede Zeile darin ist eine Regeldeklaration ohne Richtlinie, wie in einer Regelsatzdatei, und eine Regel verweist über den Namen auf den Abschnitt:
[Ruleset Streaming]
DOMAIN-SUFFIX,netflix.com
IP-CIDR,198.51.100.0/24,no-resolve
[Rule]
RULE-SET,Streaming,Proxy
Der Abschnitt verhält sich wie ein [Rule Provider]-Eintrag mit type=inline und format=native und wird als Abschnitt zurückgeschrieben. Zwei Regelsätze mit demselben Namen sind ein Konfigurationsfehler.
Ein eingebetteter Abschnitt darf — wie die Nutzlast eines Regel-Providers — RULE-SET,SYSTEM, RULE-SET,LAN oder RULE-SET,<anderer eingebetteter Abschnitt> enthalten. Diese werden beim Laden der Regeln aufgelöst, bis zu 8 Ebenen tief. Ein Verweis, der eine Schleife bilden würde, oder einer auf einen file- oder http-Regelsatz, eine Domain-Menge oder ein DOMAIN-SET wird mit einer Warnung verworfen.
Domain-Menge
Eine Domain-Menge ähnelt einem externen Regelsatz, ist jedoch speziell für Domainnamen und verwendet ein kompakteres Dateiformat.
DOMAIN-SET,https://example.com/domains.txt,DIRECT
DOMAIN-SET,https://example.com/domains.txt,DIRECT,update-interval=86400
Das erste Feld nach dem Typ muss eine http(s)-URL sein. Die Domain-Mengen-Datei enthält bloße Domains, eine pro Zeile (KEINE Regeldeklarationen):
# exact domain
example.com
# the domain and all of its subdomains
.example.org
+.example.net
Zeilen, die mit # oder // beginnen, sind Kommentare.
Diese Seite ist eine Übersetzung der englischen Version. Bei Abweichungen ist die englische Version maßgeblich.