Importation

Chute peut importer des configurations de proxy écrites pour d'autres clients. Deux types d'entrées sont acceptés : les liens de partage de nœud unique (ss://, vmess://, …) et les profils entiers au format YAML Clash/mihomo ou JSON sing-box. Les deux sont convertis en configuration Chute native — ce que vous obtenez ensuite est un profil Chute ordinaire avec des sections [Proxy], [Proxy Group] et [Rule], et non un fichier étranger que Chute continuerait d'interpréter.

Les adresses http:// et https:// ne sont jamais traitées comme des liens de partage. Ce sont des adresses d'abonnement : le contenu est d'abord téléchargé, puis importé selon ce que le corps se révèle être.


Schéma Type de politique obtenu Port par défaut
ss:// ss 8388
vmess:// vmess 443
vless:// vless 443
trojan:// trojan 443
hysteria2://, hy2:// hysteria2 443
tuic:// tuic 443
anytls:// anytls 443
socks5://, socks:// socks5 1080
ssh:// ssh 22

La plupart des liens adoptent la forme userinfo@host:port?query#name. Deux font exception : vmess:// transporte un objet JSON encodé en base64 (le format v2rayN, avec les noms de champ add / ps / scy / net / aid), et ss:// accepte à la fois le format SIP002 (base64(method:password)@host:port) et l'ancienne forme à corps entier base64(method:password@host:port). Les charges utiles base64 peuvent être sans remplissage et utiliser l'alphabet compatible URL.

trojan://[email protected]:443?sni=example.com&alpn=h2,http/1.1#Tokyo%20Node

se convertit en :

[Proxy]
Tokyo Node = trojan, example.com, 443, password=password, tls=true, sni=example.com, alpn=h2|http/1.1

Le texte après # est décodé (pourcentage) et devient le nom de la politique ; vmess:// le prend plutôt dans le champ ps. Un lien sans nom est nommé host:port. Les caractères réservés par le format de configuration — =, ,, [, ], ", tabulation et retour à la ligne — sont remplacés par des espaces dans le nom.

Trojan, Hysteria2, TUIC et AnyTLS sont des protocoles exclusivement TLS ; tls=true est donc ajouté même lorsque le lien ne le précise pas.

Liens multiples. Une charge utile peut contenir plusieurs liens de partage séparés par des retours à la ligne, éventuellement enveloppés dans une couche externe de base64. Chaque ligne analysable devient une politique, et les noms répétés reçoivent un suffixe 2, 3… afin que les règles et les groupes puissent toujours désigner chaque nœud individuellement. Les lignes non analysables sont signalées comme avertissements pendant que le reste de la charge utile est tout de même importé ; l'importation n'échoue que si rien n'a pu être converti.

Un lien dont le schéma ne figure pas dans le tableau ci-dessus n'est pas reconnu comme un lien de partage. Un lien au schéma connu mais dont des champs requis manquent est rejeté avec un message nommant ce schéma.

Seuls les paramètres de requête ci-dessous sont lus ; tout le reste d'un lien est ignoré.

Paramètre S'applique à Converti en
sni, peer, servername Tous sni
alpn (séparé par des virgules) Tous alpn (valeurs jointes par `\ `)
fp Tous fingerprint (le profil ClientHello uTLS)
allowInsecure, insecure, skip-cert-verify Tous skip-cert-verify=true
security=tls, xtls, reality Tous tls=true
pbk, sid REALITY reality=true, public-key, short-id
flow VLESS xtls=true, flow
type/network=ws + path, host Tous ws=true, ws-path, ws-headers=Host:…
type/network=grpc + serviceName (ou path) Tous grpc=true, grpc-service-name
type/network=xhttp ou splithttp + path, host, mode Tous xhttp=true, xhttp-path, xhttp-host, xhttp-mode
obfs, obfs-password, up, down Hysteria2 Mêmes noms d'option
plugin=… Shadowsocks Voir ci-dessous

Une valeur plugin Shadowsocks est lue sous la forme nom;clé=valeur;…. obfs-local / simple-obfs / obfs deviennent obfs et obfs_param ; v2ray-plugin dans son mode websocket (par défaut) devient ws=true avec ws-path et ws-headers. Tout autre plugin produit un avertissement et n'est pas repris — la politique obtenue ne pourra pas se connecter à un serveur qui l'exige.

Remarque : un aid (alterId) VMess non nul est signalé par un avertissement. Chute ne parle que VMess AEAD, et un serveur exigeant encore l'ancienne poignée de main MD5 n'authentifiera pas la connexion.


Importation de profil

Trois formats sont reconnus :

Format Traitement
Profil Chute/Surge natif Utilisé tel quel, sans étape de conversion
YAML Clash / mihomo Converti en configuration native
JSON sing-box Converti en configuration native

Le format est détecté à partir du contenu, le nom de fichier ne servant que d'indice. Un contenu commençant par { est traité comme du JSON sing-box quel que soit le nom du fichier (un profil sing-box enregistré en .yaml s'analyse tout de même comme du YAML, le nom seul ne peut donc pas faire foi). Sinon, une extension .conf signifie natif, .json signifie sing-box, et .yaml / .yml signifie Clash. Lorsqu'aucun nom de fichier exploitable n'est disponible — un corps d'abonnement, par exemple — la première ligne significative tranche : #!MANAGED-CONFIG ou un en-tête [Section] signifie natif, et proxies:, proxy-groups:, rules:, proxy-providers: ou rule-providers: signifie Clash. Tout le reste est traité comme natif.

