خيارات متنوعة

[General]
ipv6 = true
loglevel = notify

skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local

tun-excluded-routes = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
tun-included-routes = 192.168.1.12/32

خيارات شائعة

تفعيل دعم IPv6 الكامل (الافتراضي: true)

ipv6 = true

loglevel (الافتراضي: warning)

loglevel = notify

واحد من none, fatal, warning, notify, info أو verbose. لا ينصح بتفعيل verbose في الاستخدام اليومي لأن هذا سيبطئ الأداء بشكل كبير.

skip-proxy

skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local

في نسخة iOS، يفرض هذا الخيار معالجة الاتصالات إلى نطاقات النطاق/IP هذه بواسطة Chute TUN، بدلاً من بروكسي Chute. في نسخة macOS، ستطبق هذه الإعدادات على النظام عند تفعيل "Set as System Proxy". يستخدم هذا الخيار لإصلاح مشاكل التوافق مع بعض التطبيقات.

  • لتحديد نطاق واحد، أدخل اسم النطاق - على سبيل المثال، apple.com.
  • لتحديد جميع المواقع على نطاق، استخدم نجمة قبل اسم النطاق - على سبيل المثال، *apple.com.
  • لتحديد جزء محدد من نطاق، حدد كل جزء - على سبيل المثال، store.apple.com.
  • لتحديد مضيفين أو شبكات بعناوين IP، أدخل عنوان IP محدد مثل 192.168.2.11 أو نطاق عناوين، مثل 192.168.2.* أو 192.168.2.0/24.

ملاحظة: إذا أدخلت عنوان IP أو نطاق عناوين، ستتمكن فقط من تجاوز البروكسي عند الاتصال بذلك المضيف باستخدام ذلك العنوان، وليس عند الاتصال بالمضيف باسم نطاق يُحلَّل إلى ذلك العنوان.


استماع خادم البروكسي

interface = 127.0.0.1
port = 8118
socks-interface = 127.0.0.1
socks-port = 8119

يتحكم interface / port في عنوان ومنفذ استماع خادم بروكسي HTTP (الافتراضي 127.0.0.1:8118). ويتحكم socks-interface / socks-port في خادم بروكسي SOCKS5 (الافتراضي 127.0.0.1:8119).

أسماء بديلة للتوافق: يُقبل doh-server كاسم بديل لـ doh؛ كما يُربط http-listen / socks5-listen (مثل 0.0.0.0:6152 أو [::]:6153 أو رقم منفذ مجرد) بإعدادات الواجهة/المنفذ أعلاه. كما أن مضيف استماع شامل (0.0.0.0 أو :: أو *) يعيّن أيضاً allow-wifi-access = true.


مصادقة البروكسي الوارد

http-auth = username:password

يتطلب من العملاء المصادقة قبل استخدام خوادم بروكسي HTTP و SOCKS5 الخاصة بـ Chute. يمكن تكرار السطر للسماح ببيانات اعتماد متعددة.


تجاوز طلبات النظام

bypass-system = true

عند التفعيل، تتجاوز الطلبات المرسلة بواسطة عمليات النظام معالجة Chute.

الافتراضي: true.


Real IP دائماً

always-real-ip = *.example.com, tracker.example.org

عندما يقدم Chute عناوين IP وهمية لاستعلامات DNS المختطفة (انظر hijack-dns)، تتم الإجابة دائماً على أسماء المضيفين المطابقة لهذه القائمة المفصولة بفواصل بعناوين IP الحقيقية المحللة بدلاً من ذلك. العلامات النجمية (wildcards) مدعومة.


مقاطعة الاتصالات الحالية

interrupt-exist-connections = true

عند التفعيل، سيؤدي تغيير السياسة المختارة في أي مجموعة سياسات (عبر URL Test، Fallback، Load Balance، SSID، أو الاختيار اليدوي) إلى إنهاء الاتصالات الحالية التي كانت تستخدم السياسة القديمة بشكل آمن. هذا يضمن استخدام الاتصالات للبروكسي المختار حديثاً فوراً بدلاً من البقاء على القديم.

يتم إغلاق كل اتصال متأثر بشكل آمن مع مهلة 3 ثوانٍ قبل الإغلاق القسري.

الافتراضي: false. هذا إعداد عام — يؤثر على جميع مجموعات السياسات.


