لینک‌های عمیق

با لینک‌های عمیق throne:// تنها با یک کلیک، اشتراک اضافه کنید، پروفایل به اشتراک بگذارید و پروفایل مسیریابی وارد کنید.

Throne یک اسکیم URL سفارشی به نام throne:// را در سیستم‌عامل شما ثبت می‌کند. یک لینک عمیق (Deep Link) در واقع یک نشانی throne:// است که به یک نمونهٔ در حال اجرا (یا هنوز اجرانشده) از Throne می‌گوید عملی را انجام دهد — مانند افزودن یک اشتراک یا وارد کردن یک پروفایل مسیریابی — بدون اینکه کاربر مجبور باشد مقادیر را دستی در پنجره‌ها وارد کند.

این قابلیت برای وب‌سایت ارائه‌دهندگان، صفحات پشتیبانی، کدهای QR، اسکریپت‌ها یا صرفاً به‌اشتراک‌گذاری یک پروفایل مسیریابی با دوستان بسیار کاربردی است.

لینک‌هایی که یک اشتراک یا پروفایل مسیریابی اضافه می‌کنند، نخست از شما تأیید می‌گیرند: Throne دقیقاً آنچه را که اضافه خواهد شد نشان می‌دهد و منتظر تأیید شما می‌ماند. تنها استثنا دستور add است که یک پروفایل پراکسی را بدون پرسش، مستقیم به گروه جاری اضافه می‌کند — درست مانند جای‌گذاری یک لینک vless://.

Throne چگونه یک لینک عمیق را دریافت می‌کند

اسکیم throne:// به‌طور خودکار در نخستین اجرای Throne، روی ویندوز، لینوکس و مک‌اواس ثبت می‌شود. از آنجا که Throne به‌صورت یک آرشیو قابل حمل و بدون نصب‌کننده عرضه می‌شود، این ثبت در هنگام راه‌اندازی انجام می‌شود، به دسترسی مدیر نیازی ندارد و اگر پوشهٔ برنامه را جابه‌جا یا به‌روزرسانی کنید، به‌صورت خودکار خود را ترمیم می‌کند.

پس از ثبت، Throne یک لینک عمیق را از هر یک از این منابع می‌پذیرد:

  • کلیک روی یک لینک throne:// در مرورگر، برنامهٔ گفت‌وگو یا یک سند — سیستم‌عامل آن را به Throne می‌سپارد.
  • برنامه (Program) → افزودن پروفایل از کلیپ‌بورد (Add profile from clipboard) — که در منوی سرور (Server) نیز هست و میان‌بر Ctrl+V دارد — لینک را از کلیپ‌بورد شما می‌خواند.
  • کشیدن و رها کردن (Drag & Drop) متن لینک روی پنجرهٔ اصلی.
  • ارسال آن به‌عنوان آرگومان اجرا در خط فرمان (ویندوز/لینوکس). در مک‌اواس، سیستم‌عامل نشانی را مستقیماً به برنامهٔ در حال اجرا می‌سپارد.

اگر Throne از پیش باز باشد، لینک به پنجرهٔ موجود سپرده می‌شود و نمونهٔ دومی اجرا نمی‌شود.

ساختار لینک

همهٔ لینک‌های عمیق ساختار یکسانی دارند — یک دستور، یک اسلش و یک محتوای Base64:

