الاستيراد

يستطيع Chute استيراد إعدادات بروكسي مكتوبة لعملاء آخرين. يُقبل نوعان من المدخلات: روابط المشاركة لعقدة واحدة (ss:// و vmess:// و…)، وملفات الإعدادات الكاملة بصيغة Clash/mihomo YAML أو sing-box JSON. ويُحوَّل كلاهما إلى إعدادات Chute الأصلية — فما تحصل عليه بعد ذلك هو ملف إعدادات Chute اعتيادي بأقسام [Proxy] و [Proxy Group] و [Rule]، وليس ملفاً غريباً يواصل 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:// كائن 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

يُفكّ ترميز النسبة المئوية للنص الواقع بعد # ليصبح اسم السياسة؛ أما 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 انظر أدناه

تُقرأ قيمة 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. وعندما لا يتوفر اسم ملف صالح للاستخدام — كجسم اشتراك مثلاً — فإن أول سطر ذي معنى هو ما يحسم الأمر: يعني #!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 / dns بسياسة REJECT.

ملاحظة: ملف الإعدادات المحوَّل هو لقطة ثابتة. فـ Chute يعيد تنزيل الاشتراك ويحلله كملف إعدادات أصلي، لذا يُحفظ ملف الإعدادات الذي احتاج إلى تحويل من دون رابط تحديث تلقائي ولن يحدّث نفسه.

ملاحظات تحويل Clash / mihomo

ملاحظة: يُحوَّل dialer-proxy إلى underlying-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 يعنيان أمرين مختلفين ويُفصل بينهما: يصبح client-fingerprint هو fingerprint (بصمة uTLS ClientHello)، ويصبح fingerprint هو cert-fingerprint-sha256 (تثبيت للشهادة).
  • يصبح udp: false هو udp-relay=false، ويصبح tfo هو tfo=true، وتصبح كتلة smux المفعلة mux=true.
  • تُحوَّل أنواع المجموعات select و url-test و fallback و load-balance مع خيارات فحص السلامة الخاصة بها. أما مجموعة relay فتُتخطى — لأنها تسلسل، وهو غير منفَّذ. وتصبح أعضاء use: مراجعَ بالصيغة policy-provider:<name>، وتُوسَّع include-all / include-all-proxies / include-all-providers إلى قائمة أعضاء صريحة.
  • يُنقل filter و exclude-filter بين علامتي اقتباس، لكن النمط الذي يحتوي على فاصلة أو علامة اقتباس لا يمكنه النجاة من تنسيق سطر الإعدادات فيُسقَط مع تحذير.
  • تُعاد تسمية أنواع القواعد حيثما اختلفت الأسماء: يصبح MATCH هو FINAL، ويصبح DST-PORT هو DEST-PORT، ويصبح SRC-IP-CIDR هو SRC-IP. وتنطوي REJECT-DROP و REJECT-TINYGIF على REJECT؛ أما القاعدة التي تستهدف PASS أو COMPATIBLE فتُتخطى.
  • يُوسَّع rule-provider المضمَّن (type: inline مع قائمة payload) إلى القواعد المكافئة الصريحة، لأن سطر [Rule Provider] في Chute لا يمكنه تضمين حمولة.
  • تُعيَّن المفاتيح العامة حيثما وُجد لها مكافئ: يصبح mixed-port هو منفذ HTTP أي port (ويحتاج SOCKS5 إلى socks-port الخاص به)، ويصبح allow-lan هو allow-wifi-access، ويُعيَّن log-level على loglevel، ويصبح external-controller/secret خيارات وحدة التحكم الخارجية عبر HTTP، وتصبح sniffer المفعلة sniffing-enabled.

ملاحظات تحويل sing-box

  • أنواع الاتصالات الصادرة المحوَّلة: shadowsocks و vmess و vless و trojan و hysteria2 و tuic و anytls و shadowtls و wireguard و http و socks و ssh. ويصبح selector و urltest مجموعتَي سياسات من النوعين select و url-test.
  • يُنتج detour تحذيراً للسبب نفسه الذي يُنتجه dialer-proxy: تسلسل الاتصالات الصادرة غير منفَّذ، والاتصال الصادر يتصل بخادمه الخاص مباشرة.
  • تصبح إدخالات route.rule_set أسطر [Rule Provider] (type=http للبعيدة و type=file للمحلية، وتُقرأ دائماً كقوائم قواعد mihomo-YAML الكلاسيكية). أما مجموعة القواعد بصيغة .srs الثنائية فتُرفض — إذ لا يقرأ Chute إلا حمولات القواعد النصية.
  • تتبع قواعد التوجيه المفتاح action: يستخدم route/bypass الاتصال الصادر المذكور، ويصبح 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؛ والمفاتيح العامة 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 بنفسه: قفز المنافذ في 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 بمحلل قياسي، لذا تعمل المراسي (anchors) ومفتاح الدمج <<. أما القيمة المكتوبة كقيمة قياسية متعددة الأسطر فتُطوى في سطر واحد، لأن السطر الجديد سيقسم سطر الإعدادات الذي تقع فيه.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-08-13 17:01:32

results matching ""

    No results matching ""