Network Framework (macOS / tvOS)

network-framework = true

تفعيل Apple Network.framework للاتصالات الصادرة. يمكن أن يوفر استخدام Network.framework أداء أفضل وتكاملاً حديثاً مع مكدس TLS على المنصات المدعومة.

الافتراضي: true على macOS، false على iOS و tvOS.


استبعاد أسماء المضيفين البسيطة

exclude-simple-hostnames = true

عند التفعيل، تتجاوز الطلبات إلى أسماء المضيفين البسيطة (أسماء ذات تسمية واحدة بدون نقطة، مثال localhost) قواعد البروكسي وتحل محلياً. هذا يساعد في تجنب استعلامات DNS غير الضرورية لأسماء الشبكة المحلية.

على Chute Mac، تُفعّل عملية ترحيل تُنفَّذ مرة واحدة هذا الخيار افتراضياً عند التشغيل الأول؛ ويُحترم إيقافه صراحةً من قبل المستخدم.

الافتراضي: false.


تعطيل سجل قاعدة البيانات

disable-db-record = true

عند التفعيل، يتوقف Chute عن كتابة سجلات حركة المرور إلى قاعدة البيانات المحلية. هذا يمكن أن يحسن الأداء ويقلل استخدام التخزين، لكن سجل حركة المرور لن يكون متاحاً في Chute Dashboard.

الافتراضي: false.


menu-bar-show-speed = true

عند التفعيل، يعرض Chute Mac سرعة الرفع والتنزيل الحالية في شريط القوائم.

الافتراضي: false.


اختطاف خوادم DNS الأخرى

hijack-dns = 8.8.8.8:53

افتراضياً، يرجع Chute فقط عناوين IP وهمية لاستعلامات DNS المرسلة إلى عنوان DNS الخاص بـ Chute (198.18.0.2). الاستعلامات المرسلة إلى DNS القياسي سيتم توجيهها ببساطة.

بعض الأجهزة أو البرامج تستخدم دائماً خادم DNS مبرمج بشكل ثابت. (على سبيل المثال، Google Speakers تستخدم دائماً 8.8.8.8). يمكنك استخدام هذا الخيار لاختطاف الاستعلام للحصول على عنوان وهمي.

يمكنك استخدام hijack-dns = *:53 لاختطاف جميع استعلامات DNS.


المسارات المستبعدة

tun-excluded-routes = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12

يستطيع Chute VIF معالجة بروتوكولات TCP و UDP فقط. استخدم هذا الخيار لتجاوز نطاقات IP محددة للسماح لجميع حركات المرور بالمرور.

ملاحظة: هذا الخيار يعمل فقط لنوع Enhanced Mode VIF (utun) — ليس له تأثير عند استخدام نوع PacketTunnel VPN. الطلبات التي يعالجها خادم بروكسي Chute لن تتأثر. ادمج 'skip-proxy' و 'tun-excluded-routes' للتأكد من أن حركة HTTP معينة تتجاوز Chute.

قد يتسبب هذا الخيار في خطأ نظام ENOMEM (Cannot allocate memory). يبدو أنه خطأ في نظام iOS. يرجى عدم استخدام هذا الخيار إذا أمكن.


المسارات المضمنة

tun-included-routes = 192.168.1.12/32

افتراضياً، ستعلن واجهة Chute VIF عن نفسها كمسار افتراضي. لكن نظراً لأن واجهة Wi-Fi لديها مسار أصغر، قد لا تمر بعض حركات المرور عبر واجهة Chute VIF. استخدم هذا الخيار لإضافة مسار أصغر.

ملاحظة: هذا الخيار يعمل فقط لنوع Enhanced Mode VIF (utun) — ليس له تأثير عند استخدام نوع PacketTunnel VPN.


استكشاف البروتوكول

sniffing-enabled = true
sniffing-timeout = 100

يستطيع Chute اكتشاف البروتوكول الفعلي للاتصال عن طريق فحص البايتات الأولية. هذا يمكن قواعد مثل PROTOCOL,TLS,Proxy من العمل بشكل صحيح حتى للاتصالات الواردة غير HTTP.

sniffing-enabled (الافتراضي: false)

sniffing-enabled = true

تفعيل اكتشاف البروتوكول لاتصالات TCP.

