가져오기

Chute는 다른 클라이언트용으로 작성된 프록시 설정을 가져올 수 있습니다. 두 종류의 입력을 허용합니다: 단일 노드 공유 링크(ss://, vmess://, …), 그리고 Clash/mihomo YAML 또는 sing-box JSON 형식의 프로필 전체입니다. 둘 다 네이티브 Chute 설정으로 변환됩니다 — 변환 후 얻는 것은 [Proxy], [Proxy Group], [Rule] 섹션을 가진 평범한 Chute 프로필이며, Chute가 계속 해석하는 외부 형식 파일이 아닙니다.

http://https:// 주소는 결코 공유 링크로 취급되지 않습니다. 이들은 구독 주소입니다: 먼저 내용을 다운로드한 뒤, 본문이 무엇으로 판명되는지에 따라 가져오기가 진행됩니다.


스킴 결과 정책 유형 기본 포트
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

대부분의 링크는 userinfo@host:port?query#name 형태를 사용합니다. 두 가지는 다릅니다: vmess://는 base64로 인코딩된 JSON 객체(add / ps / scy / net / aid 필드 이름을 쓰는 v2rayN 형식)를 담고, ss://는 SIP002(base64(method:password)@host:port)와 더 오래된 전체 본문 형태(base64(method:password@host:port))를 모두 허용합니다. base64 페이로드는 패딩이 없어도 되고 URL-safe 알파벳을 사용해도 됩니다.

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

는 다음과 같이 변환됩니다:

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

# 뒤의 텍스트는 퍼센트 디코딩되어 정책 이름이 됩니다. vmess://는 대신 ps 필드에서 이름을 가져옵니다. 이름이 없는 링크는 host:port로 이름이 지정됩니다. 설정 형식이 예약해 둔 문자 — =, ,, [, ], ", 탭, 줄바꿈 — 는 이름에서 공백으로 대체됩니다.

Trojan, Hysteria2, TUIC, AnyTLS는 TLS 전용 프로토콜이므로, 링크에 명시되어 있지 않더라도 tls=true가 추가됩니다.

여러 링크. 페이로드는 줄바꿈으로 구분된 여러 개의 공유 링크일 수 있으며, 전체를 base64로 한 겹 감쌀 수도 있습니다. 파싱에 성공한 모든 줄이 정책이 되고, 이름이 중복되면 2, 3 … 접미사가 붙어 규칙과 그룹이 각 노드를 개별적으로 지정할 수 있습니다. 파싱할 수 없는 줄은 경고로 보고되며 나머지 페이로드는 그대로 가져옵니다. 아무것도 변환하지 못했을 때만 가져오기가 실패합니다.

위 표에 없는 스킴을 가진 링크는 공유 링크로 인식되지 않습니다. 알려진 스킴이지만 필수 필드가 빠진 링크는 해당 스킴을 명시한 메시지와 함께 거부됩니다.

아래의 쿼리 매개변수만 읽히며, 링크의 나머지 내용은 모두 무시됩니다.

매개변수 적용 대상 변환 결과
sni, peer, servername 전체 sni
alpn(쉼표 구분) 전체 alpn(값은 `\ `로 연결)
fp 전체 fingerprint(uTLS ClientHello 프로필)
allowInsecure, insecure, skip-cert-verify 전체 skip-cert-verify=true
security=tls, xtls, reality 전체 tls=true
pbk, sid REALITY reality=true, public-key, short-id
flow VLESS xtls=true, flow
type/network=ws + path, host 전체 ws=true, ws-path, ws-headers=Host:…
type/network=grpc + serviceName(또는 path) 전체 grpc=true, grpc-service-name
type/network=xhttp 또는 splithttp + path, host, mode 전체 xhttp=true, xhttp-path, xhttp-host, xhttp-mode
obfs, obfs-password, up, down Hysteria2 동일한 옵션 이름
plugin=… Shadowsocks 아래 참고

Shadowsocks의 plugin 값은 name;key=value;… 형태로 읽힙니다. obfs-local / simple-obfs / obfsobfsobfs_param이 되고, v2ray-plugin은 (기본값인) websocket 모드일 때 ws-pathws-headers와 함께 ws=true가 됩니다. 그 밖의 플러그인은 경고를 남기고 이전되지 않습니다 — 변환된 정책은 해당 플러그인을 요구하는 서버에 연결하지 못합니다.

알림: 0이 아닌 VMess aid(alterId)는 경고로 보고됩니다. Chute는 VMess AEAD만 지원하므로, 여전히 레거시 MD5 핸드셰이크를 요구하는 서버에서는 인증에 실패합니다.


프로필 가져오기

세 가지 형식이 인식됩니다:

형식 처리
네이티브 Chute/Surge 프로필 변환 단계 없이 그대로 사용
Clash / mihomo YAML 네이티브 설정으로 변환
sing-box JSON 네이티브 설정으로 변환

형식은 내용으로 감지하며, 파일 이름은 힌트로만 사용합니다. {로 시작하는 내용은 파일 이름이 무엇이든 sing-box JSON으로 취급합니다(.yaml로 저장된 sing-box 프로필도 YAML로 파싱되므로 이름만으로는 신뢰할 수 없습니다). 그 외에는 .conf 확장자는 네이티브, .json은 sing-box, .yaml / .yml은 Clash를 의미합니다. 쓸 만한 파일 이름이 없을 때 — 예를 들어 구독 본문 — 는 첫 번째 의미 있는 줄이 결정합니다: #!MANAGED-CONFIG 또는 [Section] 헤더는 네이티브를, proxies:, proxy-groups:, rules:, proxy-providers: 또는 rule-providers:는 Clash를 의미합니다. 그 밖의 경우는 네이티브로 취급합니다.

파싱은 되지만 그 방언을 정의하는 섹션이 하나도 없는 문서는, 아무것도 없는 상태를 성공적인 가져오기로 보고하는 대신 거부됩니다: Clash YAML은 proxies, proxy-groups, rules, proxy-providers, rule-providers 중 최소 하나가 필요하고, sing-box JSON은 outbounds, endpoints 또는 route가 필요합니다.

변환할 수 없는 항목 하나 때문에 가져오기 전체가 실패하지는 않습니다. 각 프록시, 그룹, 규칙은 개별적으로 변환되며, Chute에 대응하는 것이 없는 항목은 건너뛰고 보고됩니다. 결과에는 변환된 설정, 경고 목록, 건너뛴 원본 필드 목록이 담깁니다. 동일한 경고는 변환된 텍스트 안에도 해당 섹션 옆에 주석으로 기록됩니다:

[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

마지막으로, 변환된 텍스트는 Chute 자체 파서로 다시 파싱됩니다. 파서가 거부하는 줄은 # KL-CONVERT-DROPPED: …로 주석 처리되고 보고되므로, 95%만 변환 가능한 프로필도 가져와서 실행할 수 있습니다.

노드 이름은 설정 형식을 깨뜨릴 수 있는 경우 다시 작성됩니다: ,는 공백이 되고 =-가 되며, 그 결과 다른 이름과 충돌하면 숫자 접미사가 붙습니다. 그룹 멤버와 규칙 대상도 이에 맞춰 다시 작성되므로 모든 참조가 계속 같은 노드를 가리킵니다. direct 프록시/아웃바운드는 내장 DIRECT에, reject / block / dnsREJECT에 매핑됩니다.

알림: 변환된 프로필은 정적 스냅샷입니다. Chute는 구독을 다시 다운로드하여 네이티브 프로필로 파싱하므로, 변환이 필요했던 프로필은 자동 업데이트 URL 없이 저장되며 스스로 갱신되지 않습니다.

Clash / mihomo 변환 참고 사항

알림: dialer-proxyunderlying-proxy로 변환됩니다. Chute는 이 옵션을 파싱하고 보존하지만 프록시 체이닝을 구현하지 않습니다 — 이 옵션을 가진 정책은 경고를 기록하고 자신의 서버에 직접 연결합니다. mihomo에서 체이닝되던 트래픽은 가져오기 후에는 체이닝되지 않습니다.

  • 변환되는 프록시 유형: ss, ssr, vmess, vless, trojan, http, socks5, hysteria2, tuic, anytls, wireguard, ssh. Chute가 구현하지 않은 유형 — snell, hysteria(v1), mieru, juicity, shadowquic, trusttunnel, openvpn, sudoku, vmess-http — 은 해당 프로토콜 이름을 명시한 경고와 함께 건너뜁니다. 프로토콜 자체는 Chute가 지원하지만 건너뛰는 것이 두 가지 더 있습니다: masque 프록시는 mihomo의 필드 구성이 다르기 때문이고, tailscale 프록시는 [Tailscale] 섹션에서 한 번 설정한 뒤 내장 TAILSCALE 정책으로 사용하기 때문입니다.
  • mihomo의 두 fingerprint 키는 의미가 다르므로 구분해서 처리합니다: client-fingerprintfingerprint(uTLS ClientHello 프로필)가 되고, fingerprintcert-fingerprint-sha256(인증서 고정)이 됩니다.
  • udp: falseudp-relay=false가 되고, tfotfo=true가 되며, 활성화된 smux 블록은 mux=true가 됩니다.
  • 그룹 유형 select, url-test, fallback, load-balance는 상태 확인 옵션과 함께 변환됩니다. relay 그룹은 건너뜁니다 — 체이닝이며, 구현되어 있지 않습니다. use: 멤버는 policy-provider:<name> 참조가 되고, include-all / include-all-proxies / include-all-providers는 명시적인 멤버 목록으로 확장됩니다.
  • filterexclude-filter는 따옴표로 묶여 이전되지만, 쉼표나 따옴표가 포함된 패턴은 설정 줄 형식에서 살아남을 수 없으므로 경고와 함께 버려집니다.
  • 규칙 유형은 이름이 다른 경우 바뀝니다: MATCHFINAL, DST-PORTDEST-PORT, SRC-IP-CIDRSRC-IP. REJECT-DROPREJECT-TINYGIFREJECT로 통합되며, PASS 또는 COMPATIBLE을 대상으로 하는 규칙은 건너뜁니다.
  • 인라인 rule-provider(payload 목록이 있는 type: inline)는 동등한 구체적 규칙들로 확장됩니다. Chute의 [Rule Provider] 줄에는 페이로드를 포함할 수 없기 때문입니다.
  • 일반 키는 대응하는 것이 있으면 매핑됩니다: mixed-port는 HTTP port가 되고(SOCKS5는 별도의 socks-port가 필요합니다), allow-lanallow-wifi-access가 되며, log-levelloglevel에 매핑되고, external-controller/secret은 외부 HTTP 컨트롤러 옵션이 되며, 활성화된 sniffersniffing-enabled가 됩니다.

sing-box 변환 참고 사항

  • 변환되는 아웃바운드 유형: shadowsocks, vmess, vless, trojan, hysteria2, tuic, anytls, shadowtls, wireguard, http, socks, ssh. selectorurltest는 각각 selecturl-test 정책 그룹이 됩니다.
  • detourdialer-proxy와 같은 이유로 경고를 발생시킵니다: 아웃바운드 체이닝은 구현되어 있지 않으며, 아웃바운드는 자신의 서버에 직접 연결합니다.
  • route.rule_set 항목은 [Rule Provider] 줄이 됩니다(원격은 type=http, 로컬은 type=file이며, 항상 고전적인 mihomo YAML 규칙 목록으로 읽습니다). 바이너리 .srs 형식의 규칙 세트는 거부됩니다 — Chute는 텍스트 규칙 페이로드만 읽습니다.
  • 라우트 규칙은 action 키를 따릅니다: route/bypass는 지정된 아웃바운드를 사용하고, rejectREJECT가 되며, hijack-dns, sniff, resolve는 Chute가 [General]에서 제어하므로 아무것도 생성하지 않습니다.
  • multiplex 설정과 dns.rules(도메인별 DNS 라우팅)는 대응하는 것이 없어 버려진 것으로 보고됩니다.

제한 사항

  • 프록시 체이닝은 구현되어 있지 않습니다. mihomo의 dialer-proxy, sing-box의 detour, Clash의 relay 그룹은 모두 체인을 기술하지만, Chute에서는 어느 것도 체이닝된 트래픽을 만들지 않습니다.
  • Chute에 대응하는 것이 없는 옵션은 조용히 사라지지 않고 경고와 함께 버려집니다: 프록시별 ip-version, interface-name, routing-mark, mptcp; 그룹별 exclude-type, disable-udp, interface-name, routing-mark, icon; 그리고 일반 키 bind-address, tcp-concurrent, geodata-mode, geox-url, find-process-mode, unified-delay, authentication, tproxy-port, redir-port 등.
  • 대응하는 것이 없는 규칙 유형은 건너뜁니다: GEOSITE, IP-SUFFIX, SRC-IP-SUFFIX, SRC-GEOIP, SRC-IP-ASN, DSCP, UID, SUB-RULE, PROCESS-PATH-REGEX, PROCESS-NAME-WILDCARD, PROCESS-PATH-WILDCARD, IP-ACCEPT. mihomo의 src 수정자를 가진 규칙도 잘못된 엔드포인트에 매칭되지 않도록 건너뜁니다. mihomo의 sub-rules(중첩된 규칙 트리)는 버려집니다.
  • Chute가 자체적으로 관리하는 프로토콜 세부 사항은 이전되지 않습니다: Hysteria2 포트 호핑(ports), TUIC heartbeat, AnyTLS 세션 풀 튜닝, WireGuard peers 목록(단일 피어만 설정됩니다), workers.
  • Chute가 구현하지 않은 전송 방식은 변환되지 않고 보고됩니다: h2, http 난독화, httpupgrade, v2ray-http-upgrade WebSocket 변형, WebSocket max-early-data, XHTTP extra(XMUX / download-settings).
  • Clash의 동작 mode는 Chute에서 설정 키가 아니라 런타임 스위치입니다. global 또는 direct 모드의 프로필은 경고와 함께 규칙 모드로 변환됩니다.
  • YAML은 표준 파서로 읽으므로 앵커와 << 병합 키가 동작합니다. 여러 줄 스칼라로 작성된 값은 한 줄로 접힙니다. 줄바꿈이 들어가면 그 값이 놓이는 설정 줄이 쪼개지기 때문입니다.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-08-13 17:01:32

results matching ""

    No results matching ""