การนำเข้า

Chute สามารถนำเข้าการกำหนดค่าพร็อกซีที่เขียนไว้สำหรับไคลเอนต์อื่นได้ โดยรองรับข้อมูลนำเข้าสองแบบ: ลิงก์แชร์ ของโหนดเดี่ยว (ss://, vmess://, …) และโปรไฟล์ทั้งไฟล์ในรูปแบบ Clash/mihomo YAML หรือ sing-box JSON ทั้งสองแบบจะถูกแปลงเป็นการกำหนดค่าแบบเนทีฟของ Chute — สิ่งที่คุณได้หลังจากนั้นคือโปรไฟล์ Chute ธรรมดาที่มีส่วน [Proxy], [Proxy Group] และ [Rule] ไม่ใช่ไฟล์ของไคลเอนต์อื่นที่ Chute ต้องคอยตีความอยู่ตลอด

ที่อยู่ http:// และ https:// จะไม่ถูกถือว่าเป็นลิงก์แชร์เลย แต่ถือเป็นที่อยู่แบบ subscription: เนื้อหาจะถูกดาวน์โหลดก่อน แล้วจึงนำเข้าตามชนิดของเนื้อหาที่ได้รับมา


สคีม ประเภทนโยบายที่ได้ พอร์ตเริ่มต้น
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:// บรรจุอ็อบเจกต์ JSON ที่เข้ารหัส base64 (รูปแบบของ v2rayN ซึ่งใช้ชื่อฟิลด์ add / ps / scy / net / aid) ส่วน ss:// รองรับทั้งแบบ SIP002 (base64(method:password)@host:port) และแบบเก่าที่เข้ารหัสทั้งก้อน base64(method:password@host:port) เพย์โหลด base64 อาจไม่มี padding และอาจใช้ชุดอักขระแบบ 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

ข้อความหลัง # จะถูกถอดรหัส percent-encoding และกลายเป็นชื่อนโยบาย ส่วน vmess:// จะใช้ค่าจากฟิลด์ ps แทน ลิงก์ที่ไม่มีชื่อจะถูกตั้งชื่อเป็น host:port อักขระที่รูปแบบการกำหนดค่าสงวนไว้ — =, ,, [, ], ", แท็บ และการขึ้นบรรทัดใหม่ — จะถูกแทนที่ด้วยช่องว่างในชื่อ

Trojan, Hysteria2, TUIC และ AnyTLS เป็นโปรโตคอลที่ใช้ TLS เท่านั้น จึงมีการเพิ่ม tls=true ให้แม้ลิงก์จะไม่ได้ระบุไว้ก็ตาม

ลิงก์หลายรายการ เพย์โหลดหนึ่งชุดอาจมีลิงก์แชร์หลายรายการคั่นด้วยการขึ้นบรรทัดใหม่ และอาจถูกห่อด้วย base64 อีกหนึ่งชั้นด้านนอกก็ได้ ทุกบรรทัดที่แยกวิเคราะห์สำเร็จจะกลายเป็นนโยบายหนึ่งรายการ และชื่อที่ซ้ำกันจะได้รับส่วนต่อท้าย 2, 3 … เพื่อให้กฎและกลุ่มยังอ้างถึงแต่ละโหนดได้อย่างเจาะจง บรรทัดที่แยกวิเคราะห์ไม่ได้จะถูกรายงานเป็นคำเตือน ขณะที่เพย์โหลดส่วนที่เหลือยังคงถูกนำเข้าตามปกติ การนำเข้าจะล้มเหลวก็ต่อเมื่อไม่มีอะไรแปลงได้เลยเท่านั้น

ลิงก์ที่มีสคีมไม่อยู่ในตารางข้างต้นจะไม่ถูกถือว่าเป็นลิงก์แชร์ ส่วนลิงก์ที่ใช้สคีมที่รู้จักแต่ขาดฟิลด์ที่จำเป็นจะถูกปฏิเสธพร้อมข้อความที่ระบุชื่อสคีมนั้น

ระบบจะอ่านเฉพาะพารามิเตอร์ query ด้านล่างนี้เท่านั้น อย่างอื่นในลิงก์จะถูกละเว้น

พารามิเตอร์ ใช้กับ แปลงเป็น
sni, peer, servername ทั้งหมด sni
alpn (คั่นด้วยคอมมา) ทั้งหมด alpn (ค่าถูกเชื่อมด้วย `\ `)
fp ทั้งหมด fingerprint (โปรไฟล์ ClientHello ของ uTLS)
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 ดูด้านล่าง

ค่า plugin ของ Shadowsocks จะถูกอ่านในรูปแบบ name;key=value;… โดย obfs-local / simple-obfs / obfs จะกลายเป็น obfs และ obfs_param ส่วน v2ray-plugin ในโหมด websocket (ซึ่งเป็นค่าเริ่มต้น) จะกลายเป็น ws=true พร้อม ws-path และ ws-headers ปลั๊กอินอื่นนอกจากนี้จะทำให้เกิดคำเตือนและไม่ถูกนำมาด้วย — นโยบายที่ได้จะเชื่อมต่อกับเซิร์ฟเวอร์ที่ต้องใช้ปลั๊กอินนั้นไม่ได้

หมายเหตุ: ค่า aid (alterId) ของ VMess ที่ไม่ใช่ศูนย์จะถูกรายงานเป็นคำเตือน Chute รองรับเฉพาะ VMess AEAD เท่านั้น เซิร์ฟเวอร์ที่ยังต้องใช้การจับมือแบบ MD5 รุ่นเก่าจะยืนยันตัวตนไม่ผ่าน


การนำเข้าโปรไฟล์

รูปแบบที่รับรู้ได้มีสามแบบ:

รูปแบบ การจัดการ
โปรไฟล์ Chute/Surge แบบเนทีฟ ใช้ตามเดิม ไม่มีขั้นตอนการแปลง
Clash / mihomo YAML แปลงเป็นการกำหนดค่าแบบเนทีฟ
sing-box JSON แปลงเป็นการกำหนดค่าแบบเนทีฟ

รูปแบบจะถูกตรวจหาจากเนื้อหา โดยใช้ชื่อไฟล์เป็นเพียงตัวช่วยชี้แนะเท่านั้น เนื้อหาที่ขึ้นต้นด้วย { จะถูกถือเป็น sing-box JSON ไม่ว่าไฟล์จะชื่ออะไรก็ตาม (โปรไฟล์ sing-box ที่บันทึกเป็น .yaml ก็ยังแยกวิเคราะห์เป็น YAML ได้ ดังนั้นจะเชื่อเพียงชื่อไฟล์อย่างเดียวไม่ได้) นอกจากนั้น นามสกุล .conf หมายถึงแบบเนทีฟ, .json หมายถึง sing-box และ .yaml / .yml หมายถึง Clash เมื่อไม่มีชื่อไฟล์ที่ใช้ได้ — เช่น เนื้อหาที่ได้จาก subscription — บรรทัดแรกที่มีความหมายจะเป็นตัวตัดสิน: #!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% ก็ยังนำเข้าและทำงานได้

ชื่อโหนดจะถูกเขียนใหม่ในจุดที่มันจะทำให้รูปแบบการกำหนดค่าเสียหาย: , จะกลายเป็นช่องว่าง และ = จะกลายเป็น - และชื่อที่ไปชนกับชื่ออื่นหลังจากนั้นจะได้รับส่วนต่อท้ายเป็นตัวเลข สมาชิกของกลุ่มและปลายทางของกฎจะถูกเขียนใหม่ให้ตรงกัน ทุกการอ้างอิงจึงยังชี้ไปยังโหนดเดิม พร็อกซี/outbound ที่เป็น direct จะถูกแมปไปยัง DIRECT ในตัว ส่วน reject / block / dns จะถูกแมปไปยัง REJECT

หมายเหตุ: โปรไฟล์ที่ผ่านการแปลงแล้วเป็นสแนปช็อตแบบคงที่ Chute จะดาวน์โหลด subscription ใหม่แล้วแยกวิเคราะห์เป็นโปรไฟล์แบบเนทีฟ ดังนั้นโปรไฟล์ที่ต้องผ่านการแปลงจะถูกบันทึกโดยไม่มี URL สำหรับอัปเดตอัตโนมัติ และจะไม่รีเฟรชตัวเอง

หมายเหตุการแปลง Clash / mihomo

หมายเหตุ: dialer-proxy จะถูกแปลงเป็น underlying-proxy Chute แยกวิเคราะห์และเก็บรักษาตัวเลือกนี้ไว้ แต่ไม่ได้รองรับการต่อพ่วงพร็อกซี (proxy chaining) — นโยบายที่มีตัวเลือกนี้จะบันทึกคำเตือนลงในล็อกและเชื่อมต่อไปยังเซิร์ฟเวอร์ของตัวเองโดยตรง ทราฟฟิกที่เคยถูกต่อพ่วงภายใต้ 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
  • คีย์ fingerprint สองตัวของ mihomo มีความหมายต่างกันและถูกแยกจากกัน: client-fingerprint จะกลายเป็น fingerprint (โปรไฟล์ ClientHello ของ uTLS) ส่วน fingerprint จะกลายเป็น cert-fingerprint-sha256 (การตรึงใบรับรอง)
  • udp: false จะกลายเป็น udp-relay=false, tfo จะกลายเป็น tfo=true และบล็อก smux ที่เปิดใช้งานไว้จะกลายเป็น mux=true
  • ประเภทกลุ่ม select, url-test, fallback และ load-balance จะถูกแปลงพร้อมตัวเลือกการตรวจสอบสถานะ (health check) ของมัน กลุ่ม relay จะถูกข้าม — เพราะเป็นการต่อพ่วง ซึ่งยังไม่ได้ถูกใช้งาน สมาชิกที่มาจาก use: จะกลายเป็นการอ้างอิงแบบ policy-provider:<name> และ include-all / include-all-proxies / include-all-providers จะถูกขยายเป็นรายชื่อสมาชิกแบบชัดเจน
  • filter และ exclude-filter จะถูกนำมาด้วยในรูปแบบที่ใส่เครื่องหมายคำพูด แต่รูปแบบ (pattern) ที่มีคอมมาหรือเครื่องหมายคำพูดอยู่ภายในไม่สามารถคงอยู่ในรูปแบบบรรทัดของการกำหนดค่าได้ จึงถูกตัดทิ้งพร้อมคำเตือน
  • ประเภทกฎจะถูกเปลี่ยนชื่อในจุดที่ชื่อไม่ตรงกัน: MATCHFINAL, DST-PORTDEST-PORT, SRC-IP-CIDRSRC-IP ส่วน REJECT-DROP และ REJECT-TINYGIF จะยุบรวมเป็น REJECT และกฎที่ชี้ไปยัง PASS หรือ COMPATIBLE จะถูกข้าม
  • rule-provider แบบ inline (type: inline พร้อมรายการ payload) จะถูกขยายเป็นกฎจริงที่เทียบเท่ากัน เนื่องจากบรรทัด [Rule Provider] ของ Chute ไม่สามารถฝังเพย์โหลดไว้ภายในได้
  • คีย์ทั่วไปจะถูกแมปในจุดที่มีสิ่งเทียบเท่า: mixed-port จะกลายเป็น port ของ HTTP (SOCKS5 ต้องใช้ socks-port ของตัวเอง), allow-lan จะกลายเป็น allow-wifi-access, log-level จะถูกแมปไปยัง loglevel, external-controller/secret จะกลายเป็นตัวเลือกของตัวควบคุม HTTP ภายนอก และ sniffer ที่เปิดใช้งานไว้จะกลายเป็น sniffing-enabled

หมายเหตุการแปลง sing-box

  • ประเภท outbound ที่แปลงได้: shadowsocks, vmess, vless, trojan, hysteria2, tuic, anytls, shadowtls, wireguard, http, socks, ssh ส่วน selector และ urltest จะกลายเป็นกลุ่มนโยบายแบบ select และ url-test
  • detour จะทำให้เกิดคำเตือนด้วยเหตุผลเดียวกับ dialer-proxy: การต่อพ่วง outbound ยังไม่ได้ถูกใช้งาน และ outbound นั้นจะเชื่อมต่อไปยังเซิร์ฟเวอร์ของตัวเองโดยตรง
  • รายการใน route.rule_set จะกลายเป็นบรรทัด [Rule Provider] (type=http สำหรับแบบระยะไกล, type=file สำหรับแบบในเครื่อง และถูกอ่านเป็นรายการกฎแบบ classical ของ mihomo-YAML เสมอ) ชุดกฎในรูปแบบไบนารี .srs จะถูกปฏิเสธ — Chute อ่านได้เฉพาะเพย์โหลดกฎที่เป็นข้อความเท่านั้น
  • กฎการกำหนดเส้นทางจะทำตามคีย์ action: route/bypass จะใช้ outbound ที่ระบุชื่อไว้, reject จะกลายเป็น REJECT ส่วน hijack-dns, sniff และ resolve จะไม่สร้างอะไรเลย เพราะ Chute ควบคุมสิ่งเหล่านี้จาก [General]
  • การตั้งค่า multiplex และ dns.rules (การกำหนดเส้นทาง DNS รายโดเมน) ไม่มีสิ่งเทียบเท่า จึงถูกรายงานว่าถูกตัดทิ้ง

ข้อจำกัด

  • ยังไม่มีการรองรับการต่อพ่วงพร็อกซี ทั้ง dialer-proxy ของ mihomo, detour ของ sing-box และกลุ่ม relay ของ Clash ล้วนอธิบายการต่อพ่วงทั้งสิ้น แต่ไม่มีอันใดที่ทำให้เกิดทราฟฟิกแบบต่อพ่วงใน Chute
  • ตัวเลือกที่ไม่มีสิ่งเทียบเท่าใน Chute จะถูกตัดทิ้งพร้อมคำเตือน ไม่ใช่ตัดทิ้งไปเงียบ ๆ: ระดับพร็อกซีได้แก่ ip-version, interface-name, routing-mark และ mptcp; ระดับกลุ่มได้แก่ exclude-type, disable-udp, interface-name, routing-mark และ icon; และคีย์ในส่วน General ได้แก่ 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 กฎที่มีตัวขยาย src ของ mihomo ก็ถูกข้ามเช่นกัน แทนที่จะไปจับคู่กับปลายทางที่ผิด ส่วน sub-rules ของ mihomo (ต้นไม้กฎแบบซ้อนกัน) จะถูกตัดทิ้ง
  • รายละเอียดของโปรโตคอลที่ Chute จัดการเองจะไม่ถูกนำมาด้วย: การสลับพอร์ต (port hopping) ของ Hysteria2 (ports), heartbeat ของ TUIC, การปรับแต่งพูลเซสชันของ AnyTLS, รายการ peers ของ WireGuard (จะกำหนดค่าเพียงเพียร์เดียว) และ workers
  • การขนส่งที่ Chute ไม่ได้ใช้งานจะถูกรายงานแทนการแปลง: h2, การอำพรางแบบ http, httpupgrade, WebSocket รูปแบบ v2ray-http-upgrade, max-early-data ของ WebSocket และ extra ของ XHTTP (XMUX / download-settings)
  • mode การทำงานของ Clash เป็นสวิตช์ระดับรันไทม์ใน Chute ไม่ใช่คีย์ในไฟล์การกำหนดค่า โปรไฟล์ที่อยู่ในโหมด global หรือ direct จะถูกแปลงเป็นโหมดกฎพร้อมคำเตือน
  • YAML ถูกอ่านด้วยตัวแยกวิเคราะห์มาตรฐาน ดังนั้น anchor และคีย์ผสาน << จึงใช้งานได้ ค่าที่เขียนเป็นสเกลาร์หลายบรรทัดจะถูกยุบให้เหลือบรรทัดเดียว เพราะการขึ้นบรรทัดใหม่จะทำให้บรรทัดการกำหนดค่าที่มันไปอยู่ถูกแบ่งออกจากกัน
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-08-13 17:01:32

results matching ""

    No results matching ""