sniffing-timeout (الافتراضي: 100ms)

sniffing-timeout = 200

الحد الأقصى للوقت بالمللي ثانية لانتظار البيانات الأولية لتحديد البروتوكول. قم بزيادة هذه القيمة إذا فشل اكتشاف البروتوكول على الاتصالات البطيئة.


حظر QUIC

block-quic = auto

يتحكم هذا الخيار في ما إذا كان Chute سيرفض حركة مرور QUIC المكتشفة، بما في ذلك HTTP/3. يعمل QUIC عبر UDP ولا يمكن فك تشفيره بواسطة HTTP MitM في Chute. قد يدفع رفض QUIC العملاء المتوافقين إلى إعادة المحاولة عبر TCP، مما يتيح معالجة البروكسي المعتمدة على TCP وفك تشفير HTTPS عند تفعيله.

القيمة السلوك
off عدم تطبيق حظر عام على QUIC (الافتراضي). تتبع حركة QUIC المكتشفة قواعد التوجيه العادية.
on رفض كل تدفق QUIC مكتشف، بما في ذلك حركة المرور الموجهة إلى DIRECT.
auto رفض QUIC المكتشف فقط عندما تكون سياسة الخروج النهائية بروكسي. يُسمح بحركة المرور الموجهة إلى DIRECT، وتظل حركة المرور الموجهة إلى REJECT مرفوضة وفقًا لتلك القاعدة.

بالنسبة إلى حركة المرور الداخلة عبر TUN، يرد Chute على تدفق QUIC المرفوض برسالة ICMP/ICMPv6 Port Unreachable، مما يسمح للعملاء المتوافقين بالعودة إلى TCP دون انتظار انتهاء مهلة QUIC.

يتم اكتشاف QUIC الخاص بـ block-quic تلقائيًا ولا يتطلب sniffing-enabled؛ إذ يتحكم sniffing-enabled في اكتشاف بروتوكولات TCP. استخدم قاعدة PROTOCOL,QUIC,... عند الحاجة إلى معالجة تدفقات QUIC منفردة بواسطة القواعد.


تجاوز TUN

bypass-tun = 192.168.0.0/16, 10.0.0.0/8

مشابه لـ skip-proxy، لكنه يعمل على مستوى توجيه TUN/VIF. الاتصالات إلى نطاقات IP هذه ستتجاوز واجهة TUN بالكامل وتذهب عبر مكدس شبكة النظام مباشرة.

ملاحظة: هذا الخيار يعمل فقط لنوع Enhanced Mode VIF (utun). ليس له تأثير عند استخدام نوع PacketTunnel VPN.


عرض صفحة خطأ للرفض

show-error-page-for-reject = true

عند التفعيل، يرجع Chute صفحة خطأ سهلة الاستخدام للطلبات المرفوضة بدلاً من إسقاط الاتصال ببساطة.


DNS المتفائل

optimistic-dns = false

عند التفعيل، يرجع Chute نتيجة DNS المخزنة مؤقتاً فوراً مع تحديث السجل في الخلفية. هذا يقلل زمن انتقال الاتصال على حساب احتمالية إرجاع سجلات DNS قديمة.

الافتراضي: true. عيّن optimistic-dns = false للتعطيل.


السماح بالوصول عبر Wi-Fi

allow-wifi-access = true

يسمح للأجهزة الأخرى على الشبكة نفسها بالوصول إلى منفذَي وكيل HTTP و SOCKS5 في Chute، عبر توسيع عنوان الربط للمستمعَين إلى 0.0.0.0. إعدادات نمط Surge — وكذلك تحويل allow-lan عند الاستيراد من sing-box — تحمل هذا الخيار وحده وتترك interface على قيمته الافتراضية 127.0.0.1، ولهذا يجب أن يوسّع الخيار عنوان الربط بنفسه.

هذا الخيار وكتابة interface بحرف بدل صريح طريقتان للتعبير عن النية نفسها، و Chute يأخذ الاتحاد بينهما: الإعداد الذي يكتب 0.0.0.0 أصلاً لا يتغيّر سلوكه. تغيير الخيار يعيد ربط المستمعَين، لذا يسري سحب الوصول عند إعادة التحميل لا عند التشغيل التالي.

هذه منافذ الوكيل، ولا تملك أي مصادقة ما لم تضبط http-auth. على شبكة لا تتحكم بها، اضبط بيانات الاعتماد أيضاً.


