مجموعة القواعد
يمكنك استخدام حزمة من القواعد من رابط URL، أو مزود قواعد مُعد، أو قسم مضمَّن في ملف الإعدادات نفسه. يوفر Chute أيضاً مجموعتي قواعد داخليتين.
مجموعة القواعد الداخلية
SYSTEM
RULE-SET,SYSTEM,DIRECT
تتضمن قواعد لمعظم الطلبات المرسلة بواسطة macOS و iOS نفسه. الطلبات المرسلة من App Store و iTunes وخدمات المحتوى الأخرى غير مضمنة.
USER-AGENT,*com.apple.mobileme.fmip1
USER-AGENT,*WeatherFoundation*
USER-AGENT,%E5%9C%B0%E5%9B%BE*
USER-AGENT,%E8%AE%BE%E7%BD%AE*
USER-AGENT,com.apple.geod*
USER-AGENT,com.apple.Maps
USER-AGENT,FindMyFriends*
USER-AGENT,FindMyiPhone*
USER-AGENT,FMDClient*
USER-AGENT,FMFD*
USER-AGENT,fmflocatord*
USER-AGENT,geod*
USER-AGENT,locationd*
USER-AGENT,Maps*
DOMAIN,api.smoot.apple.com
DOMAIN,captive.apple.com
DOMAIN,configuration.apple.com
DOMAIN,guzzoni.apple.com
DOMAIN,smp-device-content.apple.com
DOMAIN,xp.apple.com
DOMAIN-SUFFIX,ess.apple.com
DOMAIN-SUFFIX,push-apple.com.akadns.net
DOMAIN-SUFFIX,push.apple.com
DOMAIN,aod.itunes.apple.com
DOMAIN,mesu.apple.com
DOMAIN,api.smoot.apple.cn
DOMAIN,gs-loc.apple.com
DOMAIN,mvod.itunes.apple.com
DOMAIN,streamingaudio.itunes.apple.com
DOMAIN-SUFFIX,lcdn-locator.apple.com
DOMAIN-SUFFIX,lcdn-registration.apple.com
DOMAIN-SUFFIX,ls.apple.com
PROCESS-NAME,trustd
قد تُحدَّث هذه القواعد مع تحديثات Chute. يرجى مراجعة الوصف في البرنامج للحصول على أحدث القواعد الفرعية.
LAN
RULE-SET,LAN,DIRECT
تتضمن قواعد لعناوين IP في الشبكة المحلية (LAN) وللاحقة .local. يرجى ملاحظة أن مجموعة القواعد هذه ستشغل بحث DNS.
DOMAIN-SUFFIX,local
IP-CIDR,192.168.0.0/16
IP-CIDR,10.0.0.0/8
IP-CIDR,172.16.0.0/12
IP-CIDR,127.0.0.0/8
IP-CIDR,100.64.0.0/10
IP-CIDR,255.0.0.0/8
IP-CIDR,fc00::/7
IP-CIDR,::1/128
IP-CIDR,fe80::/10
مجموعة القواعد الخارجية
مجموعة قواعد من رابط http(s). يجب أن يكون ملف مجموعة القواعد ملفاً نصياً. كل سطر يحتوي على تعريف قاعدة بدون السياسة.
ملاحظة: لا تدعم ملفات مجموعات القواعد سوى أنواع القواعد البسيطة (غير المركّبة). أما القواعد المنطقية (AND/OR/NOT) و SCRIPT و DOMAIN-SET فتُسقط أسطرها. وسطر RULE-SET في ملف جُلب بـ
RULE-SET,<url>خامد: إذ لا يبقي المحلِّل إلا القيمتين المدمجتين SYSTEM و LAN، وحتى هاتان لا تُوسَّعان أبداً، فلا يطابق السطر شيئاً. أما الإشارات المتداخلة فتعمل فعلاً في حمولة[Rule Provider]وفي قسم[Ruleset]المضمّن. ويُقبل سطر CIDR مجرد (مثل1.2.4.0/24) كقاعدة IP-CIDR.
RULE-SET,https://example.com/my-rules.txt,Proxy
RULE-SET,https://example.com/my-rules.txt,Proxy,update-interval=86400
المعامل الاختياري update-interval هو أقصى عمر بالثواني تبلغه النسخة المنزّلة. لا يوجد مؤقت: أول مطابقة بعد أن تصبح النسخة أقدم من ذلك تنزّلها من جديد في الخلفية. وعند تحميل الإعدادات تُستخدم النسخة المخزّنة الأحدث من ذلك كما هي دون تنزيل، أما النسخة الأقدم من ذلك فلا تُستخدم، فيجب أن تُنزَّل المجموعة قبل أن تطابق. ومن دون update-interval تُحفظ النسخة المخزّنة ولا تُنزَّل المجموعة إلا حين لا توجد نسخة. وإذا كُتب no-resolve على سطر RULE-SET فإنه يسري على كل قاعدة مبنية على IP في المجموعة.
مثال على ملف مجموعة قواعد:
DOMAIN,exampleA.com
DOMAIN,exampleB.com
لاستخدام ملف محلي، عرّف مدخلاً في القسم [Rule Provider] مع معامل path= ثم أشر إليه بالاسم:
[Rule Provider]
my-rules = type=file, path=/path/to/my-rules.txt, format=native
[Rule]
RULE-SET,my-rules,Proxy
معاملات مزود القواعد: type (http أو file؛ يتطلب http وجود url=)، و behavior (classical لتعريفات القواعد، domain لمجموعة نطاقات، ipcidr لقائمة من عناوين CIDR المجردة — وهو قابل للاستخدام أيضاً مع مزودي Clash/mihomo، إذ تُقبل حمولاتهم ذات CIDR المجرد؛ الافتراضي classical)، و format (native — أو surge — لأسطر قواعد Chute، mihomo-yaml لحمولة YAML من نوع rule-provider الخاص بـ Clash/mihomo، sing-box-source — أو sing-box أو source — لمجموعة قواعد sing-box بصيغة source (JSON)؛ الافتراضي mihomo-yaml)، و interval (بالثواني، الافتراضي 86400). القيمة الموجبة لـ interval تنزّل الحمولة من جديد في كل مرة تُحمَّل فيها الإعدادات، ولا تُستخدم نسخة مخزّنة أقدم منها؛ و0 لا ينزّل إلا حين لا توجد نسخة مخزّنة؛ والقيمة السالبة لا تنزّل أبداً — ولا حتى لأجل update-interval في سطر RULE-SET — فيبقى المزوّد غير فعّال ما لم توجد نسخة مخزّنة. وأثناء عمل Chute لا يُحدَّث المزوّد إلا عبر سطر RULE-SET يسمّيه ويحمل update-interval: فأول مطابقة بعد أن تصبح النسخة المخزّنة أقدم من ذلك تجلبه من جديد من مصدر المزوّد نفسه. ولا يحتوي سطر [Rule Provider] على أي مفتاح يحمل قواعد، لذا يعطي type=inline هناك مزوّداً فارغاً؛ اكتب المجموعة المضمّنة في قسم [Ruleset <name>].
ينزّل policy=<name> الحمولة عبر تلك السياسة أو المجموعة — وهو proxy: في mihomo — كما في my-rules = type=http, url=https://example.com/rules.yaml, policy=Proxy؛ وللمجموعة يُستخدم اختيارها لحظة بدء التنزيل. بدونه، أو مع policy=DIRECT، تُجلب الحمولة مباشرة. واسمٌ غير معرّف يرفض التنزيل بدلاً من جلبها مباشرة.
يعرض GET /api/rules/providers في HTTP Control API كل مدخل في [Rule Provider] وكل قسم [Ruleset]: هل حُمِّل، وسبب عدم تحميله، وأي تحذيرات تحويل. ويعدّ rule_count فيه أسطر قسم [Ruleset] ويبقى 0 للمزوّد المنزَّل أو المأخوذ من ملف. ولا يظهر RULE-SET,<url> وDOMAIN-SET,<url> في القائمة؛ ولا يظهر فشل تنزيل أحدهما إلا في السجل.
على iPhone و Apple TV و Android هناك حد أقصى لحجم حمولة مزوّد القواعد — المنزَّلة أو المقروءة من ملف — لأن النفق لا يملك هناك من الذاكرة إلا القليل: 400 كيلوبايت لصيغة sing-box-source، وميغابايت واحد لبقية الصيغ. والحمولة التي تتجاوز الحد لا تُحمَّل، وتذكر حالة المزوّد السبب. أما RULE-SET,<url> وDOMAIN-SET,<url> فتُقرآن دون تحويلهما في الذاكرة ولا حد لهما. وسطح المكتب لا حد له، لذا لا تُحمَّل المجموعة المنشورة الكبيرة (مثل geosite/cn) كمزوّد إلا هناك. على هذه المنصات يُبقي فهرس مجموعات القواعد 24 اتصالاً بقاعدة البيانات مفتوحاً في الوقت نفسه على الأكثر (128 على سطح المكتب).
عندما تتعذر قراءة حمولة mihomo-yaml لكنها تبدو قائمة عادية من أسطر القواعد، تُقرأ بصيغة native بدلاً من ذلك، ويُسجَّل إشعار. ولا يسمّي سطرُ حمولة mihomo من نوع classical أي سياسة، لذا يُقرأ ما يلي قيمته على أنه معاملات: يُحتفظ بـ no-resolve، ويُسقَط أي معامل آخر — src في mihomo مثلاً. أما القاعدة المنطقية وقاعدة …-REGEX فتأخذان بقية السطر قيمةً لهما.
تُجرَّب الحمولة التي هي كائن JSON أولاً كمجموعة قواعد sing-box، ولذلك تُحمَّل أيضاً مجموعة قواعد sing-box المعلنة بالصيغة الافتراضية. في مجموعة قواعد sing-box، تصبح القاعدة التي كل مطابِقاتها من نوع واحد سطراً لكل قيمة. والأنواع هي: الوجهة (domain وdomain_suffix وdomain_keyword وdomain_regex وip_cidr وgeoip، وip_is_private الذي يصبح نطاقات العناوين الخاصة مع no-resolve)، ومنفذ الوجهة (port وport_range)، وعنوان المصدر (source_ip_cidr وsource_ip_is_private)، ومنفذ المصدر (source_port وsource_port_range)، ثم protocol وnetwork وprocess_name وprocess_path، ولكلٍّ منها نوعه. ويُتجاهل clash_mode: rule، لأن وضع القواعد هو الوضع الوحيد الذي يعمل به Chute؛ وأي قيمة أخرى لـ clash_mode تُسقط القاعدة. أما القاعدة التي تجمع أنواعاً مختلفة (نطاقاً ومنفذاً مثلاً) وقاعدة invert وقاعدة logical فلا يمكن أن تكون سطراً واحداً، فتُتخطّى وتُدرج في تحذيرات مجموعة القواعد. ولا يمكن قراءة الصيغ الثنائية المُجمَّعة. فمزوّد .srs الخاص بـ sing-box يُكتشف على أنه كذلك — من format=srs أو format=binary، أو من موقع ينتهي بـ .srs — ويبقى غير فعّال مع حالة تطلب توجيهه إلى صيغة source (.json) في sing-box. أما .mrs في mihomo فلا يُكتشف: إذ تفشل حمولته ببساطة في أن تُفكّ كنص، فتبقى مجموعة القواعد غير فعّالة تحت حالة فشل التنزيل العامة. وعلى macOS يعيد المستورد توجيه مجموعة القواعد الثنائية إلى حمولة source المجاورة حين يوفرها الناشر؛ أما على iOS وApple TV وAndroid فلا يفعل.
يمكن استخدام RULE-SET و DOMAIN-SET كقواعد فرعية داخل القواعد المنطقية AND/OR/NOT — فـ
NOT,((RULE-SET,cn_ip)),Proxyيعمل، وتُطابَق المجموعة المتداخلة بنفس مرشّح الحمولة المستخدم لو كُتبت وحدها.
مجموعة القواعد المضمّنة
يحتفظ قسم [Ruleset <name>] بمجموعة قواعد داخل ملف الإعدادات نفسه (بصيغة Surge). كل سطر فيه تعريف قاعدة بلا سياسة، كما في ملف مجموعة القواعد، وتشير القاعدة إلى القسم باسمه:
[Ruleset Streaming]
DOMAIN-SUFFIX,netflix.com
IP-CIDR,198.51.100.0/24,no-resolve
[Rule]
RULE-SET,Streaming,Proxy
يعمل القسم كمدخل [Rule Provider] بقيمة type=inline وformat=native، ويُحفظ مرة أخرى على شكل قسم. وجود مجموعتي قواعد بالاسم نفسه خطأ في الإعدادات.
يمكن للقسم المضمّن — مثل حمولة مزود القواعد — أن يتضمن RULE-SET,SYSTEM أو RULE-SET,LAN أو RULE-SET,<another inline section>، وتُوسَّع هذه عند تحميل القواعد حتى 8 مستويات. أما الإشارة التي تُكوِّن حلقة، أو التي تشير إلى مجموعة قواعد من نوع file أو http أو إلى مجموعة نطاقات أو DOMAIN-SET، فتُحذف مع تحذير.
مجموعة النطاقات
مجموعة النطاقات مشابهة لمجموعة القواعد الخارجية لكنها مخصصة لأسماء النطاقات، وتستخدم تنسيق ملف أكثر إيجازاً.
DOMAIN-SET,https://example.com/domains.txt,DIRECT
DOMAIN-SET,https://example.com/domains.txt,DIRECT,update-interval=86400
يجب أن يكون الحقل الأول بعد النوع رابط http(s). يحتوي ملف مجموعة النطاقات على نطاقات مجردة، واحد لكل سطر (وليس تعريفات قواعد):
# exact domain
example.com
# the domain and all of its subdomains
.example.org
+.example.net
الأسطر التي تبدأ بـ # أو // هي تعليقات.
هذه الصفحة ترجمة للنسخة الإنجليزية. في حال وجود اختلاف، يُعتمد على النسخة الإنجليزية.
ملاحظة: التطبيق لا يدعم اللغة العربية حاليًا.