قواعد مسیریابی
قواعد مسیریابی (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 همه کسانی را که به آن برسند مسدود
میکند. قواعد را به ترتیب کاهش دقت بچینید و پس از هر ویرایش اشتراک را بررسی
کنید.
گامهای بعدی
- قالبها — چه چیزی در پاسخ درج میشود.
- گروهها — اولویت قواعد بر گروههای خارجی.
- هاستها — برچسبهای هاست برای
excludeHostsByTags. - پروفایلهای تنظیمات — مسیریابی Xray روی نودها.