Un document qui s'analyse mais ne contient aucune des sections définissant son dialecte est rejeté plutôt que signalé comme une importation réussie de rien du tout : le YAML Clash nécessite au moins l'un de proxies, proxy-groups, rules, proxy-providers ou rule-providers, et le JSON sing-box nécessite outbounds, endpoints ou route.

Une seule entrée non convertible ne fait jamais échouer l'importation. Chaque proxy, groupe et règle est converti individuellement ; ceux qui n'ont pas d'équivalent Chute sont ignorés et signalés. Le résultat comprend la configuration convertie, une liste d'avertissements et une liste des champs source ignorés. Ces mêmes avertissements sont également inscrits dans le texte converti sous forme de commentaires, à côté de la section dont ils proviennent :

[Proxy]
HK 01 = ss, example.com, 8388, aes-128-gcm, password
# KL-CONVERT-WARNING [proxies[3]]: proxy type 'snell' was skipped — Snell is a Surge-proprietary protocol KLNEKit does not implement

Enfin, le texte converti est réanalysé par l'analyseur propre à Chute. Toute ligne rejetée par l'analyseur est mise en commentaire sous la forme # KL-CONVERT-DROPPED: … et signalée, de sorte qu'un profil convertible à 95 % s'importe et fonctionne tout de même.

Les noms de nœud sont réécrits lorsqu'ils casseraient le format de configuration : , devient une espace et = devient -, et un nom entrant alors en collision avec un autre reçoit un suffixe numérique. Les membres de groupe et les destinations de règles sont réécrits en conséquence, afin que chaque référence continue de désigner le même nœud. Les proxys/sorties direct sont associés à la politique intégrée DIRECT, et reject / block / dns à REJECT.

Remarque : un profil converti est un instantané statique. Chute retélécharge un abonnement et l'analyse comme un profil natif ; un profil ayant dû être converti est donc enregistré sans URL de mise à jour automatique et ne s'actualisera pas de lui-même.

Notes de conversion Clash / mihomo

Remarque : dialer-proxy est converti en underlying-proxy. Chute analyse et conserve cette option mais n'implémente pas le chaînage de proxys — une politique la portant consigne un avertissement et se connecte directement à son propre serveur. Le trafic qui était chaîné sous mihomo ne l'est plus après l'importation.

  • Types de proxy convertis : ss, ssr, vmess, vless, trojan, http, socks5, hysteria2, tuic, anytls, wireguard, ssh. Les types pour lesquels Chute n'a pas d'implémentation — snell, hysteria (v1), mieru, juicity, shadowquic, trusttunnel, openvpn, sudoku, vmess-http — sont ignorés avec un avertissement nommant le protocole. Deux autres sont ignorés bien que Chute prenne en charge le protocole : un proxy masque, car la disposition des champs mihomo diffère, et un proxy tailscale, qui se configure une seule fois dans la section [Tailscale] et s'utilise via la politique intégrée TAILSCALE.
  • Les deux clés d'empreinte de mihomo désignent des choses différentes et sont maintenues distinctes : client-fingerprint devient fingerprint (le profil ClientHello uTLS) et fingerprint devient cert-fingerprint-sha256 (un épinglage de certificat).
  • udp: false devient udp-relay=false, tfo devient tfo=true, et un bloc smux activé devient mux=true.
  • Les types de groupe select, url-test, fallback et load-balance sont convertis avec leurs options de vérification d'état. Un groupe relay est ignoré — il s'agit de chaînage, non implémenté. Les membres use: deviennent des références policy-provider:<nom>, et include-all / include-all-proxies / include-all-providers sont développés en une liste explicite de membres.
  • filter et exclude-filter sont repris entre guillemets, mais un motif contenant une virgule ou un guillemet ne peut pas survivre au format de ligne de configuration et est abandonné avec un avertissement.
  • Les types de règles sont renommés lorsque les noms diffèrent : MATCHFINAL, DST-PORTDEST-PORT, SRC-IP-CIDRSRC-IP. REJECT-DROP et REJECT-TINYGIF sont ramenés à REJECT ; une règle visant PASS ou COMPATIBLE est ignorée.
  • Un rule-provider en ligne (type: inline avec une liste payload) est développé en règles concrètes équivalentes, puisqu'une ligne [Rule Provider] de Chute ne peut pas intégrer de charge utile.
  • Les clés générales sont associées lorsqu'un équivalent existe : mixed-port devient le port HTTP (SOCKS5 nécessite son propre socks-port), allow-lan devient allow-wifi-access, log-level est associé à loglevel, external-controller/secret deviennent les options du contrôleur HTTP externe, et un sniffer activé devient sniffing-enabled.