throne://<command>/<base64_payload>
  • دستور به حروف بزرگ و کوچک حساس نیست (throne://AddSub/... و throne://addsub/... یکسان‌اند).
  • اسلش و محتوا الزامی‌اند. لینکی که پس از دستور، /<payload> نداشته باشد بی‌صدا نادیده گرفته می‌شود — نه اتفاقی می‌افتد و نه چیزی در لاگ ثبت می‌شود.
  • هیچ پارامتر پرس‌وجویی (query parameter) وجود ندارد. هر چیزی که لینک حمل می‌کند درون محتوای Base64 قرار دارد.
دستورکاربردتأیید می‌گیرد؟
addsubافزودن یک گروه اشتراک و به‌روزرسانی فوری آنبله
routeوارد کردن پروفایل مسیریابی‌ای که درون لینک قرار داردبله
remoterouteافزودن یک یا چند پروفایل مسیریابی راه‌دور با نشانی (URL)بله
addافزودن یک پروفایل پراکسی به گروه جاریخیر

یک دستور ناشناخته نادیده گرفته می‌شود و با پیام Ignored deeplink with unknown command در لاگ ثبت می‌گردد.

از کدام الفبای Base64 استفاده کنیم

این نکته مهم است و برای هر دستور فرق می‌کند:

دستورکدگذاری پذیرفته‌شده
addsubفقط Base64 استاندارد (الفبای + و /). نویسه‌های = پایانی را نگه دارید.
remoterouteفقط Base64 استاندارد (الفبای + و /). نویسه‌های = پایانی را نگه دارید.
routeBase64 سازگار با URL، Base64 استاندارد، یا حتی JSON خام و کدگذاری‌نشده.
addتوسط خود Throne تولید می‌شود — بخش add را ببینید.

برای addsub و remoteroute، محتوای سازگار با URL که شامل - یا _ باشد رمزگشایی نمی‌شود و لینک رد می‌گردد. با الفبای استاندارد کدگذاری کنید.

addsub — افزودن اشتراک

یک گروه اشتراک جدید اضافه می‌کند و بی‌درنگ آن را به‌روزرسانی می‌کند.

throne://addsub/<base64>

محتوا، Base64ِ یک خط واحد است:

<subscription_url>[#<group_name>]
بخشالزامیتوضیحات
<subscription_url>بلهنشانی اشتراک.
#<group_name>خیرنام گروه جدید که به‌شکل فرگمنت (fragment) نشانی نوشته می‌شود. در صورت حذف، نام میزبان (host) نشانی اشتراک به‌کار می‌رود.

به‌روزرسانی خودکار بخشی از لینک نیست. Throne در پنجرهٔ تأیید دربارهٔ آن می‌پرسد و تیک Auto update به‌صورت پیش‌فرض زده شده است.

مثال

برای افزودن https://example.com/sub/abc123 با نام گروه MyProvider، این متن را Base64 کنید:

https://example.com/sub/abc123#MyProvider

و نتیجه را به‌عنوان محتوا قرار دهید:

throne://addsub/aHR0cHM6Ly9leGFtcGxlLmNvbS9zdWIvYWJjMTIzI015UHJvdmlkZXI=

Throne از شما تأیید می‌خواهد:

این اشتراک اضافه شود؟

نام: MyProvider آدرس (URL): https://example.com/sub/abc123

☑ به‌روزرسانی خودکار

پس از تأیید، گروه ساخته می‌شود و اشتراک بی‌درنگ دریافت می‌گردد.

چون کل متن با Base64 کدگذاری می‌شود، نیازی به percent-encode کردن نشانی اشتراک نیست — نویسه‌های ?، & و / آن به‌سلامت درون محتوا پنهان می‌مانند. اما اگر نام گروه شامل فاصله یا نویسه‌های ویژه است، آن را percent-encode کنید (یک فاصله به %20 تبدیل می‌شود).

route — وارد کردن پروفایل مسیریابی

یک پروفایل مسیریابی کامل (خروجی پیش‌فرض به‌همراه قوانین) را که درون لینک قرار دارد وارد می‌کند.

throne://route/<base64>

محتوا، پروفایل مسیریابی کدگذاری‌شده با Base64 است. آنچه خود Throne تولید می‌کند Base64 سازگار با URL (با یا بدون padding) است؛ Base64 استاندارد و JSON خام و کدگذاری‌نشده نیز پذیرفته می‌شوند.

چگونه یک لینک route بسازیم

معمولاً این لینک‌ها را دستی نمی‌سازید — Throne آن‌ها را برای شما تولید می‌کند:

  1. به منوی مسیریابی (Routing Menu) → تنظیمات مسیریابی (Routing Settings) بروید.
  2. پروفایل مسیریابی‌ای را که می‌خواهید به اشتراک بگذارید انتخاب کنید.
  3. Ctrl+C را فشار دهید (یا از گزینهٔ خروجی‌گرفتن استفاده کنید).

Throne یک لینک آمادهٔ اشتراک‌گذاری به‌شکل throne://route/... را در کلیپ‌بورد شما کپی می‌کند. آن را برای هر کسی بفرستید؛ وقتی آن را باز کند (یا در تنظیمات مسیریابی با Ctrl+V جای‌گذاری کند، یا از افزودن پروفایل از کلیپ‌بورد استفاده کند)، Throne نام پروفایل و هرگونه یادداشت را نشان می‌دهد و پس از تأیید، آن را وارد می‌کند.

درون محتوا چیست

محتوای Base64 به یک پوشش JSON کوچک که پروفایل را توصیف می‌کند رمزگشایی می‌شود:

{
  "kind": "throne-route-profile",
  "v": 1,
  "name": "Bypass LAN",
  "default_outbound": "proxy",
  "rules": []
}

بنابراین لینک به این شکل است (محتوا همان Base64 آن JSON است):

throne://route/eyJraW5kIjoidGhyb25lLXJvdXRlLXByb2ZpbGUiLCJ2IjoxLCJuYW1lIjoiQnlwYXNzIExBTiIsImRlZmF1bHRfb3V0Ym91bmQiOiJwcm94eSIsInJ1bGVzIjpbXX0

پروفایل‌هایی که از یک بخش route دست‌نویس ساخته شده‌اند، به‌جای rules دارای "raw": true و یک شیء route هستند؛ Throne هنگام وارد کردن، ارجاع‌های خروجی را بر اساس نام دوباره نگاشت می‌کند و هر چیزی را که نتوانسته پیدا کند به شما اطلاع می‌دهد.

Throne همین محتوا را هنگام وارد کردن از کلیپ‌بورد به‌صورت JSON ساده یا Base64 خام نیز می‌شناسد؛ بنابراین لینکی که از دستگاهی دیگر کپی شده، حتی اگر در مسیر پیشوند throne://route/ خود را از دست بدهد، باز هم کار می‌کند. آرایهٔ سادهٔ قدیمی از قوانین نیز پذیرفته می‌شود — در ویرایشگر باز می‌شود تا برای آن نام و خروجی پیش‌فرض تعیین کنید.

remoteroute — افزودن پروفایل‌های مسیریابی راه‌دور

یک یا چند پروفایل مسیریابی راه‌دور (Remote) را با نشانی (URL) اضافه می‌کند. برخلاف route که یک پروفایل کامل را درون لینک جای می‌دهد، remoteroute نشانی پروفایل‌هایی را حمل می‌کند که روی اینترنت میزبانی شده‌اند: Throne قوانین را از هر نشانی دریافت می‌کند و در صورت اجازهٔ شما، آن‌ها را به‌طور خودکار به‌روز نگه می‌دارد. این همان روشی است که یک ارائه‌دهنده با آن یک پروفایل مسیریابیِ نگهداری‌شده را در اختیار شما می‌گذارد — پروفایلی که بدون نیاز به وارد کردن دوباره، پیوسته بهبود می‌یابد.

throne://remoteroute/<base64>

محتوا، Base64ِ یک فهرست سادهٔ نشانی‌ها که با خط جدید از هم جدا شده‌اند است — نه JSON:

<profile_url_1>[#<name_1>]
<profile_url_2>[#<name_2>]
...
بخشالزامیتوضیحات
<profile_url>بلهیک نشانی http:// یا https:// به پروفایل مسیریابی. خط‌هایی که نشانی معتبر http(s) نیستند نادیده گرفته می‌شوند.
#<name>خیرنام نمایشی پروفایل که به‌شکل فرگمنت نشانی نوشته می‌شود. در صورت حذف، نام میزبان (host) نشانی به‌کار می‌رود.

به‌روزرسانی خودکار برای هر ورودی جداگانه نیست. Throne یک‌بار در پنجرهٔ تأیید می‌پرسد و پاسخ شما روی همهٔ پروفایل‌های آن لینک اعمال می‌شود. تیک Auto update به‌صورت پیش‌فرض زده شده است.

مثال

این فهرست دوخطی را Base64 کنید:

https://example.com/routes/bypass-iran.json#BypassIran
https://example.com/routes/ads.json

و نتیجه را به‌عنوان محتوا قرار دهید:

throne://remoteroute/aHR0cHM6Ly9leGFtcGxlLmNvbS9yb3V0ZXMvYnlwYXNzLWlyYW4uanNvbiNCeXBhc3NJcmFuCmh0dHBzOi8vZXhhbXBsZS5jb20vcm91dGVzL2Fkcy5qc29u

Throne هر چیزی را که لینک اضافه خواهد کرد فهرست می‌کند و منتظر تأیید شما می‌ماند:

این پروفایل‌های مسیریابی راه‌دور اضافه شوند؟

  1. https://example.com/routes/bypass-iran.json
  2. https://example.com/routes/ads.json

☑ به‌روزرسانی خودکار

پس از تأیید، هر پروفایل بی‌درنگ اضافه و دریافت می‌شود. پروفایل‌هایی که به‌روزرسانی خودکارشان فعال است، سپس در پس‌زمینه بر اساس بازهٔ Routing profiles auto update در تنظیمات پایه (Basic Settings) به‌روزرسانی می‌شوند (بازهٔ کمتر از ۳۰ دقیقه، به‌روزرسانی را خاموش می‌کند).

هر نشانی راه‌دور باید یک پروفایل مسیریابی را در هر قالبی که route می‌پذیرد ارائه کند — یک لینک throne://route/...، Base64 آن، یا JSON خام.

add — افزودن یک پروفایل پراکسی

یک پروفایل پراکسی را از روی یک پیکربندی خروجی (outbound) به‌شکل JSON، به گروه جاری اضافه می‌کند.

throne://add/<base64>

محتوا، Base64ِ JSONِ خروجی پروفایل است — همان شیئی که Throne برای یک سرور خروجی می‌گیرد. برخلاف سه دستور دیگر، این یکی تأیید نمی‌گیرد: پروفایل مستقیماً به گروه جاری اضافه می‌شود، دقیقاً مانند وقتی که یک لینک vless:// یا ss:// را جای‌گذاری کنید.

این لینک‌ها را دستی نمی‌سازید. Throne آن‌ها را برای شما تولید می‌کند:

  • سرور (Server) → اشتراک‌گذاری (Share) → Copy links of selected (Deep Links) با میان‌بر Ctrl+Alt+C
  • پنجرهٔ اشتراک‌گذاری/QR، لینک عمیق را در کنار لینک اشتراک‌گذاری معمولی نشان می‌دهد
  • دکمهٔ Copy profile share links (Deep Links) در ویرایشگر گروه

لینک‌های عمیق برای پروتکل‌ها و گزینه‌هایی مفیدند که نشانی اشتراک‌گذاری استاندارد :// ندارند، چون پیکربندی کامل JSON بدون کم‌وکاست منتقل می‌شود.

عیب‌یابی

  • کلیک روی لینک هیچ کاری نمی‌کند / مرورگر می‌پرسد کدام برنامه را باز کند. یک‌بار Throne را اجرا کنید تا اسکیم را ثبت کند، سپس دوباره تلاش کنید. اگر پوشهٔ Throne را جابه‌جا کرده‌اید، کافی است دوباره آن را اجرا کنید — ثبت در هنگام راه‌اندازی خود را ترمیم می‌کند.
  • هیچ اتفاقی نمی‌افتد و لاگ هم خالی است. به‌احتمال زیاد لینک، اسلش و محتوا را پس از دستور ندارد (throne://addsub به‌جای throne://addsub/<base64>)، یا Base64 آن رمزگشایی نشده است. هر دو حالت بی‌صدا نادیده گرفته می‌شوند.
  • «Ignored deeplink with unknown command». بخش دستور، addsub، route، remoteroute یا add نیست. املای واژهٔ بلافاصله پس از throne:// را بررسی کنید.
  • «The link did not contain a subscription URL». محتوای addsub رمزگشایی شده اما پیش از # نشانی‌ای وجود نداشته است — بررسی کنید که <url>#<name> را کدگذاری کرده باشید، نه فقط #<name> را.
  • «Base64 is invalid.» / «Deep link has no data». محتوا خالی است یا قابل رمزگشایی نیست. برای addsub و remoteroute مطمئن شوید که از Base64 استاندارد استفاده کرده‌اید: محتوای سازگار با URL که شامل - یا _ باشد رد می‌شود.
  • «The link did not contain any valid remote routing profiles». هیچ‌یک از خط‌های رمزگشایی‌شده با http:// یا https:// شروع نشده است. به یاد داشته باشید محتوا یک فهرست نشانی جداشده با خط جدید است، نه یک آرایهٔ JSON.
  • «The link could not be parsed». محتوای route یک JSON، Base64 یا لینک route معتبر Throne نیست — یا یک شیء JSON بدون نشانگر "kind": "throne-route-profile" است.