Richtliniengruppe
Eine Richtliniengruppe kann mehrere Richtlinien enthalten. Dies kann ein Proxy-Server, eine andere Richtliniengruppe oder eine integrierte Richtlinie (DIRECT, REJECT samt Varianten oder PROXY) sein.
Es gibt sieben Gruppentypen: select, url-test, fallback, load-balance, random, relay und ssid (auch subnet geschrieben). Der Abschnitt [Proxy Group] deklariert Richtliniengruppen. Der Typ smart wird ebenfalls akzeptiert und wie url-test behandelt. Eine Gruppe jedes anderen Typs — Surges external oder ein Chute unbekannter Typ — behält ihre Mitglieder und läuft als select-Gruppe, mit einem Hinweis im Protokoll, statt abgewiesen zu werden.
Manuelle Auswahlgruppe
Wählen Sie aus, welche Richtlinie in der Benutzeroberfläche verwendet wird.
SelectGroup = select, ProxyHTTP, ProxyHTTPS, DIRECT, REJECT
Optionale Parameter: default= (das anfänglich ausgewählte Mitglied — sein Name oder sein Index, gezählt ab 0; Shadowrockets select= und policy-select-name= bedeuten dasselbe), policy-provider:Name (Mitglieder aus einem Proxy-Provider importieren), filter= / exclude-filter= (Regexes, die auf vom Provider gelieferte Mitglieder angewendet werden) und HIDDEN=true. Alle Gruppentypen außer ssid akzeptieren außerdem die Abonnement- und Mitgliedschaftsparameter.
In der iOS-Version wechselt das Heute-Widget die Richtlinie der ersten drei nicht ausgeblendeten
select-Gruppen; wie viele es anzeigt, legen Sie in der App mit Heute-Widget zur Gruppenauswahl verwenden fest. In der macOS-Version können Sie die Richtlinie im Menüleistenmenü wechseln.
Auto-URL-Test-Gruppe
Wählt automatisch aus, welche Richtlinie verwendet wird, indem die Latenz zu einer URL gemessen wird.
AutoTestGroup = url-test, ProxySOCKS5, ProxySOCKS5TLS, url = http://www.google.com/generate_204
Parameter
url: Optional
Chute sendet über jede Richtlinie ein einfaches HTTP-GET für die URL an Port 80 des Hosts der URL: Ein https://-Schema oder ein Port in der URL wird ignoriert, verwenden Sie also eine http://-URL, die auf Port 80 bedient wird. Beim Test zählt nur, ob überhaupt Antwortdaten eintreffen, selbst wenn die Antwort ein HTTP-Fehler ist. Ein Mitglied mit eigenem test-url= wird stattdessen unter dieser URL getestet. Wird der Parameter weggelassen, wird die Standard-Test-URL http://www.gstatic.com/generate_204 verwendet. proxy-test-url in [General] ersetzt diesen Standard für jede Gruppe ohne url.
interval: Optional, s (Standard: 600s).
Wie oft die Richtlinien erneut getestet werden. Ein globaler 1-Sekunden-Timer stößt die automatischen Wiederholungstests alle interval Sekunden an, unabhängig davon, ob die Richtliniengruppe gerade verwendet wird. Es gibt zwei Ausnahmen: Eine Gruppe mit lazy=true beginnt erst mit dem Testen, wenn sie zum ersten Mal verwendet wird, und das Testen pausiert, solange die Gruppe länger als idle-timeout ungenutzt bleibt. 0 ist gleichbedeutend mit dem Weglassen des Parameters.
tolerance: Optional, ms (Standard: 100ms).
Jede Runde testet alle Mitglieder gleichzeitig. Ist das Mitglied, das als erstes antwortet, nicht das gerade verwendete, wartet Chute bis zu tolerance Millisekunden länger — nie über den timeout der Runde hinaus — auf das verwendete Mitglied: Antwortet es innerhalb dieses Fensters, behält es seinen Platz, andernfalls wechselt die Gruppe zu dem Mitglied, das zuerst geantwortet hat. Bis eine Runde ein Mitglied gewählt hat, wird das erste antwortende Mitglied direkt übernommen; eine Runde, in der kein Mitglied antwortet, ändert nichts. 0 ist gleichbedeutend mit dem Weglassen des Parameters.
timeout: Optional, s (Standard: 5s).
Eine Richtlinie gilt als ausgefallen, wenn ihr Test nicht innerhalb von timeout Sekunden abgeschlossen ist. Fehlt timeout oder ist sein Wert 0, gilt test-timeout aus [General], sofern gesetzt.
lazy: Optional (true/false, Standard: false).
Wenn aktiviert, werden Richtlinien nur bei der ersten Verwendung getestet, nicht beim Start.
max-failed-times: Optional (Standard: 0, deaktiviert).
Anzahl aufeinanderfolgender fehlgeschlagener Tests, nach denen eine Richtlinie als fehlerhaft gilt. Diese Option ist nur für Load-Balance-Gruppen wirksam, bei denen fehlerhafte Richtlinien von der Auswahl ausgeschlossen werden. Bei url-test- und fallback-Gruppen wird die Fehleranzahl zwar erfasst, wirkt sich aber nicht auf die Auswahl aus. Wenn nicht gesetzt (0), führen fehlgeschlagene Tests niemals zum Ausschluss einer Richtlinie.
expected-status: Optional (Standard: leer).
expected-status=204
Nur eine Antwort mit erwartetem Status gilt als Erfolg: ein einzelner Code (204), ein Bereich (200-299) oder eine mit / getrennte Liste davon (200/204/300-399). Eine Richtlinie, die mit einem anderen Status antwortet, scheidet aus der Runde aus, was als Fehlschlag zählt. Ein Wert, der keines davon ist, wird mit einer Warnung ignoriert; dann wird jede Antwort akzeptiert. Wirksam in url-test-Gruppen.
idle-timeout: Optional, s.
idle-timeout = 120
Wenn die Richtliniengruppe länger als diese Dauer nicht verwendet wurde (keine neue Verbindung hat eine Richtlinie aus ihr bezogen), werden die periodischen URL-Tests pausiert. Sobald die Gruppe wieder verwendet wird, laufen die Tests weiter. Durch diese Option werden niemals Verbindungen geschlossen.
Ebenfalls unterstützt: HIDDEN=true, filter=, exclude-filter=, policy-provider:Name.
Fallback-Gruppe
Wählt eine verfügbare Richtlinie nach Priorität aus. Die Verfügbarkeit wird durch Zugriff auf eine URL getestet, genau wie bei einer Auto-URL-Test-Gruppe. Die zuerst definierte Richtlinie hat eine hohe Priorität. Jede Runde testet alle Mitglieder gleichzeitig, und die Gruppe verwendet das in der geschriebenen Reihenfolge erste Mitglied, das in der jüngsten Runde geantwortet hat. Bevor überhaupt eine Runde abgeschlossen ist, und nach einer Runde, in der kein Mitglied geantwortet hat, verwendet sie das erste Mitglied. Die Antworten einer Runde gelten erst, wenn die Runde vorbei ist — sobald alle Mitglieder geantwortet haben, sonst wenn ihr timeout abläuft —, sodass die Gruppe nie mitten in einer Runde das Mitglied wechselt. Sie wechselt nur, wenn eine Runde das verwendete Mitglied ändert: Die Benachrichtigung Primäre Richtlinie der Richtliniengruppe geändert nennt dann das vor und nach dem Wechsel verwendete Mitglied, und interrupt-exist-connections schließt die Verbindungen des verlassenen Mitglieds.
FallbackGroup = fallback, ProxySOCKS5, ProxySOCKS5TLS, url = http://www.google.com/generate_204
Parameter
url: Optional
Gibt an, welche URL getestet wird; wie bei der url-test-Gruppe ist der Test ein einfaches HTTP-GET an Port 80 des Hosts der URL, und ein Mitglied mit eigenem test-url= wird stattdessen unter dieser URL getestet. Wird der Parameter weggelassen, wird die Standard-Test-URL http://www.gstatic.com/generate_204 verwendet. proxy-test-url in [General] ersetzt diesen Standard für jede Gruppe ohne url.
interval: Optional, s (Standard: 600s).
Wie oft die Richtlinien erneut getestet werden. Gleiche Semantik wie bei der Auto-URL-Test-Gruppe, außer dass idle-timeout — ebenso wie expected-status — nur für url-test gilt: Eine fallback-Gruppe kennt keine Leerlaufpause und testet weiter im Intervall.
timeout: Optional, s (Standard: 5s).
Eine Richtlinie gilt als ausgefallen, wenn ihr Test nicht innerhalb von timeout Sekunden abgeschlossen ist. Fehlt timeout oder ist sein Wert 0, gilt test-timeout aus [General], sofern gesetzt.
lazy / max-failed-times: Optional.
Wie bei der Auto-URL-Test-Gruppe. Ebenfalls unterstützt: HIDDEN=true, filter=, exclude-filter=, policy-provider:Name.
SSID-Gruppe
Wählt eine Richtlinie nach dem aktuellen Netzwerk aus — WLAN-Name, Zugangspunkt, Schnittstellentyp oder Router. Der Typ darf auch subnet heißen, wie in aktuellen Surge-Versionen.
SSIDGroup = subnet, default = ProxyHTTP, cellular = ProxyHTTP, "Home WiFi" = DIRECT, SSID:Office* = ProxySOCKS5, TYPE:WIRED = DIRECT, ROUTER:192.168.1.1 = DIRECT
Parameter
default: Erforderlich.
Die Richtlinie, wenn keine übereinstimmende SSID-Option gefunden wurde.
cellular: Optional.
Die Richtlinie im Mobilfunknetz. Wenn nicht angegeben, wird die Standardrichtlinie verwendet. Genauer: Sie gilt immer dann, wenn das Gerät nicht im WLAN ist und kein Mitglied zutrifft.
defaultist Pflicht. Mitglieder sind Paare<Selektor> = <Richtlinie>, die der Reihe nach geprüft werden; der erste Treffer gewinnt. Ein Selektor ist ein Netzwerkname (in Anführungszeichen, wenn er Leerzeichen oder einen Doppelpunkt enthält),SSID:<Name>,BSSID:<Adresse>,TYPE:WIFI/TYPE:CELLULAR/TYPE:WIREDoderROUTER:<Gateway-Adresse>; in Namen sind die Platzhalter*und?erlaubt.MCCMNC:wird akzeptiert, trifft aber nie zu. Auf dem Apple TV verwendet die Gruppe immerdefault.
Load-Balance-Gruppe
Verteilt Anfragen auf mehrere Proxys mithilfe einer Lastausgleichsstrategie.
LBGroup = load-balance, ProxySOCKS5, ProxyHTTPS, url = http://www.google.com/generate_204, strategy = round-robin
Parameter
strategy: Optional (Standard: round-robin)
Gibt die Lastausgleichsstrategie an:
| Strategie | Beschreibung |
|---|---|
round-robin |
Verteilt Anfragen gleichmäßig der Reihe nach auf alle Proxys |
consistent-hashing |
Leitet denselben Hostnamen konsistent an denselben Proxy |
sticky-sessions |
Verwendet für alle Verbindungen weiterhin den zuletzt ausgewählten Proxy; die Bindung gilt global (nicht pro Client) und verfällt 600 Sekunden nach ihrer Festlegung |
url: Optional
url = http://www.google.com/generate_204
Chute sendet ein einfaches HTTP-GET an Port 80 des Hosts der URL, um die Proxy-Verfügbarkeit zu testen. Wird der Parameter weggelassen, wird die Standard-Test-URL http://www.gstatic.com/generate_204 verwendet. Testergebnisse wirken sich nur dann auf die Auswahl aus, wenn max-failed-times größer als 0 ist; beim Standardwert 0 werden fehlerhafte Proxys nicht ausgeschlossen. proxy-test-url in [General] ersetzt diesen Standard für jede Gruppe ohne url.
interval: Optional, s (Standard: 600s).
interval = 300
Wie oft die Proxy-Verfügbarkeit erneut getestet wird. 0 ist gleichbedeutend mit dem Weglassen des Parameters.
timeout: Optional, s (Standard: 5s).
timeout = 3
Zeitüberschreitung für die Verfügbarkeitstest-Anfrage. Fehlt timeout oder ist sein Wert 0, gilt test-timeout aus [General], sofern gesetzt.
lazy: Optional (true/false, Standard: false).
Wie bei der Auto-URL-Test-Gruppe: Das Testen beginnt erst, wenn die Gruppe zum ersten Mal verwendet wird.
max-failed-times: Optional (Standard: 0, deaktiviert).
max-failed-times = 3
Anzahl aufeinanderfolgender fehlgeschlagener Tests, nach denen ein Proxy als fehlerhaft markiert und vom Lastausgleich ausgeschlossen wird. Beim Standardwert 0 führen Testergebnisse niemals zum Ausschluss eines Proxys. Sind alle Proxys fehlerhaft, werden wieder alle Proxys verwendet.
HIDDEN: Optional (true/false, Standard: false).
HIDDEN = true
Wenn aktiviert, führen die Apps die Richtliniengruppe nicht auf: Das Menüleistenmenü von Chute Mac und der Tab Proxys seines Hauptfensters, Chute iOS und sein Heute-Widget, Chute tvOS, Chute Android, Chute Dashboard und die Web-Konsole lassen sie weg. Regeln und andere Gruppen verwenden sie wie gewohnt. Eine ausgeblendete Gruppe, die gerade ausgewählt ist — etwa die Richtlinie, die der globale Modus verwendet —, wird trotzdem aufgeführt und abgehakt, damit Sie sehen, was in Gebrauch ist. Richtet die HTTP-Control-API den globalen Modus auf eine select-Gruppe, führen die globalen Listen der Apps, die sonst keine select-Gruppen enthalten, auch diese Gruppe auf und haken sie ab. Die HTTP-Control-API liefert weiterhin jede Gruppe, jeweils mit "hidden": true oder false.
Der Schlüssel wird üblicherweise in Großbuchstaben geschrieben, wird aber ohne Unterscheidung von Groß-/Kleinschreibung erkannt, sodass auch hidden=true funktioniert. Auch für select-, url-test-, fallback- und ssid-Gruppen verfügbar.
Hinweis: Der Parameter
interrupt-exist-connectionsist jetzt eine globale[General]-Einstellung. Siehe Verschiedene Optionen.
Random-Gruppe
Shadowrockets random-Gruppe: Jede neue Verbindung wählt zufällig ein Mitglied.
RandomGroup = random, ProxyA, ProxyB, ProxyC
Jede Verbindung wählt unter den Mitgliedern mit gleicher Wahrscheinlichkeit, unabhängig von den Verbindungen davor. UDP wählt nur unter den Mitgliedern, die UDP weiterleiten; gibt es keines, leitet die Gruppe kein UDP weiter, und udp-policy-not-supported-behaviour greift. Mitglieder werden wie bei einer select-Gruppe geschrieben, policy-provider:-Referenzen eingeschlossen, und ein Mitglied behält sein eigenes underlying-proxy. Es gibt keine Auswahl zu ändern: Die Web-Konsole und die HTTP-Control-API listen ihre Mitglieder, lehnen aber eine Änderung der Auswahl ab, und default= hat keine Wirkung. HIDDEN=true blendet sie wie andere Gruppen aus.
Relay-Gruppe
Verkettet ihre Mitglieder in der geschriebenen Reihenfolge zu einem Pfad. Das erste Mitglied wird direkt verbunden (oder über sein eigenes underlying-proxy), jedes weitere wird über die Mitglieder davor erreicht, und das letzte verbindet sich mit dem Ziel — dieselbe Reihenfolge wie bei Clash und mihomo.
RelayGroup = relay, Entry, Exit
Eine Verbindung über RelayGroup läuft vom Gerät zu Entry, von Entry zu Exit und von Exit zum Ziel; das Ziel sieht sie von Exit kommen.
Eine Relay-Gruppe braucht mindestens zwei Mitglieder, die wie bei einer select-Gruppe geschrieben werden; ein Mitglied kann eine Richtlinie oder eine andere Gruppe sein. Das erste Mitglied darf jedes Protokoll verwenden. Jedes weitere Mitglied erreicht seinen Server über die Mitglieder davor und muss daher verkettbar sein — siehe underlying-proxy; ist ein Mitglied (oder die aktuelle Wahl einer Mitgliedsgruppe) es nicht, wird die Verbindung abgelehnt und protokolliert, nie direkt gesendet. Innerhalb der Relay-Gruppe wird das eigene underlying-proxy eines weiteren Mitglieds ignoriert: Die Mitglieder davor sind sein Pfad. Eine Relay-Gruppe unter den Mitgliedern steht an dieser Stelle für ihre eigenen Mitglieder, insgesamt höchstens 8 Hops; ist die aktuelle Wahl einer Mitgliedsgruppe eine andere Relay-Gruppe, lassen sich deren Hops beim Verbindungsaufbau nicht einfügen, und die Verbindung wird abgelehnt und protokolliert. Die Mitglieder nach dem ersten sind nur über die davor erreichbar, und Chute pingt sie nicht direkt an. WireGuard, AmneziaWG und SSH halten eine Verbindung über ihren eigenen Upstream; sie können daher das erste Mitglied sein, aber kein späteres. Eine Relay-Gruppe trägt UDP, wenn das UDP ihres letzten Mitglieds über die Mitglieder davor laufen kann, nach den Regeln von underlying-proxy: ein VMess-, VLESS-, Trojan- oder AnyTLS-Ausgang über beliebige Mitglieder, ein Shadowsocks-, SOCKS5-, Hysteria2-, TUIC- oder MASQUE-Ausgang nur, wenn die Mitglieder davor UDP tragen. Andernfalls folgt an sie gesendetes UDP udp-policy-not-supported-behaviour. Sie hat keine Verfügbarkeitsprüfung und nichts auszuwählen.
Abonnement- und Mitgliedschaftsparameter
Diese Parameter funktionieren bei Gruppen vom Typ select, url-test, fallback und load-balance (underlying-proxy bei allen Gruppen außer SSID-Gruppen):
[Proxy Group]
Airport = select, policy-path=https://example.com/nodes.list, update-interval=86400, policy-regex-filter="^(HK|JP) \d{1,2}$"
Everything = url-test, include-all-proxies=true
Streaming = fallback, HK-Node, include-other-group=Airport, policy-regex-filter="^HK"
policy-path=<URL>(Surge) füllt die Gruppe aus einem Abonnement: Chute macht daraus einen verborgenen Proxy-Provider mitformat=auto, dessenintervaldasupdate-intervalder Gruppe ist (Standard 86400).policy-regex-filter=behält nur die Knoten, deren Namen passen. Der verborgene Provider erscheint in keiner Provider-Liste und wird nicht in die Datei geschrieben; die Gruppenzeile wird so gespeichert, wie Sie sie geschrieben haben.include-all-proxies=truefügt alle Richtlinien des Abschnitts[Proxy]hinzu,include-other-group=<group>(wiederholbar) fügt rekursiv die Mitglieder einer anderen Gruppe hinzu. Beides wird aufgelöst, sobald die ganze Konfiguration gelesen ist; eine Schleife wird abgebrochen, ein unbekannter Gruppenname erzeugt nur einen Hinweis. Gespeichert werden die Mitglieder, die Sie selbst aufgeführt haben.include-other-groupübernimmt die Mitglieder und Provider der anderen Gruppe, nicht ihre Filter: Die Knoten, die ein Provider liefert, werden mitfilter=,policy-regex-filter=undexclude-type=der einschließenden Gruppe selbst gefiltert, weshalb Streaming oben einen solchen Filter setzt — ohne ihn würde Streaming jeden Knoten aus dem Abonnement von Airport übernehmen.exclude-type=Shadowsocks|Vmesshält ganze Protokolle aus den Mitgliedern heraus, die ein Provider beisteuert — meist, weil der Client darüber kein UDP transportieren kann. Namen werden mit|getrennt, ohne Beachtung der Groß-/Kleinschreibung und über Aliasse abgeglichen, sodassssundShadowsocksdenselben Typ bezeichnen. Mitglieder, die Sie selbst aufgeführt haben, bleiben unberührt, und der Parameter wird beim Speichern zurückgeschrieben.underlying-proxy=<policy>(Surge Mac 6.9 / iOS 5.22) schickt die Proxy-Mitglieder der Gruppe über einen einzigen Upstream: Jede Proxy-Richtlinie, die direkt aufgeführt ist oder überpolicy-path,include-all-proxiesoderinclude-other-grouphinzukommt, erscheint in der Gruppe als abgeleitete Richtlinie „Mitglied (via Upstream)“, die sich über diesen Upstream verbindet statt über das eigeneunderlying-proxydes Mitglieds. Überall sonst wird die ursprüngliche Richtlinie wie bisher verwendet. Mitglieder, die Richtliniengruppen sind, bleiben unberührt (sie können ein eigenesunderlying-proxysetzen), undDIRECTundREJECTbleiben, wie sie sind. Ist die Gruppe über sich selbst verkettet, werden Verbindungen über sie abgelehnt und protokolliert.external-policy-modifier="Schlüssel=Wert,…"(Surge) überschreibt diese Parameter bei jeder überpolicy-pathimportierten Richtlinie, etwaexternal-policy-modifier="test-url=http://apple.com/,tfo=true". Er betrifft nur Richtlinien aus dem Abonnement; um die ganze Gruppe über einen Upstream zu senden, verwenden Sieunderlying-proxyoben.- Parameter werden an Kommas außerhalb von Anführungszeichen getrennt; ein regulärer Ausdruck mit Komma — wie oben — muss daher in Anführungszeichen stehen.
- Parameter, die Chute nicht kennt, etwa
evaluate-before-use,no-alert,icon-urloderpersistent, bleiben erhalten und werden zurückgeschrieben, haben aber keine Wirkung.
Proxy-Provider
Proxy-Provider ermöglichen es Ihnen, Proxy-Listen aus externen Quellen (Dateien oder URLs) zu importieren. Definiert im Abschnitt [Proxy Provider]:
[Proxy Provider]
MyProvider = url=https://example.com/proxies.yaml, interval=3600
Parameter
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
type |
Nein | http (Standard) oder file. Ein Regelsatz kann zusätzlich inline sein, in einem Abschnitt [Ruleset <Name>]; ein Proxy-Provider hat keine Inline-Form, und ein hier geschriebenes type=inline steuert keine Mitglieder bei |
url |
Ja für type=http |
URL, von der die Proxy-Liste abgerufen wird |
path |
Ja für type=file |
Lokaler Dateipfad für die Proxy-Liste |
interval |
Nein | Alter in Sekunden, ab dem aktualisiert wird (Standard: 86400). Jedes Mal, wenn die Richtlinien geladen werden — beim Start der Engine und beim Neuladen der Konfiguration —, wird eine zwischengespeicherte Kopie, die älter ist, im Hintergrund neu abgerufen; während die Engine läuft, wird nichts aktualisiert. 0 aktualisiert eine zwischengespeicherte Kopie nie, ein erstmaliges Abrufen findet aber weiterhin statt, wenn kein Cache existiert; ein negativer Wert wird nie abgerufen, der Provider bleibt also inaktiv, sofern kein zuletzt gültiger Cache vorliegt |
format |
Nein | Nutzlast-Format: native oder surge liest eine Liste von Zeilen im [Proxy]-Stil; auto oder kein Wert entscheidet anhand des Inhalts; mihomo-yaml liest ein YAML-Dokument und weicht auf die Zeilenliste aus, wenn die Nutzlast eindeutig eine ist |
filter |
Nein | Filter-Regex, um nur übereinstimmende Proxy-Namen einzuschließen |
exclude-filter |
Nein | Filter-Regex, um übereinstimmende Proxy-Namen auszuschließen |
underlying-proxy |
Nein | Jeder Knoten des Providers verbindet sich über diese Richtlinie oder Gruppe (mihomos override: dialer-proxy) statt über seinen eigenen Upstream. Siehe underlying-proxy |
policy |
Nein | Die Richtlinie oder Gruppe, über die die Liste heruntergeladen wird (mihomos proxy:); bei einer Gruppe gilt ihre Auswahl zu Beginn des Downloads. Ohne sie oder mit DIRECT wird die Liste direkt abgerufen; ein nicht definierter Name lehnt den Download ab, statt direkt abzurufen |
Eine YAML-Nutzlast ist ein mihomo-artiges Dokument mit einer
proxies:- (oderpayload:-) Liste; eine Zeilenlisten-Nutzlast enthält eine Zeile im[Proxy]-Stil pro Richtlinie, etwaName = trojan, example.com, 443, password=….
Proxy-Provider werden aus Richtliniengruppen mit dem Präfix policy-provider: referenziert:
[Proxy Group]
MyGroup = select, policy-provider:MyProvider
Diese Seite ist eine Übersetzung der englischen Version. Bei Abweichungen ist die englische Version maßgeblich.