Notes de conversion sing-box

  • Types de sorties convertis : shadowsocks, vmess, vless, trojan, hysteria2, tuic, anytls, shadowtls, wireguard, http, socks, ssh. selector et urltest deviennent des groupes de politiques select et url-test.
  • detour produit un avertissement pour la même raison que dialer-proxy : le chaînage de sorties n'est pas implémenté, et la sortie contacte directement son propre serveur.
  • Les entrées route.rule_set deviennent des lignes [Rule Provider] (type=http pour les distantes, type=file pour les locales, toujours lues comme des listes de règles mihomo-YAML classiques). Un jeu de règles au format binaire .srs est rejeté — Chute ne lit que les charges utiles de règles au format texte.
  • Les règles de routage suivent la clé action : route/bypass utilisent la sortie nommée, reject devient REJECT, et hijack-dns, sniff et resolve ne produisent rien, car Chute les pilote depuis [General].
  • Les réglages multiplex et dns.rules (routage DNS par domaine) n'ont pas d'équivalent et sont signalés comme abandonnés.

Limitations

  • Le chaînage de proxys n'est pas implémenté. Le dialer-proxy de mihomo, le detour de sing-box et les groupes relay de Clash décrivent tous une chaîne ; aucun d'eux ne produit de trafic chaîné dans Chute.
  • Les options sans équivalent Chute sont abandonnées avec un avertissement plutôt que silencieusement : par proxy, ip-version, interface-name, routing-mark et mptcp ; par groupe, exclude-type, disable-udp, interface-name, routing-mark et icon ; et les clés générales bind-address, tcp-concurrent, geodata-mode, geox-url, find-process-mode, unified-delay, authentication, tproxy-port, redir-port et d'autres.
  • Les types de règles sans équivalent sont ignorés : GEOSITE, IP-SUFFIX, SRC-IP-SUFFIX, SRC-GEOIP, SRC-IP-ASN, DSCP, UID, SUB-RULE, PROCESS-PATH-REGEX, PROCESS-NAME-WILDCARD, PROCESS-PATH-WILDCARD et IP-ACCEPT. Une règle portant le modificateur src de mihomo est également ignorée, plutôt que d'établir une correspondance sur le mauvais point de terminaison. Les sub-rules de mihomo (arbres de règles imbriqués) sont abandonnées.
  • Les détails de protocole que Chute gère lui-même ne sont pas repris : le saut de port Hysteria2 (ports), le heartbeat TUIC, le réglage du pool de sessions AnyTLS, les listes peers WireGuard (un seul pair est configuré) et workers.
  • Les transports que Chute n'implémente pas sont signalés au lieu d'être convertis : h2, l'obfuscation http, httpupgrade, la variante WebSocket v2ray-http-upgrade, max-early-data de WebSocket, et extra de XHTTP (XMUX / download-settings).
  • Le mode de fonctionnement de Clash est un interrupteur d'exécution dans Chute, et non une clé de configuration ; un profil en mode global ou direct est converti en mode règles avec un avertissement.
  • Le YAML est lu avec un analyseur standard ; les ancres et la clé de fusion << fonctionnent donc. Une valeur écrite sous forme de scalaire multiligne est repliée sur une seule ligne, car un retour à la ligne scinderait la ligne de configuration où elle atterrit.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-08-19 16:32:03

results matching ""

    No results matching ""