قواعد الاستجابة
إذا لم تكن متأكدًا من التغييرات التي تجريها، يُرجى المتابعة بحذر. قد تؤدي التعديلات غير الصحيحة إلى تعطيل النظام.
قواعد الاستجابة (SRR) هي مجموعة مرتبة (من الأعلى إلى الأسفل؛ إذا انطبقت القاعدة، تتوقف عملية التقييم) من قواعد JSON يقيّمها الخادم الخلفي لطلبات الاشتراك الواردة.
ستتجاوز قواعد الاستجابة تكوين الفرق الخارجية.
إنشاء قاعدة استجابة مخصصة
لنقم بإنشاء قاعدة استجابة مخصصة تمنح مستخدم Android الذي يستخدم تطبيق Happ قالبًا مخصصًا وترويسة مخصصة.
يجب أن تبدو كالتالي:
- يطلب المستخدم اشتراكًا
- يتعرف Remnawave على أنه يستخدم Happ على Android.
- يستجيب Remnawave بقالب
Happ Androidمخصص ويضيف ترويسة مخصصةHappTheBestAppOnTheWorld.
إليك كيف يمكن أن تبدو القاعدة:
{
"name": "Happ Android",
"description": "Serve custom JSON for Android",
"enabled": true,
"operator": "AND", // Both "user-agent" and "x-device-os" must be matched
"conditions": [
{
"caseSensitive": false,
"headerName": "user-agent",
"operator": "CONTAINS",
"value": "happ"
},
{
"caseSensitive": false,
"headerName": "x-device-os",
"operator": "EQUALS",
"value": "android"
}
],
"responseType": "XRAY_JSON",
"responseModifications": {
"subscriptionTemplate": "Happ Android", // Serve the custom Template
"headers": [ // Serve the custom headers
{
"key": "x-provider-id",
"value": "HappTheBestAppOnTheWorld"
}
]
}
}
rules
كل قاعدة عبارة عن كائن يحتوي على الحقول التالية:
-
name(سلسلة نصية) — مطلوب؛ 1..50 حرف"name": "Block Legacy Clients" -
description(سلسلة نصية) — اختياري؛ بحد أقصى 250 حرف"description": "Blocks requests from legacy clients" -
enabled(قيمة منطقية) — مطلوب
يتحكم في ما إذا كانت القاعدة نشطة. عندما تكونfalse، يتم تخطي القاعدة أثناء التقييم."enabled": true -
operator(تعداد) — مطلوب؛ANDأوOR"operator": "AND" // Rule matches only if ALL conditions match
"operator": "OR" // Rule matches if ANY condition matches -
conditions(مصفوفة)
قائمة الشروط التي سيتم تقييمها."conditions": [] // Empty = match everything (use for fallback rules) -
responseType(تعداد) — مطلوب
يحدد الاستجابة المرسلة عند تطابق القاعدة:النوع الوصف MIHOMOإعداد Mihomo YAML CLASHإعداد Clash YAML STASHإعداد Stash YAML SINGBOXإعداد Sing-box JSON XRAY_JSONإعداد Xray JSON XRAY_BASE64إعداد Xray مشفر بـ Base64 BROWSERصفحة HTML للمتصفحات BLOCKHTTP 403 محظور STATUS_CODE_404HTTP 404 غير موجود STATUS_CODE_451HTTP 451 غير متاح لأسباب قانونية SOCKET_DROPإسقاط اتصال المقبس -
responseModifications(مصفوفة) - اختياري
تعديلات إضافية لتطبيقها على الاستجابة. يمكن استخدامها لتقديم قالب أو ترويسات مخصصة.subscriptionTemplate(سلسلة نصية) - اختياري
تحديد قالب معين لتقديمه إذا تطابقت القاعدة.headers(مصفوفة) - اختياري
الاستجابة بترويسة مخصصة.key(سلسلة نصية) - اختياري
اسم الترويسة.value(سلسلة نصية) - اختياري
قيمة الترويسة.
applyHeadersToEnd(قيمة منطقية) - اختياري
بشكل افتراضي، تُضاف الترويسات عند تشكيل الاستجابة. في بعض الحالات، قد تُستبدل الترويسات المحددة في SRR بترويسات من أجزاء أخرى من النظام (مثل الفرق الخارجية). إذا قمت بتعيين هذه العلامة إلىtrue، ستُضاف ترويسات SRR في النهاية، قبل إرسال الاستجابة مباشرة. في هذه الحالة، قد تتجاوز ترويسات SRR ترويسات الأقسام الأخرى.ignoreHostXrayJsonTemplate(قيمة منطقية) - اختياري
قد يمتلك كل مضيف قالب Xray Json الخاص به. إذا قمت بتعيين هذه العلامة إلىtrue، سيتم استخدام قالب Xray Json المحدد في SRR. وسيتم تجاهل قالب Xray Json الخاص بالمضيف.ignoreServeJsonAtBaseSubscription(قيمة منطقية) - اختياري
في سيناريوهات معينة قد ترغب في تقديمXRAY_BASE64لتطبيقات العميل التي تتعرف عليها اللوحة على أنها قادرة على قبولXRAY_JSONعندما يكونServe JSON at Base Subscriptionممكّنًا.
إذا قمت بتعيين هذه العلامة إلىtrue، سيتم تجاهل إعدادServe JSON at Base Subscription(يُعيَّن إلىfalse).
"responseType": "SINGBOX",
"responseModifications": {
"applyHeadersToEnd": true,
"headers": [
{
"key": "X-Custom-Header",
"value": "CustomValue"
}
],
"ignoreHostXrayJsonTemplate": true,
"ignoreServeJsonAtBaseSubscription": true,
"subscriptionTemplate": "Singbox Legacy"
}
rules.conditions
-
headerName(سلسلة نصية) — مطلوب
ترويسة HTTP المراد فحصها. يجب أن تتوافق مع RFC 7230."headerName": "user-agent" // Client app user-agent -
operator(تعداد) — مطلوب
عملية المقارنة التي سيتم تنفيذها:المعامل الوصف EQUALSتطابق تام NOT_EQUALSعدم تطابق تام CONTAINSوجود سلسلة فرعية NOT_CONTAINSغياب سلسلة فرعية STARTS_WITHتطابق البادئة NOT_STARTS_WITHغياب البادئة ENDS_WITHتطابق اللاحقة NOT_ENDS_WITHغياب اللاحقة REGEXتعبير نمطي NOT_REGEXتعبير نمطي عكسي -
value(سلسلة نصية) — مطلوب؛ 1..255 حرف
القيمة التي ستتم المقارنة بها مقابل قيمة الترويسة."value": "^sfa|sfi|sfm|sft|karing|singbox|rabbithole" -
caseSensitive(قيمة منطقية) — مطلوب"caseSensitive": true // The value is compared as is
"caseSensitive": false // The value is lowercased before comparison
يمكنك بسهولة الاستجابة بقوالب مختلفة لأنظمة تشغيل مختلفة.
في المثال أدناه، سيحصل مستخدمو iOS على JSON من نوع Happ iOS، وسيحصل مستخدمو Android على JSON من نوع Happ Android.
{
"name": "Happ Android",
"description": "Serve custom JSON for Android",
"enabled": true,
"operator": "AND",
"conditions": [
{
"caseSensitive": false,
"headerName": "user-agent",
"operator": "CONTAINS",
"value": "happ"
},
{
"caseSensitive": false,
"headerName": "x-device-os",
"operator": "CONTAINS",
"value": "android"
}
],
"responseType": "XRAY_JSON",
"responseModifications": {
"subscriptionTemplate": "Happ Android"
}
},
{
"name": "Happ iOS",
"description": "Serve custom JSON for iOS",
"enabled": true,
"operator": "AND",
"conditions": [
{
"caseSensitive": false,
"headerName": "user-agent",
"operator": "CONTAINS",
"value": "happ"
},
{
"caseSensitive": false,
"headerName": "x-device-os",
"operator": "CONTAINS",
"value": "ios"
}
],
"responseType": "XRAY_JSON",
"responseModifications": {
"subscriptionTemplate": "Happ iOS"
}
}
- أسماء الترويسات غير حساسة لحالة الأحرف
"user-agent" === "User-Agent" === "USER-AGENT" - إذا كانت للترويسة قيم متعددة، سيتم دمجها في سلسلة نصية واحدة مفصولة بفواصل.
- القيمة المفقودة للترويسات تؤدي إلى تخطي القاعدة.