الإعدادات المدارة

#!MANAGED-CONFIG https://example.com/config.conf interval=86400 strict=false

الإعداد الذي يبدأ سطره الأول بترويسة #!MANAGED-CONFIG يُعاد جلبه تلقائيًا من عنوان URL. معلمات الترويسة وسلوك التحديث موثقة في الإعداد المُدار.


Replica / تسجيل حركة المرور

replica = true

مفتاح replica في [General] (replica = true) يفعّل تسجيل حركة المرور؛ بينما يتولى قسم [Replica] تصفية ما يعرضه Chute Dashboard، ومفاتيحه موثقة في Replica.


الوصول إلى المتحكم الخارجي (Chute Dashboard)

external-controller-access = password@0.0.0.0:6155

يبدأ خادم التحكم عن بعد المستخدم بواسطة Chute Dashboard. القيمة هي password@host:port؛ ويمكن اختيارياً أن يسبق كلمة المرور اسم مستخدم (user:password@host:port). على iOS، تفتح قناة USB مرافقة على port + 1 (وليس على macOS). طريقة الاتصال موصوفة في صفحة Chute Dashboard.


HTTP Control API و Web UI

[General]
external-http-controller = 127.0.0.1:9090
external-http-secret = your-secret-token
external-http-ui = true
external-http-cors = false

يوفر Chute HTTP Control API مدمج وواجهة إدارة ويب، مشابهة للوحات تحكم Clash و Surge. تعرض API حالة النواة، حركة المرور، الاتصالات، DNS، عناصر تحكم السياسات، وإدارة الإعدادات عبر نقاط نهاية REST.

external-http-controller (الافتراضي: معطل)

external-http-controller = 127.0.0.1:9090

عنوان ومنفذ خادم التحكم عبر HTTP. استخدم 127.0.0.1 للوصول المحلي فقط. الربط بأي عنوان غير محلي (مثل 192.168.1.5:9090) يتطلب ضبط external-http-secret صراحةً؛ وبدونه يرفض الخادم البدء ويسجّل ما ينقصه.

عنوان البدل (0.0.0.0 أو :: أو *) يُعدّ غير محلي في هذا الفحص، لأنه يستمع على كل الواجهات، وهو نقيض «المحلي فقط». والصيغ المقبولة هي 0.0.0.0:9090 و *:9090 (الشيء نفسه)، ولـ IPv6 [::]:9090 — أما :::9090 المجرّد فتُضاف له الأقواس تلقائياً؛ والعنوان الذي يتعذّر تحليله يُبلَّغ عنه كخطأ إعداد بدل ترك وحدة التحكم معطّلة بصمت. والنطاق 127.0.0.0/8 بأكمله يُعدّ محلياً، لا 127.0.0.1 وحده.

external-http-secret (الافتراضي: رمز مُولَّد)

external-http-secret = your-secret-token

