پرش به مطلب اصلی

قواعد مسیریابی

قواعد مسیریابی (Response Rules, SRR) — مجموعه مرتبی از قواعد است که پنل بر اساس آن‌ها تصمیم می‌گیرد به درخواست اشتراک چه پاسخی بدهد. تصمیم بر اساس هدرهای HTTP درخواست گرفته می‌شود: می‌توان به کلاینت فرمت دیگری، قالب دیگری یا هدرهای دیگری داد، یا حتی کاملاً رد کرد.

توجه

قواعد در سمت پنل کار می‌کنند و به نودها نمی‌رسند. مسیریابی خود Xray (routing.rules) در پروفایل تنظیمات تعیین می‌شود و به نودها اعمال می‌گردد — ببینید پروفایل‌های تنظیمات.

کجا تنظیم می‌شوند​

قواعد در تنظیمات اشتراک به‌صورت شیء responseRules نگه‌داری می‌شوند و در بخش مدیریت قواعد ویرایش می‌شوند:

{
"version": "1",
"settings": { "disableSubscriptionAccessByPath": false },
"rules": []
}

disableSubscriptionAccessByPath: true دسترسی به اشتراک از مسیرهای اضافی (/json، /mihomo، /stash) را می‌بندد.

ترتیب اعمال​

قواعد از بالا به پایین بررسی می‌شوند. نخستین قاعده مناسب فعال می‌شود و بررسی در همان‌جا می‌ایستد. قواعد با enabled: false نادیده گرفته می‌شوند. اگر هیچ قاعده‌ای مناسب نباشد، درخواست مسدود می‌شود — به همین دلیل اغلب قاعده‌ای بدون شرط را در آخر می‌گذارند که اشتراک معمولی را برمی‌گرداند.

عملگرها و شرط‌ها​

operator قاعده تعیین می‌کند شرط‌ها چگونه ترکیب شوند:

عملگرچه زمانی قاعده مناسب است
ANDهمه شرط‌ها مناسب باشند
ORحداقل یکی از شرط‌ها مناسب باشد

آرایه خالی conditions همیشه مناسب است — این «قاعده پیش‌فرض» است. هر شرط یک هدر را بررسی می‌کند:

{
"headerName": "user-agent",
"operator": "CONTAINS",
"value": "happ",
"caseSensitive": false
}
عملگر شرطبررسی
EQUALS, NOT_EQUALSتطابق دقیق
CONTAINS, NOT_CONTAINSوجود زیررشته
STARTS_WITH, NOT_STARTS_WITHآغاز رشته
ENDS_WITH, NOT_ENDS_WITHپایان رشته
REGEX, NOT_REGEXعبارت باقاعده

نام هدرها به بزرگی و کوچکی حروف حساس نیستند، چند مقدار از یک هدر با کاما به هم چسبانده می‌شوند و هدر غایب یعنی شرط برآورده نشده است.

انواع پاسخ​

responseType تعیین می‌کند در صورت تطابق کلاینت چه چیزی دریافت کند:

نوعپاسخ
XRAY_JSON, XRAY_BASE64, MIHOMO, CLASH, STASH, SINGBOXاشتراک در فرمت موردنیاز
BROWSERصفحه HTML برای مرورگر
BLOCKرد، HTTP 403
STATUS_CODE_404, STATUS_CODE_451رد با کد 404 یا 451
SOCKET_DROPقطع اتصال

تغییرهای پاسخ​

بلوک responseModifications پاسخ را دقیق‌تر می‌کند:

  • subscriptionTemplate — نام قالب؛ اولویت آن از تنظیمات گروه خارجی بالاتر است؛
  • headers و applyHeadersToEnd — افزودن هدرها، در صورت نیاز در انتهای انتها، روی بقیه؛
  • ignoreHostXrayJsonTemplate — استفاده نکردن از قالب Xray JSON هاست؛
  • ignoreServeJsonAtBaseSubscription — دادن base64 حتی به کلاینت‌هایی که معمولاً JSON دریافت می‌کنند؛
  • disableHwidCheck — بررسی نکردن HWID برای این قاعده؛
  • additionalExtendedClientsRegex — گسترش فهرست کلاینت‌های «توسعه‌یافته»؛
  • excludeHostsByTags — حذف هاست‌های دارای برچسب‌های مشخص از ارائه؛
  • respondWithRemarks — جایگزینی بدنه پاسخ با متن.
نکته

سناریوی معمول: دادن قالب JSON جداگانه به کلاینت‌های Android و BLOCK به اپلیکیشن‌های قدیمی. نمونه چنین قاعده‌ای را پنل هنگام ویرایش نشان می‌دهد.

خطر

قاعده‌ای بدون شرط و با responseType: BLOCK همه کسانی را که به آن برسند مسدود می‌کند. قواعد را به ترتیب کاهش دقت بچینید و پس از هر ویرایش اشتراک را بررسی کنید.

گام‌های بعدی​