Import
Chute kann Proxy-Konfigurationen importieren, die für andere Clients geschrieben wurden. Zwei Arten von Eingaben werden akzeptiert: Share-Links für einzelne Knoten (ss://, vmess://, …) und vollständige Profile als Clash/mihomo-YAML oder sing-box-JSON. Beide werden in native Chute-Konfiguration umgewandelt — was Sie danach erhalten, ist ein gewöhnliches Chute-Profil mit den Abschnitten [Proxy], [Proxy Group] und [Rule], keine fremde Datei, die Chute weiterhin interpretiert.
http://- und https://-Adressen werden nie als Share-Links behandelt. Sie sind Abonnement-Adressen: Der Inhalt wird zuerst heruntergeladen und dann entsprechend dem importiert, was der heruntergeladene Body tatsächlich enthält.
Share-Links
| Schema | Resultierender Richtlinientyp | Standard-Port |
|---|---|---|
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 |
Die meisten Links verwenden die Form userinfo@host:port?query#name. Zwei weichen davon ab: vmess:// trägt ein base64-kodiertes JSON-Objekt (das v2rayN-Format mit den Feldnamen add / ps / scy / net / aid), und ss:// akzeptiert sowohl SIP002 (base64(method:password)@host:port) als auch die ältere Form, bei der der gesamte Body kodiert ist (base64(method:password@host:port)). Base64-Nutzlasten dürfen ohne Padding vorliegen und das URL-sichere Alphabet verwenden.
trojan://[email protected]:443?sni=example.com&alpn=h2,http/1.1#Tokyo%20Node
wird umgewandelt zu:
[Proxy]
Tokyo Node = trojan, example.com, 443, password=password, tls=true, sni=example.com, alpn=h2|http/1.1
Der Text nach # wird prozentdekodiert und wird zum Richtliniennamen; vmess:// entnimmt ihn stattdessen dem Feld ps. Ein Link ohne Namen erhält den Namen host:port. Zeichen, die das Konfigurationsformat reserviert — =, ,, [, ], ", Tabulator und Zeilenumbruch — werden im Namen durch Leerzeichen ersetzt.
Trojan, Hysteria2, TUIC und AnyTLS sind reine TLS-Protokolle, daher wird tls=true auch dann ergänzt, wenn der Link es nicht ausdrücklich angibt.
Mehrere Links. Eine Nutzlast kann aus vielen Share-Links bestehen, die durch Zeilenumbrüche getrennt und optional in eine äußere Base64-Schicht eingepackt sind. Jede Zeile, die sich parsen lässt, wird zu einer Richtlinie, und wiederholte Namen erhalten das Suffix 2, 3 …, damit Regeln und Gruppen jeden Knoten weiterhin einzeln ansprechen können. Zeilen, die sich nicht parsen lassen, werden als Warnungen gemeldet, während der Rest der Nutzlast dennoch importiert wird; der Import schlägt nur fehl, wenn sich überhaupt nichts umwandeln ließ.
Ein Link, dessen Schema nicht in der obigen Tabelle steht, wird nicht als Share-Link erkannt. Ein Link mit bekanntem Schema, dem erforderliche Felder fehlen, wird mit einer Meldung abgelehnt, die dieses Schema benennt.
Unterstützte Parameter
Nur die untenstehenden Query-Parameter werden gelesen; alles andere in einem Link wird ignoriert.
| Parameter | Gilt für | Umgewandelt zu | |
|---|---|---|---|
sni, peer, servername |
Alle | sni |
|
alpn (kommagetrennt) |
Alle | alpn (Werte mit `\ |
` verbunden) |
fp |
Alle | fingerprint (das uTLS-ClientHello-Profil) |
|
allowInsecure, insecure, skip-cert-verify |
Alle | skip-cert-verify=true |
|
security=tls, xtls, reality |
Alle | tls=true |
|
pbk, sid |
REALITY | reality=true, public-key, short-id |
|
flow |
VLESS | xtls=true, flow |
|
type/network=ws + path, host |
Alle | ws=true, ws-path, ws-headers=Host:… |
|
type/network=grpc + serviceName (oder path) |
Alle | grpc=true, grpc-service-name |
|
type/network=xhttp oder splithttp + path, host, mode |
Alle | xhttp=true, xhttp-path, xhttp-host, xhttp-mode |
|
obfs, obfs-password, up, down |
Hysteria2 | Gleiche Optionsnamen | |
plugin=… |
Shadowsocks | Siehe unten |
Ein Shadowsocks-plugin-Wert wird als name;key=value;… gelesen. obfs-local / simple-obfs / obfs werden zu obfs und obfs_param; v2ray-plugin in seinem (voreingestellten) WebSocket-Modus wird zu ws=true mit ws-path und ws-headers. Jedes andere Plugin erzeugt eine Warnung und wird nicht übernommen — die resultierende Richtlinie kann sich nicht mit einem Server verbinden, der es voraussetzt.
Hinweis: Ein VMess-
aid(alterId) ungleich null wird als Warnung gemeldet. Chute spricht ausschließlich VMess AEAD, und ein Server, der noch den alten MD5-Handshake verlangt, kann die Verbindung nicht authentifizieren.
Profil-Import
Drei Formate werden erkannt:
| Format | Handhabung |
|---|---|
| Natives Chute-/Surge-Profil | Wird unverändert verwendet, ohne Umwandlungsschritt |
| Clash / mihomo YAML | Wird in native Konfiguration umgewandelt |
| sing-box JSON | Wird in native Konfiguration umgewandelt |
Das Format wird aus dem Inhalt erkannt, der Dateiname dient nur als Hinweis. Inhalt, der mit { beginnt, wird als sing-box-JSON behandelt, wie auch immer die Datei heißt (ein als .yaml gespeichertes sing-box-Profil lässt sich weiterhin als YAML parsen, dem Namen allein ist also nicht zu trauen). Andernfalls bedeutet die Endung .conf nativ, .json sing-box und .yaml / .yml Clash. Wenn kein brauchbarer Dateiname vorliegt — etwa bei einem Abonnement-Body —, entscheidet die erste bedeutungstragende Zeile: #!MANAGED-CONFIG oder eine [Section]-Kopfzeile bedeutet nativ, und proxies:, proxy-groups:, rules:, proxy-providers: oder rule-providers: bedeutet Clash. Alles andere wird als nativ behandelt.
Ein Dokument, das sich zwar parsen lässt, aber keinen der Abschnitte enthält, die seinen Dialekt ausmachen, wird abgelehnt, statt als erfolgreicher Import von nichts gemeldet zu werden: Clash-YAML benötigt mindestens eines von proxies, proxy-groups, rules, proxy-providers oder rule-providers, und sing-box-JSON benötigt outbounds, endpoints oder route.
Ein einzelner nicht umwandelbarer Eintrag lässt den Import nie scheitern. Jeder Proxy, jede Gruppe und jede Regel wird für sich umgewandelt; diejenigen ohne Chute-Entsprechung werden übersprungen und gemeldet. Das Ergebnis umfasst die umgewandelte Konfiguration, eine Liste von Warnungen und eine Liste der übersprungenen Quellfelder. Dieselben Warnungen werden außerdem als Kommentare in den umgewandelten Text geschrieben, direkt neben dem Abschnitt, aus dem sie stammen:
[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
Zum Schluss wird der umgewandelte Text mit Chutes eigenem Parser erneut geparst. Jede Zeile, die der Parser ablehnt, wird als # KL-CONVERT-DROPPED: … auskommentiert und gemeldet, sodass ein zu 95 % umwandelbares Profil dennoch importiert wird und läuft.
Knotennamen werden dort umgeschrieben, wo sie das Konfigurationsformat brechen würden: , wird zu einem Leerzeichen und = wird zu -, und ein Name, der dadurch mit einem anderen kollidiert, erhält ein numerisches Suffix. Gruppenmitglieder und Regelziele werden entsprechend umgeschrieben, sodass jede Referenz weiterhin auf denselben Knoten zeigt. direct-Proxys/-Outbounds werden auf das integrierte DIRECT abgebildet und reject / block / dns auf REJECT.
Hinweis: Ein umgewandeltes Profil ist eine statische Momentaufnahme. Chute lädt ein Abonnement erneut herunter und parst es als natives Profil; ein Profil, das umgewandelt werden musste, wird deshalb ohne Auto-Update-URL gespeichert und aktualisiert sich nicht selbst.
Hinweise zur Clash-/mihomo-Umwandlung
Hinweis:
dialer-proxywird inunderlying-proxyumgewandelt. Chute parst und bewahrt diese Option, implementiert aber keine Proxy-Verkettung — eine Richtlinie, die sie trägt, protokolliert eine Warnung und verbindet sich direkt mit ihrem eigenen Server. Datenverkehr, der unter mihomo verkettet war, ist es nach dem Import nicht mehr.
- Umgewandelte Proxy-Typen:
ss,ssr,vmess,vless,trojan,http,socks5,hysteria2,tuic,anytls,wireguard,ssh. Typen, für die Chute keine Implementierung hat —snell,hysteria(v1),mieru,juicity,shadowquic,trusttunnel,openvpn,sudoku,vmess-http— werden mit einer Warnung übersprungen, die das Protokoll benennt. Zwei weitere werden übersprungen, obwohl Chute das Protokoll unterstützt: einmasque-Proxy, weil das mihomo-Feldlayout abweicht, und eintailscale-Proxy, der einmalig im Abschnitt[Tailscale]konfiguriert und über die integrierte RichtlinieTAILSCALEgenutzt wird. - Die beiden Fingerabdruck-Schlüssel von mihomo bedeuten Unterschiedliches und werden auseinandergehalten:
client-fingerprintwird zufingerprint(das uTLS-ClientHello-Profil) undfingerprintwird zucert-fingerprint-sha256(ein Zertifikats-Pin). udp: falsewird zuudp-relay=false,tfowird zutfo=true, und ein aktiviertersmux-Block wird zumux=true.- Die Gruppentypen
select,url-test,fallbackundload-balancewerden samt ihren Health-Check-Optionen umgewandelt. Einerelay-Gruppe wird übersprungen — sie ist Verkettung, die nicht implementiert ist.use:-Mitglieder werden zupolicy-provider:<name>-Referenzen, undinclude-all/include-all-proxies/include-all-providerswerden zu einer expliziten Mitgliederliste expandiert. filterundexclude-filterwerden in Anführungszeichen übernommen, aber ein Muster, das ein Komma oder ein Anführungszeichen enthält, kann das Format der Konfigurationszeile nicht überstehen und wird mit einer Warnung verworfen.- Regeltypen werden dort umbenannt, wo die Namen abweichen:
MATCH→FINAL,DST-PORT→DEST-PORT,SRC-IP-CIDR→SRC-IP.REJECT-DROPundREJECT-TINYGIFfallen mitREJECTzusammen; eine Regel, die aufPASSoderCOMPATIBLEzielt, wird übersprungen. - Ein Inline-
rule-provider(type: inlinemit einerpayload-Liste) wird zu den entsprechenden konkreten Regeln expandiert, da eine Chute-[Rule Provider]-Zeile keine Nutzlast einbetten kann. - Allgemeine Schlüssel werden dort abgebildet, wo eine Entsprechung existiert:
mixed-portwird zum HTTP-port(SOCKS5 benötigt sein eigenessocks-port),allow-lanwird zuallow-wifi-access,log-levelwird aufloglevelabgebildet,external-controller/secretwerden zu den Optionen des externen HTTP-Controllers, und ein aktiviertersnifferwird zusniffing-enabled.
Hinweise zur sing-box-Umwandlung
- Umgewandelte Outbound-Typen:
shadowsocks,vmess,vless,trojan,hysteria2,tuic,anytls,shadowtls,wireguard,http,socks,ssh.selectorundurltestwerden zu den Richtliniengruppenselectundurl-test. detourerzeugt aus demselben Grund eine Warnung wiedialer-proxy: Outbound-Verkettung ist nicht implementiert, und der Outbound wählt seinen eigenen Server direkt an.route.rule_set-Einträge werden zu[Rule Provider]-Zeilen (type=httpfür entfernte,type=filefür lokale, stets gelesen als klassische mihomo-YAML-Regellisten). Ein Regelsatz im binären.srs-Format wird abgelehnt — Chute liest ausschließlich textbasierte Regel-Nutzlasten.- Routing-Regeln folgen dem Schlüssel
action:route/bypassverwenden den benannten Outbound,rejectwird zuREJECT, undhijack-dns,sniffundresolveerzeugen nichts, weil Chute diese aus[General]heraus steuert. multiplex-Einstellungen unddns.rules(DNS-Routing pro Domain) haben keine Entsprechung und werden als verworfen gemeldet.
Einschränkungen
- Proxy-Verkettung ist nicht implementiert. mihomos
dialer-proxy, sing-boxsdetourund Clashsrelay-Gruppen beschreiben allesamt eine Kette; keine davon erzeugt in Chute verketteten Datenverkehr. - Optionen ohne Chute-Entsprechung werden mit einer Warnung verworfen statt stillschweigend: pro Proxy
ip-version,interface-name,routing-markundmptcp; pro Gruppeexclude-type,disable-udp,interface-name,routing-markundicon; sowie die General-Schlüsselbind-address,tcp-concurrent,geodata-mode,geox-url,find-process-mode,unified-delay,authentication,tproxy-port,redir-portund weitere. - Regeltypen ohne Entsprechung werden übersprungen:
GEOSITE,IP-SUFFIX,SRC-IP-SUFFIX,SRC-GEOIP,SRC-IP-ASN,DSCP,UID,SUB-RULE,PROCESS-PATH-REGEX,PROCESS-NAME-WILDCARD,PROCESS-PATH-WILDCARDundIP-ACCEPT. Eine Regel mit demsrc-Modifikator von mihomo wird ebenfalls übersprungen, statt am falschen Endpunkt abzugleichen. mihomo-sub-rules(verschachtelte Regelbäume) werden verworfen. - Protokolldetails, die Chute selbst verwaltet, werden nicht übernommen: Hysteria2-Port-Hopping (
ports), TUIC-heartbeat, AnyTLS-Session-Pool-Feinabstimmung, WireGuard-peers-Listen (es wird ein einzelner Peer konfiguriert) undworkers. - Transporte, die Chute nicht implementiert, werden gemeldet statt umgewandelt:
h2,http-Verschleierung,httpupgrade, die WebSocket-Variantev2ray-http-upgrade, WebSocket-max-early-dataund XHTTP-extra(XMUX / Download-Settings). - Clashs Betriebs-
modeist in Chute ein Laufzeitschalter, kein Konfigurationsschlüssel; ein Profil im Modusglobaloderdirectwird mit einer Warnung in den Regel-Modus umgewandelt. - YAML wird mit einem Standard-Parser gelesen, daher funktionieren Anker und der Merge-Schlüssel
<<. Ein als mehrzeiliger Skalar geschriebener Wert wird auf eine Zeile zusammengefaltet, weil ein Zeilenumbruch die Konfigurationszeile spalten würde, in der er landet.