Groupe de politiques
Un groupe de politiques peut contenir plusieurs politiques. Il peut s'agir d'un serveur proxy, d'un autre groupe de politiques ou d'une politique intégrée (DIRECT, REJECT et ses variantes, ou PROXY).
Il existe sept types de groupes : select, url-test, fallback, load-balance, random, relay et ssid (aussi écrit subnet). La section [Proxy Group] déclare les groupes de politiques. Le type smart est également accepté et traité comme url-test. Un groupe de tout autre type — external de Surge, ou un type inconnu de Chute — conserve ses membres et fonctionne comme un groupe select, avec un avis dans le journal, plutôt que d'être rejeté.
Groupe à sélection manuelle
Choisissez dans l'interface utilisateur la politique à utiliser.
SelectGroup = select, ProxyHTTP, ProxyHTTPS, DIRECT, REJECT
Paramètres facultatifs : default= (le membre sélectionné au départ — son nom, ou son index compté à partir de 0 ; select= et policy-select-name= de Shadowrocket ont le même sens), policy-provider:Name (importe les membres depuis un fournisseur de proxy), filter= / exclude-filter= (regex appliquées aux membres fournis par le fournisseur) et HIDDEN=true. Tous les types de groupes sauf ssid acceptent aussi les paramètres d'abonnement et d'appartenance.
Sur la version iOS, le widget Today change la politique des trois premiers groupes
selectnon masqués ; le nombre de groupes qu'il affiche se règle avec Utiliser le widget Today pour choisir un groupe dans l'app. Sur la version macOS, vous pouvez changer de politique depuis le menu de la barre des menus.
Groupe à test d'URL automatique
Sélectionne automatiquement la politique à utiliser en mesurant la latence vers une URL.
AutoTestGroup = url-test, ProxySOCKS5, ProxySOCKS5TLS, url = http://www.google.com/generate_204
Paramètres
url : facultatif
Chute envoie un GET HTTP en clair pour l'URL, à travers chaque politique, vers le port 80 de l'hôte de l'URL : un schéma https:// ou un port indiqué dans l'URL est ignoré, utilisez donc une URL http:// servie sur le port 80. Le test ne s'intéresse qu'à la réception de données de réponse, même s'il s'agit d'une erreur HTTP. Un membre doté de son propre test-url= est sondé à cette URL à la place. En cas d'omission, l'URL de sonde par défaut http://www.gstatic.com/generate_204 est utilisée. proxy-test-url dans [General] remplace cette valeur par défaut pour tout groupe qui omet url.
interval : facultatif, s (par défaut : 600 s).
Fréquence à laquelle les politiques sont retestées. Un minuteur global d'une seconde déclenche des retests automatiques toutes les interval secondes, que le groupe de politiques soit utilisé ou non. Il existe deux exceptions : un groupe avec lazy=true ne commence les tests qu'à sa première utilisation, et les tests sont suspendus tant que le groupe reste inactif plus longtemps que idle-timeout. 0 revient à l'omettre.
tolerance : facultatif, ms (par défaut : 100 ms).
Chaque manche teste tous les membres à la fois. Lorsque le premier membre à répondre n'est pas celui en cours d'utilisation, Chute attend jusqu'à tolerance millisecondes de plus — jamais au-delà du timeout de la manche — le membre en cours d'utilisation : s'il répond dans ce délai, il garde sa place ; sinon, le groupe passe au membre qui a répondu le premier. Tant qu'aucune manche n'a choisi de membre, le premier membre à répondre est retenu directement ; une manche où aucun membre ne répond ne change rien. 0 revient à l'omettre.
timeout : facultatif, s (par défaut : 5 s).
Abandonne une politique si le test ne s'achève pas dans ce délai. Si timeout est omis ou vaut 0, test-timeout de [General] s'applique s'il est défini.
lazy : facultatif (true/false, par défaut : false).
Lorsque cette option est activée, les politiques ne sont testées qu'à la première utilisation, et non au démarrage.
max-failed-times : facultatif (par défaut : 0, désactivé).
Nombre d'échecs de test consécutifs après lequel une politique est considérée comme défaillante. Cette option n'est effective que pour les groupes Load Balance, où les politiques défaillantes sont exclues de la sélection. Pour les groupes url-test et fallback, le nombre d'échecs est suivi mais n'affecte pas la sélection. Lorsqu'elle n'est pas définie (0), les échecs de test n'excluent jamais une politique.
expected-status : facultatif (par défaut : vide).
expected-status=204
Seule une réponse dont le statut est attendu compte comme un succès : un code unique (204), une plage (200-299) ou une liste des deux séparée par / (200/204/300-399). Une politique qui répond avec un autre statut sort de la manche, ce qui compte comme un échec. Une valeur qui n'est rien de tout cela est ignorée avec un avertissement, et toute réponse est alors acceptée. Effectif dans les groupes url-test.
idle-timeout : facultatif, s.
idle-timeout = 120
Lorsque le groupe de politiques n'a pas été utilisé (aucune nouvelle connexion n'y a puisé de politique) pendant plus longtemps que cette durée, les tests d'URL périodiques sont suspendus. Ils reprennent dès que le groupe est de nouveau utilisé. Aucune connexion n'est jamais fermée par cette option.
Également pris en charge : HIDDEN=true, filter=, exclude-filter=, policy-provider:Name.
Groupe de repli
Sélectionne une politique disponible par ordre de priorité. La disponibilité est testée par accès à une URL, comme pour un groupe à test d'URL automatique. Les politiques placées en tête ont une priorité supérieure. Chaque manche teste tous les membres à la fois, et le groupe utilise, dans l'ordre d'écriture, le premier membre qui a répondu lors de la dernière manche. Tant qu'aucune manche ne s'est achevée, et après une manche où aucun membre n'a répondu, il utilise le premier membre. Les réponses d'une manche prennent effet quand la manche est terminée — dès que tous les membres ont répondu, sinon quand son timeout expire —, si bien que le groupe ne change jamais de membre au milieu d'une manche. Il ne bascule que lorsqu'une manche change le membre utilisé : la notification Politique principale du groupe modifiée indique alors le membre utilisé avant et après la bascule, et interrupt-exist-connections ferme les connexions du membre abandonné.
FallbackGroup = fallback, ProxySOCKS5, ProxySOCKS5TLS, url = http://www.google.com/generate_204
Paramètres
url : facultatif
Indique quelle URL sera testée ; comme pour le groupe url-test, la sonde est un GET HTTP en clair vers le port 80 de l'hôte de l'URL, et un membre doté de son propre test-url= est sondé à cette URL à la place. En cas d'omission, l'URL de sonde par défaut http://www.gstatic.com/generate_204 est utilisée. proxy-test-url dans [General] remplace cette valeur par défaut pour tout groupe qui omet url.
interval : facultatif, s (par défaut : 600 s).
Fréquence à laquelle les politiques sont retestées. Même sémantique que pour le groupe à test d'URL automatique, à ceci près qu'idle-timeout — comme expected-status — est réservé au test d'URL : un groupe fallback n'a pas de pause d'inactivité et continue de tester selon l'intervalle.
timeout : facultatif, s (par défaut : 5 s).
Abandonne une politique si le test ne s'achève pas dans ce délai. Si timeout est omis ou vaut 0, test-timeout de [General] s'applique s'il est défini.
lazy / max-failed-times : facultatifs.
Identiques au groupe à test d'URL automatique. Également pris en charge : HIDDEN=true, filter=, exclude-filter=, policy-provider:Name.
Groupe SSID
Sélectionne une politique selon le réseau actuel — nom du Wi-Fi, point d'accès, type d'interface ou routeur. Le type peut aussi s'écrire subnet, son nom actuel dans Surge.
SSIDGroup = subnet, default = ProxyHTTP, cellular = ProxyHTTP, "Home WiFi" = DIRECT, SSID:Office* = ProxySOCKS5, TYPE:WIRED = DIRECT, ROUTER:192.168.1.1 = DIRECT
Paramètres
default : requis.
La politique utilisée lorsqu'aucune option SSID correspondante n'a été trouvée.
cellular : facultatif.
La politique utilisée sur réseau cellulaire. Si elle n'est pas fournie, la politique par défaut est utilisée. Plus précisément, elle s'applique dès que l'appareil n'est pas en Wi-Fi et qu'aucun membre ne correspond.
defaultest obligatoire. Les membres sont des paires<selector> = <policy>examinées dans l'ordre ; la première correspondance l'emporte. Un sélecteur est un nom de réseau (entre guillemets s'il contient des espaces ou un deux-points),SSID:<name>,BSSID:<address>,TYPE:WIFI/TYPE:CELLULAR/TYPE:WIREDouROUTER:<gateway address>; les noms acceptent les jokers*et?.MCCMNC:est accepté mais ne correspond jamais. Sur Apple TV, le groupe utilise toujoursdefault.
Groupe Load Balance
Répartit les requêtes entre plusieurs proxys selon une stratégie de répartition de charge.
LBGroup = load-balance, ProxySOCKS5, ProxyHTTPS, url = http://www.google.com/generate_204, strategy = round-robin
Paramètres
strategy : facultatif (par défaut : round-robin)
Indique la stratégie de répartition de charge :
| Stratégie | Description |
|---|---|
round-robin |
Répartit les requêtes équitablement entre tous les proxys, à tour de rôle |
consistent-hashing |
Achemine systématiquement un même nom d'hôte vers le même proxy |
sticky-sessions |
Réutilise le dernier proxy sélectionné pour toutes les connexions ; ce choix persistant est global (et non par client) et expire 600 secondes après avoir été établi |
url : facultatif
url = http://www.google.com/generate_204
Chute envoie un GET HTTP en clair vers le port 80 de l'hôte de l'URL pour tester la disponibilité des proxys. En cas d'omission, l'URL de sonde par défaut http://www.gstatic.com/generate_204 est utilisée. Les résultats des tests n'affectent la sélection que lorsque max-failed-times est supérieur à 0 ; avec la valeur par défaut 0, les proxys défaillants ne sont pas exclus. proxy-test-url dans [General] remplace cette valeur par défaut pour tout groupe qui omet url.
interval : facultatif, s (par défaut : 600 s).
interval = 300
Fréquence des nouveaux tests de disponibilité des proxys. 0 revient à l'omettre.
timeout : facultatif, s (par défaut : 5 s).
timeout = 3
Délai d'expiration de la requête de test de disponibilité. Si timeout est omis ou vaut 0, test-timeout de [General] s'applique s'il est défini.
lazy : facultatif (true/false, par défaut : false).
Identique au groupe à test d'URL automatique : les tests ne démarrent qu'à la première utilisation du groupe.
max-failed-times : facultatif (par défaut : 0, désactivé).
max-failed-times = 3
Nombre d'échecs de test consécutifs après lequel un proxy est marqué comme défaillant et exclu de la répartition de charge. Avec la valeur par défaut 0, les résultats de test n'excluent jamais un proxy. Si tous les proxys sont défaillants, ils sont de nouveau tous utilisés.
HIDDEN : facultatif (true/false, par défaut : false).
HIDDEN = true
Lorsque cette option est activée, les applications ne listent pas le groupe de politiques : le menu de la barre des menus de Chute Mac et l'onglet Proxys de sa fenêtre principale, Chute iOS et son widget Today, Chute tvOS, Chute Android, Chute Dashboard et la Console web l'omettent. Les règles et les autres groupes l'utilisent comme d'habitude. Un groupe masqué actuellement sélectionné — la politique qu'utilise le mode Global, par exemple — reste listé et coché, pour que vous voyiez ce qui est utilisé. Quand l'API de contrôle HTTP fait pointer le mode Global sur un groupe select, les listes globales des applications, qui ne contiennent pas de groupes select d'ordinaire, affichent aussi ce groupe, coché. L'API de contrôle HTTP renvoie toujours tous les groupes, chacun avec "hidden": true ou false.
La clé s'écrit conventionnellement en majuscules, mais elle est reconnue sans distinction de casse : hidden=true fonctionne donc également. Également disponible sur les groupes select, url-test, fallback et ssid.
Remarque : le paramètre
interrupt-exist-connectionsest désormais un réglage global de[General]. Consultez Options diverses.
Groupe aléatoire
Le groupe random de Shadowrocket : chaque nouvelle connexion choisit un membre au hasard.
RandomGroup = random, ProxyA, ProxyB, ProxyC
Chaque connexion choisit parmi les membres avec une chance égale, indépendamment des connexions précédentes. L'UDP ne choisit que parmi les membres qui relaient l'UDP ; s'il n'y en a aucun, le groupe ne relaie pas l'UDP et udp-policy-not-supported-behaviour s'applique. Les membres s'écrivent comme dans un groupe select, références policy-provider: comprises, et un membre conserve son propre underlying-proxy. Il n'y a pas de sélection à changer : la Console web et l'API de contrôle HTTP listent ses membres mais refusent tout changement de sélection, et default= n'a aucun effet. HIDDEN=true le masque comme les autres groupes.
Groupe de relais
Enchaîne ses membres, dans l'ordre écrit, en un seul chemin. Le premier membre est joint directement (ou par son propre underlying-proxy), chaque membre suivant est atteint à travers ceux qui le précèdent, et le dernier se connecte à la destination — le même ordre que Clash et mihomo.
RelayGroup = relay, Entry, Exit
Une connexion par RelayGroup va de l'appareil à Entry, de Entry à Exit, puis de Exit à la destination ; la destination la voit arriver de Exit.
Un groupe de relais demande au moins deux membres, écrits comme dans un groupe select ; un membre peut être une politique ou un autre groupe. Le premier membre peut utiliser n'importe quel protocole. Chaque membre suivant atteint son serveur à travers ceux qui le précèdent et doit donc pouvoir être chaîné — voir underlying-proxy ; si un membre (ou le choix actuel d'un groupe membre) ne le peut pas, la connexion est refusée et consignée, jamais envoyée directement. Dans un groupe de relais, le propre underlying-proxy d'un membre suivant est ignoré : les membres qui le précèdent sont son chemin. Un groupe de relais parmi les membres y tient la place de ses propres membres, dans la limite de 8 sauts au total ; si le choix actuel d'un groupe membre est un autre groupe de relais, ses sauts ne peuvent pas être insérés au moment de la connexion, et la connexion est donc refusée et consignée. Les membres après le premier ne sont joignables qu'à travers ceux qui les précèdent, et Chute ne leur envoie pas de ping direct. WireGuard, AmneziaWG et SSH gardent une seule connexion par leur propre amont : ils peuvent être le premier membre, mais pas un membre ultérieur. Un groupe de relais transporte l'UDP quand l'UDP de son dernier membre peut passer par les membres qui le précèdent, selon les règles d'underlying-proxy : une sortie VMess, VLESS, Trojan ou AnyTLS par n'importe quels membres, une sortie Shadowsocks, SOCKS5, Hysteria2, TUIC ou MASQUE seulement si les membres qui la précèdent transportent l'UDP. Sinon, l'UDP qui lui est envoyé suit udp-policy-not-supported-behaviour. Il n'a ni vérification d'état ni membre à sélectionner.
Paramètres d'abonnement et d'appartenance
Ces paramètres fonctionnent sur les groupes select, url-test, fallback et load-balance (underlying-proxy sur tous les groupes sauf les groupes SSID) :
[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) remplit le groupe à partir d'un abonnement : Chute le transforme en fournisseur de proxy masqué avecformat=auto, dont l'intervalest l'update-intervaldu groupe (86400 par défaut).policy-regex-filter=ne garde que les nœuds dont le nom correspond. Le fournisseur masqué n'apparaît dans aucune liste de fournisseurs et n'est pas écrit dans le fichier ; la ligne du groupe est enregistrée telle que vous l'avez écrite.include-all-proxies=trueajoute toutes les politiques de la section[Proxy], etinclude-other-group=<groupe>(répétable) ajoute récursivement les membres d'un autre groupe. Les deux sont développés une fois toute la configuration lue ; une boucle est coupée, et un nom de groupe inconnu ne produit qu'un avis. Ce sont les membres que vous avez listés vous-même qui sont enregistrés.include-other-groupreprend les membres et les fournisseurs de l'autre groupe, pas ses filtres : les nœuds qu'apporte un fournisseur sont filtrés par les propresfilter=,policy-regex-filter=etexclude-type=du groupe qui l'inclut, c'est pourquoi Streaming ci-dessus en définit un — sans lui, Streaming prendrait tous les nœuds de l'abonnement d'Airport.exclude-type=Shadowsocks|Vmesstient des protocoles entiers à l'écart des membres qu'un fournisseur apporte — le plus souvent parce que le client ne sait pas y transporter l'UDP. Les noms sont séparés par|, comparés sans tenir compte de la casse et par alias, si bien quessetShadowsocksdésignent le même type. Le paramètre ne touche pas aux membres que vous avez listés vous-même et il est réécrit à l'enregistrement de la configuration.underlying-proxy=<policy>(Surge Mac 6.9 / iOS 5.22) fait passer les membres proxy du groupe par un même amont : chaque politique proxy listée directement ou apportée parpolicy-path,include-all-proxiesouinclude-other-groupapparaît dans le groupe comme une politique dérivée, « Membre (via Amont) », qui se connecte par cet amont à la place du propreunderlying-proxydu membre. Partout ailleurs, la politique d'origine est utilisée comme avant. Les membres qui sont des groupes de politiques ne sont pas concernés (ils peuvent définir leur propreunderlying-proxy), etDIRECTetREJECTrestent tels quels. Si le groupe est chaîné à travers lui-même, les connexions qui passent par lui sont refusées et consignées.external-policy-modifier="clé=valeur,…"(Surge) remplace ces paramètres sur chaque politique importée parpolicy-path, comme dansexternal-policy-modifier="test-url=http://apple.com/,tfo=true". Il ne touche que les politiques de l'abonnement ; pour faire passer tout le groupe par un amont, utilisezunderlying-proxyci-dessus.- Les paramètres sont séparés aux virgules situées hors des guillemets : une regex contenant une virgule — comme ci-dessus — doit donc être entre guillemets.
- Les paramètres que Chute ne connaît pas, comme
evaluate-before-use,no-alert,icon-urloupersistent, sont conservés et réécrits, mais n'ont aucun effet.
Fournisseur de proxy
Les fournisseurs de proxy permettent d'importer des listes de proxys depuis des sources externes (fichiers ou URL). Ils se définissent dans la section [Proxy Provider] :
[Proxy Provider]
MyProvider = url=https://example.com/proxies.yaml, interval=3600
Paramètres
| Paramètre | Requis | Description |
|---|---|---|
type |
Non | http (par défaut) ou file. Un jeu de règles dispose en plus d'une forme inline, dans une section [Ruleset <name>] ; un fournisseur de proxy n'a pas de forme intégrée, et un type=inline écrit ici n'apporte aucun membre |
url |
Oui pour type=http |
URL depuis laquelle récupérer la liste de proxys |
path |
Oui pour type=file |
Chemin du fichier local contenant la liste de proxys |
interval |
Non | Âge d'actualisation, en secondes (par défaut : 86400). À chaque chargement des politiques — au démarrage du moteur et lors d'un rechargement de la configuration —, une copie en cache plus ancienne que cette valeur est récupérée à nouveau en arrière-plan ; rien n'est actualisé pendant que le moteur tourne. 0 n'actualise jamais une copie en cache, mais une première récupération a tout de même lieu en l'absence de cache ; une valeur négative n'est jamais récupérée, laissant le fournisseur inactif sauf si un dernier cache valide existe |
format |
Non | Format de la charge utile : native ou surge lit une liste de lignes au format [Proxy] ; auto ou l'absence de valeur choisit selon le contenu ; mihomo-yaml lit un document YAML et se replie sur la liste de lignes lorsque la charge en est manifestement une |
filter |
Non | Regex de filtrage n'incluant que les noms de proxy correspondants |
exclude-filter |
Non | Regex de filtrage excluant les noms de proxy correspondants |
underlying-proxy |
Non | Chaque nœud du fournisseur se connecte par cette politique ou ce groupe (override: dialer-proxy de mihomo), à la place de son propre amont. Voir underlying-proxy |
policy |
Non | La politique ou le groupe par lequel la liste est téléchargée (proxy: de mihomo) ; pour un groupe, son choix au début du téléchargement. Sans elle, ou avec DIRECT, la liste est récupérée directement ; un nom non défini refuse le téléchargement au lieu de récupérer directement |
Une charge YAML est un document de style mihomo avec une liste
proxies:(oupayload:) ; une charge en liste de lignes contient une ligne au format[Proxy]par politique, par exempleName = trojan, example.com, 443, password=….
Les fournisseurs de proxy sont référencés depuis les groupes de politiques avec le préfixe policy-provider: :
[Proxy Group]
MyGroup = select, policy-provider:MyProvider