رمز Bearer المستخدم لمصادقة الـ API. يجب أن تتضمّن الطلبات الترويسة Authorization: Bearer <secret> — ويُقبل الرمز في هذه الترويسة فقط، لا كمعامل استعلام، وتتم المقارنة بزمن ثابت. يعيد فشل المصادقة 401 مع {"ok": false, "error": {"code": "unauthorized", "message": "missing or invalid token"}}. المحمي هو مسارات /api/* وأسماء Clash البديلة فقط؛ أما أصول واجهة الويب الثابتة فلا تحتاج إلى رمز (ومع external-http-ui = false تختفي كلياً — فتعيد الصفحة 404).

عند غياب هذا المفتاح يولّد Chute رمزاً بدل التقديم دون مصادقة. يُكتب الرمز المُولَّد إلى ملف control-token في مجلد المشاركة الخاص بـ Chute — لا بجوار الإعداد: حاوية مجموعة التطبيقات على iOS و tvOS، ودليل البيانات الخاص بالتطبيق على Android — بصلاحيات للمالك وحده، ويُعاد استخدامه بعد إعادة التشغيل، وتعرضه التطبيقات — انظر فتح وحدة تحكم الويب. يمكن لواجهة التحكم أن تسلّم قاعدة بيانات الاتصالات، وسجلاتها تحمل كل رابط وترويسة واسم عملية شاهدها التشغيل، فواجهة تحكم مفتوحة ليست إعداداً افتراضياً معقولاً.

إن أردت التقديم دون مصادقة رغم ذلك، فقل ذلك صراحةً في الإعداد:

external-http-secret = none

وهذا مقبول على ربط محلي فقط. خارج المحلي لا يكفي none ولا غياب المفتاح: يرفض خادم التحكم البدء ويوضّح ما يحتاجه.

ملاحظة عند الترقية: إن كنت تعتمد على أن غياب external-http-secret يعني «بلا مصادقة»، فستبدأ سكربتاتك المحلية بتلقّي 401. اقرأ الرمز المُولَّد من التطبيق، أو اكتب external-http-secret = none للإبقاء على السلوك القديم عن قصد.

external-http-ui (الافتراضي: true)

external-http-ui = true

عند التفعيل، يقدم Chute واجهة ويب مدمجة عند عنوان المتحكم. توفر واجهة الويب لوحة معلومات عامة، إدارة الاتصالات، فحص DNS، مراقبة حركة المرور، عناصر تحكم السياسات، وتحرير الإعدادات. عيّن إلى false لإبقاء API مفعلة مع تعطيل واجهة المستخدم.

فتح وحدة تحكم الويب

تُقدَّم وحدة التحكم على عنوان خادم التحكم، ويستطيع كل تطبيق أن يسلّمك العنوان والرمز — بما في ذلك الرمز المُولَّد الذي لا سبيل آخر لقراءته:

  • Chute Mac: شريط القوائم ← فتح وحدة تحكم الويب، و نسخ رمز وحدة تحكم الويب. وفي نافذة تفاصيل الاتصال زر الطلبات والسجل يفتح وحدة التحكم أيضاً — صفحتها الرئيسية لا ذلك الاتصال.
  • Chute iOS: لوحة التحكم ← صف واجهة الويب ← فتح أو نسخ العنوان أو نسخ رمز الوصول.
  • Chute tvOS: في لوحة التحكم صف مستقل باسم Web UI Address تحت مفتاح واجهة الويب يعرض المضيف والمنفذ. وعند اختياره يظهر رمز QR إن كان المستمع متاحاً من أجهزة أخرى — ورمز تسجيل الدخول داخل الرمز لا على الشاشة — أما إن كانت وحدة التحكم مربوطة بعنوان محلي فيظهر شرح بدلاً منه، لأن وحدة تحكم محلية لا يمكن فتحها من هاتف.
  • Chute Android: تعرض لوحة التحكم العنوان كعنوان فرعي لمفتاح HTTP API، وصفاً مستقلاً باسم Generated access token يُنسخ بالنقر — ولا يظهر هذا الصف إلا حين تولّد النواة الرمز؛ أما السرّ الذي ضبطته بنفسك فلا يُعرض أبداً.

العنوان الناتج يحمل الرمز في معامل استعلام. تستهلكه الصفحة عند التحميل وتزيله من شريط العنوان، لذا فتح الرابط تسجيل دخول كامل ولا أحد مضطر لنسخ 32 خانة ست عشرية يدوياً.


external-http-cors (الافتراضي: false)

external-http-cors = true

تفعيل ترويسات CORS (Cross-Origin Resource Sharing) على استجابات API. مفيد عندما تحتاج واجهة الويب أو أدوات خارجية للوصول إلى API من أصل مختلف.

نقاط نهاية API:

الطريقة نقطة النهاية الوصف
GET /api/status حالة وقت التشغيل، المنافذ، مدة التشغيل
GET /api/traffic عدادات حركة المرور العامة ولكل سياسة
GET /api/connections الاتصالات النشطة الحالية
DELETE /api/connections/:id إغلاق اتصال
GET /api/connections/history سجلات الاتصالات التاريخية
GET /api/connections/processes إحصاءات الاتصالات لكل عملية
GET /api/connections/:id/request بيانات الطلب الملتقطة لاتصال
GET /api/connections/:id/response بيانات الاستجابة الملتقطة لاتصال
GET /api/dns سجلات ذاكرة DNS المؤقتة
DELETE /api/dns/cache مسح ذاكرة DNS المؤقتة
DELETE /api/dns/records/:domain إزالة سجل DNS واحد
GET /api/config الإعدادات الحالية
PUT /api/config إعادة تحميل الإعدادات
POST /api/config/validate تحليل إعدادات والإبلاغ عن أخطائها دون تحميلها
GET /api/policies مجموعات السياسات والاختيار الحالي
PUT /api/policies/:group تغيير اختيار مجموعة السياسات
PUT /api/mode تعيين نمط التوجيه الصادر
GET /api/features حالات مفاتيح الميزات
PUT /api/features/mitm تبديل MitM
PUT /api/features/record-traffic تبديل تسجيل حركة المرور
GET /api/rules القواعد المحمَّلة، وأي قواعد إعادة الكتابة قد عملت
POST /api/rules/match إلى أين سيُوجَّه طلب، دون إرساله
GET /api/logs أحدث مدخلات السجل
GET /api/loglevel مستوى السجل الحالي، والأقسام التي تُكتب
PUT /api/loglevel تغيير مستوى السجل أو الأقسام دون إعادة تشغيل
GET /api/health صحة المحرك: مرات الرفض، الأجيال، البصمة، الخروج السابق
GET /api/events لحظات جديرة بالانتباه في هذا التشغيل
GET /api/tailscale الحالة الحيّة لمحرك Tailscale
POST /api/diagnostics/ping فحص وصول عبر ICMP أو TCP
POST /api/diagnostics/dns-query حلّ نطاق عبر المحلِّل العامل
POST /api/diagnostics/egress-probe كشف عنوان الخروج الحالي
POST /api/diagnostics/url-test/:policy تشغيل اختبار زمن الاستجابة لسياسة
POST /api/diagnostics/bundle بناء أرشيف تشخيصي مُنقّح
GET /api/connections/export تصدير الاتصالات بصيغة HAR 1.2
GET /api/rewrites كل عائلات إعادة الكتابة/المحاكاة وقائمة مضيفي MitM
GET /api/rewrites/:family قواعد عائلة واحدة
POST /api/rewrites/:family إضافة قاعدة
DELETE /api/rewrites/:family/:id حذف قاعدة
DELETE /api/rewrites/:family إفراغ عائلة
GET /api/mitm/hosts المضيفون الذين يُفكّ تشفيرهم حالياً
POST /api/mitm/hosts إضافة مضيف
DELETE /api/mitm/hosts/:host حذف مضيف
DELETE /api/mitm/hosts إفراغ القائمة

ملاحظات نقاط النهاية:

  • GET /api/connections تقبل limit (عدد صحيح موجب، الافتراضي والحد الأقصى 1000) و cursor (تُرجع فقط الاتصالات التي يكون id فيها أكبر من المؤشر). يحمل حقل data في الاستجابة connections و total و page_size و has_more و — عند وجود صفحات إضافية — next_cursor.
  • GET /api/connections/history تقبل limit (الافتراضي 100، الحد الأقصى 1000) و cursor/before (مترادفان؛ تمريرهما معاً يُرفض).
  • GET /api/connections/:id/request و .../response تُرجعان {"connection_id": <id>, "data": "<base64>"}. الالتقاطات الأكبر من 2 MiB تُرجع 413.
  • GET /api/config تُرجع الإعدادات مع استبدال القيم الحساسة (http-auth و external-http-secret و ca-p12 و ca-passphrase ومفاتيح WireGuard وما شابه) بـ <redacted>لا تُعِد إرسال الناتج كما هو إلى PUT /api/config، وإلا كُتبت العناصر النائبة في الإعدادات حرفياً.
  • PUT /api/config تقبل إما JSON بالشكل {"configuration": "<full text>"} أو نص الإعدادات الخام كجسم للطلب (بحد 1 MB). عند النجاح تعيد النواة التحميل — أو تبدأ، إن لم تكن تعمل.
  • PUT /api/policies/:group تأخذ الاختيار من أول مفتاح موجود في الجسم من بين policy و name و selected و select؛ ويمكن أن تكون القيمة اسم سياسة أو فهرساً رقمياً كنص. اسم المجموعة الخاص GLOBAL يعيّن السياسة المختارة العامة.
  • PUT /api/mode تتطلب رقم JSON: {"mode": 0}0 القواعد، 1 مباشر، 2 بروكسي.
  • PUT /api/features/mitm و PUT /api/features/record-traffic تأخذان {"enabled": true}.
  • GET /api/logs تقبل since (ثوانٍ Unix)؛ يحتفظ المخزن المؤقت في الذاكرة بأحدث 1000 مدخلة، كل منها {timestamp, level, section, message}.
  • يبلّغ GET /api/health عمّا يحتفظ به المحرك ولماذا رفض آخر طلب، وكيف انتهى التشغيل السابق (clean أو unclean أو suspected_memory — انظر استكشاف الأخطاء).
  • يقدّم GET /api/events الحلقة الموجودة في الذاكرة؛ أما ?persisted=1 فيقرأ السجل المحفوظ لهذا التشغيل، ويجيب بـ available: false عند تعطيل التسجيل.
  • يجيب GET /api/tailscale بـ state: "idle" عندما لا يوجد قسم [Tailscale] — وهذه إجابة طبيعية لا خطأ.
  • تأخذ فحوص POST /api/diagnostics/* معاملاتها من سلسلة الاستعلام أو من جسم JSON، ومحدودة بعشر ثوانٍ، وتجيب مرة واحدة بالضبط. ويرفض url-test/:policy اسم سياسة غير معرّفة بدل قياس REJECT.
  • يجيب POST /api/rules/match عن إلى أين سيذهب الطلب، دون فتح اتصال. يقبل host (أو url يأخذ منه المضيف والمنفذ)، وport (الافتراضي 443)، واختيارياً ip وprotocol وprocess وprocess_path وsrc_ip وsrc_port وin_port وin_type وin_user وin_name وnetwork وssid وbssid وfrom_tun وuser_agent — والحقل غير المعروف يُرفض مع قائمة الحقول المقبولة بدل أن يُتجاهل. ويحمل الرد القاعدة matched (سطرها ونوعها والسياسة التي تسمّيها وresolved_policy التي تشير إليها المجموعة حالياً)، وpolicy، وneed_resolve، إضافة إلى rule_count وmatch_generation اللذين حُسب الجواب عليهما. ولأن النطاق يُطابَق مرتين — مرة بالاسم ومرة أخرى بعد معرفة العنوان — يحمل passes مدخلاً لكل مرور؛ وبدون ip لا يوجد إلا مرور ما قبل الحلّ، ويقول الرد ذلك في note. أضف explain=true للحصول على القواعد المرشّحة التي كان يمكن أن تطابق أيضاً، حتى 50 قاعدة، مع عدد مجموعات القواعد التي لم تُفتح.
  • يحلّل POST /api/config/validate إعدادات ثم يرميها: لا تتبنّى النواة العاملة منها شيئاً. أرسلها بصيغة {"configuration": "<full text>"} أو نصاً خاماً. والرد هو valid وerror_count وadvisory_count وrule_count وpolicy_count، وقائمة errors من {line, severity, content, error} — وseverity يفرّق بين سطر مرفوض وسطر قُبل مع تحفّظ، وcontent هو السطر المخالف بعد التنقيح، لأن سطر [Proxy] السيّئ يحمل عادةً كلمة المرور نفسها التي أفسدته. استخدمه قبل PUT /api/config الذي يعيد تشغيل الجلسة التي تنقّحها.
  • يبلّغ GET /api/loglevel بـ level الحالي وnslog_level وsections التي تُكتب في الملف، وavailable_levels / available_sections التي يمكنك ضبطها. ويقبل PUT (أو PATCH) الحقلين level وsections أو كليهما: وsections مصفوفة أسماء أقسام أو السلسلة "all"، والمصفوفة الفارغة مرفوضة — ولإيقاف التسجيل استخدم level بقيمة none. وتغيير المستوى بهذه الطريقة لا يعيد تشغيل الجلسة، وهذا هو المقصود: loglevel = verbose في الملف يحتاج إعادة تحميل، وإعادة التحميل تضيّع ما كنت تحاول رؤيته.
  • يبلّغ GET /api/rules أيضاً بـ rewrite_hits: كل قاعدة إعادة كتابة أو محاكاة عملت في هذا التشغيل، مع عدّادها. القاعدة التي لا تظهر هناك لم تطابق قط، وهذا هو التفسير المعتاد لإعادة كتابة تبدو بلا أثر. يتتبّع الجدول حتى 512 قاعدة مختلفة ويبلّغ عمّا زاد عليها في rewrite_hit_dropped_rules.
  • يأخذ POST /api/rewrites/:family الشكل {"rule": "<configuration line>"} — النص نفسه الذي تكتبه في الملف. والسطر الذي لا يمكن تحليله يُرفض بـ 400 بدل تخزينه كقاعدة لا تطابق أبداً. و :family واحدة من url-rewrite و header-rewrite و body-rewrite و mock. القواعد المضافة بهذه الطريقة تعيش في النواة العاملة ولا تُكتب في ملف الإعداد.
  • يعيد GET /api/connections/export?format=har وثيقة HAR 1.2، ويعيد POST /api/diagnostics/bundle ملف zip — وكلاهما ملف، لذا لا يُغلَّفان في {"ok": ..., "data": ...} خلافاً لبقية النقاط. ويقبل export المعاملات source (الافتراضي current، أو history) و limit (الافتراضي 100 والحد الأقصى 300) و ids و bodies=1 لتضمين الحمولات الملتقطة. ويحمل كل مُدخل كائن _kl بما لا يوجد له حقل في HAR: السياسة المختارة، والقاعدة المطابِقة، وعمليات إعادة الكتابة التي عملت.

مثال — قراءة الحالة، ثم تبديل مجموعة سياسات:

curl -H "Authorization: Bearer your-secret-token" http://127.0.0.1:9090/api/status
{"ok":true,"data":{"running":true,"outbound_mode":0,"mitm":false, ...}}

curl -X PUT -H "Authorization: Bearer your-secret-token" \
     -d '{"policy": "ProxyB"}' http://127.0.0.1:9090/api/policies/MainGroup
{"ok":true,"data":{"outbound_mode":0,"selectable_groups":[...], ...}}

مثال — اسأل إلى أين سيذهب الطلب قبل إرساله:

curl -X POST -H "Authorization: Bearer your-secret-token" \
     -d '{"url": "https://api.example.com/v1/orders", "explain": true}' \
     http://127.0.0.1:9090/api/rules/match
{"ok":true,"data":{"policy":"MainGroup","matched":{"rule":"DOMAIN-SUFFIX,example.com,MainGroup", ...}, ...}}

ضيّق السجل إلى نظام فرعي واحد أثناء إعادة إنتاج المشكلة، دون إعادة تشغيل الجلسة:

curl -X PUT -H "Authorization: Bearer your-secret-token" \
     -d '{"level": "verbose", "sections": ["MitM", "DNS"]}' \
     http://127.0.0.1:9090/api/loglevel

ملاحظة: هذه الميزة معطلة افتراضياً. تستخدم كل استجابة الغلاف {"ok": true, "data": {...}} عند النجاح و {"ok": false, "error": {"code": "...", "message": "..."}} عند الأخطاء؛ وأجسام الطلبات محدودة بـ 1 MB.

تقبل نقاط النهاية PUT أيضاً PATCH. وتتوفر مسارات بديلة متوافقة مع Clash للوحات التحكم الخارجية: /version و /traffic و /connections و /configs و /proxies و /rules — المسارات قابلة للوصول، لكن الاستجابات تستخدم غلاف Chute وأسماء حقوله بدلاً من مخطط Clash (تُرجع /version فقط {"name", "run_id"})، لذا لن تعمل لوحات تحكم Clash مباشرةً دون تعديل.


بصمة العميل

global-client-fingerprint = chrome

يحدد بصمة عميل TLS لكل سياسة لا تحمل fingerprint خاصة بها. قيمة السياسة نفسها تسبق دائماً، لذا هذا افتراضي وليس تجاوزاً.

القيم المدعومة هي chrome و firefox و safari و ios، بالإضافة إلى edge و 360 و qq و android و random التي تُعامل جميعها كـ Chrome. القيمة غير المعروفة تُتجاهل وتُستخدم حزمة TLS الخاصة بالنظام.

الافتراضي: فارغ، أي حزمة TLS الخاصة بالنظام. تقرأه فقط سياسات Trojan وVMess وVLESS وShadowTLS.

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-05 01:11:40

هذه الصفحة ترجمة للنسخة الإنجليزية. في حال وجود اختلاف، يُعتمد على النسخة الإنجليزية.

ملاحظة: التطبيق لا يدعم اللغة العربية حاليًا.

results matching ""

    No results matching ""