لینکهای عمیق
با لینکهای throne:// اشتراکها، نمایههای مسیریابی و نمایههای پروکسی را با یک کلیک در دسکتاپ و Android اضافه کنید.
لینک عمیق یک URL از نوع throne:// است که به Throne میگوید یک کار مشخص را انجام دهد: افزودن یک اشتراک، وارد کردن یک نمایهٔ مسیریابی، افزودن نمایههای مسیریابی راهدور یا افزودن یک نمایهٔ پروکسی. ارائهدهندگان، لینکهای عمیق را در وبسایتها و کدهای QR قرار میدهند. شما هم میتوانید از آنها برای بهاشتراکگذاشتن نمایههای مسیریابی خودتان استفاده کنید.
Throne چگونه لینک عمیق را دریافت میکند
سیستم شما باید بداند که لینکهای throne:// را Throne باز میکند. Throne خودش را فقط برای حساب کاربری شما ثبت میکند و این کار به دسترسی مدیر (administrator) نیاز ندارد.
| سیستم | ثبت پیشفرض |
|---|---|
| Linux | بله |
| macOS | بله، وقتی Throne را از Throne.app اجرا میکنید |
| Windows، نصبشده با نصبکننده | بله |
| Windows، استخراجشده از فایل ZIP | خیر |
برای روشن کردن ثبت، برای مثال در یک نسخهٔ ZIP در Windows:
تنظیمات(Settings) ←تنظیمات پایه(Basic Settings) را باز کنید.- در زبانهٔ
متداول(Common)، زیرLinks and Files، گزینهٔRegister throne:// links at startupرا تیک بزنید. تایید(OK) را بزنید. Throne بیدرنگ خودش را ثبت میکند.
تا وقتی این گزینه روشن است، Throne در هر بار اجرا ثبت را بررسی و ترمیم میکند، برای مثال پس از جابهجا کردن پوشهٔ Throne. اگر چند نسخه در Windows یا Linux نگه میدارید، لینکها در آخرین نسخهای باز میشوند که با این گزینهٔ روشن اجرا شده است.
وضعیت کنار این گزینه، وقتی لینکها در همین نسخهٔ Throne باز میشوند، Installed را نشان میدهد. دکمهٔ Install یک بار ثبت میکند، بدون اینکه گزینه را روشن کند. Uninstall ثبت را حذف و گزینه را خاموش میکند. برداشتن تیک گزینه بهتنهایی، ثبت موجود را نگه میدارد.
macOS: کنترلکنندهٔ لینک بخشی از Throne.app است؛ بنابراین دکمههای Install و Uninstall وجود ندارند. اگر Throne از بستهٔ برنامه (app bundle) اجرا نشود، این گزینه Not available for this installation را نشان میدهد.
Throne لینک عمیق را به این روشها میپذیرد:
- کلیک روی لینک در مرورگر، برنامهٔ گفتوگو یا یک سند. اگر Throne در حال اجرا نباشد، ابتدا اجرا میشود و سپس لینک را پردازش میکند.
- کپی کردن لینک و زدن
Ctrl+Vدر پنجرهٔ اصلی، که همانبرنامه(Program) ←افزودن نمایه از کلیپ بورد(Add profile from clipboard) است. این روش حتی وقتی ثبت خاموش است کار میکند. - کشیدن متن لینک و رها کردن آن روی پنجرهٔ اصلی.
- دادن لینک بهعنوان آرگومان هنگام اجرای Throne. خط فرمان را ببینید.
ساختار لینک
همهٔ لینکهای عمیق شکل یکسانی دارند:
throne://<command>/<payload>
throne://را با حروف کوچک بنویسید. دستور به بزرگی و کوچکی حروف حساس نیست:throne://AddSub/…کار میکند.- پس از دستور باید یک اسلش و محتوا (payload) بیاید. بدون اسلش، بیشتر لینکها کاری انجام نمیدهند.
- Throne هر چیزی را که پس از
?یا#در لینک بیاید نادیده میگیرد. هر چه لینک حمل میکند درون محتوا است. - اگر محتوا percent-encode شده باشد (برای مثال
%2Bبهجای+)، Throne ابتدا آن را رمزگشایی میکند.
| دستور | کاربرد | اول میپرسد؟ |
|---|---|---|
addsub |
یک گروه اشتراک اضافه و آن را بهروز میکند | بله |
route |
یک نمایهٔ مسیریابی را که درون لینک است وارد میکند | بله |
remoteroute |
نمایههای مسیریابی راهدور را با URL اضافه میکند | بله |
add |
یک نمایهٔ پروکسی به گروه فعلی اضافه میکند | خیر. در Android، وقتی روی لینک در برنامهٔ دیگری بزنید، بله. |
قوانین Base64
محتوا متنی با کدگذاری Base64 است. اینکه کدام الفبای Base64 کار کند به دستور بستگی دارد:
| دستور | محتوای پذیرفتهشده |
|---|---|
addsub، remoteroute |
فقط Base64 استاندارد: حروف، ارقام، + و /. padding با = در انتها اختیاری است. |
route، add |
Base64 سازگار با URL (- و _) یا Base64 استاندارد، با یا بدون padding. خود Throne، Base64 سازگار با URL و بدون padding مینویسد. |
برای addsub و remoteroute، محتوای سازگار با URL که - یا _ داشته باشد ناموفق میشود. محتوا را در یک خط و بدون فاصله نگه دارید.
برای کدگذاری محتوا در Linux، یا در Git Bash روی Windows:
printf '%s' 'https://example.com/sub/abc123#MyProvider' | base64 -w 0
در macOS، -w 0 را حذف کنید. در PowerShell:
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('https://example.com/sub/abc123#MyProvider'))
هر دو فرمان، Base64 استاندارد با padding چاپ میکنند.
addsub: افزودن اشتراک
یک گروه اشتراک جدید اضافه میکند و بیدرنگ آن را بهروز میکند.
throne://addsub/<base64>
محتوا، Base64 یک خط است:
<subscription_url>#<group_name>
| بخش | الزامی | توضیح |
|---|---|---|
<subscription_url> |
بله | URL اشتراک، بدون تغییر. نویسههای ?، & و / آن درون Base64 بیخطرند؛ بنابراین لازم نیست آن را percent-encode کنید. |
#<group_name> |
خیر | نام گروه جدید. بدون آن، نام گروه از میزبان (host) URL گرفته میشود. percent-encode کردن نام اختیاری است: یک فاصلهٔ ساده هم کار میکند. |
برای مثال، برای افزودن https://example.com/sub/abc123 بهعنوان گروهی با نام MyProvider، متن https://example.com/sub/abc123#MyProvider را کدگذاری کنید:
throne://addsub/aHR0cHM6Ly9leGFtcGxlLmNvbS9zdWIvYWJjMTIzI015UHJvdmlkZXI=
Throne پرسش «Add this subscription?» (این اشتراک اضافه شود؟) را با نام گروه، URL و یک کادر انتخاب Auto update تیکخورده نشان میدهد. پس از تأیید شما، Throne گروه را میسازد و آن را بهروز میکند.
route: وارد کردن نمایهٔ مسیریابی
یک نمایهٔ مسیریابی کامل (خروجی پیشفرض و قوانین) را که درون لینک است وارد میکند.
throne://route/<base64>
لازم نیست این لینکها را دستی بسازید. در تنظیمات مسیریابی (Routing Settings)، در زبانهٔ مسیر (Route)، نمایه را انتخاب کنید و استخراج (Export) را بزنید، یا در فهرست Ctrl+C را بزنید. Throne یک لینک throne://route/… را در کلیپبورد کپی میکند.
وقتی کسی لینک را باز کند، Throne پرسش «Add this routing profile?» (این نمایهٔ مسیریابی اضافه شود؟) را همراه با نام نمایه و یادداشتهایی دربارهٔ هر چیزی که نتوانسته وارد کند نشان میدهد. پس از تأیید، نمایه به فهرست او اضافه میشود. اگر نمایه نقطههای پایانی (endpoint) VPN داشته باشد، Throne پیش از پرسیدن، آن نمایههای OpenVPN یا OpenConnect را میسازد و حتی اگر وارد کردن لغو شود آنها را نگه میدارد. نمایهٔ واردشده فعال نمیشود: آن را در فهرست پایین منوی مسیریابی (Routing) انتخاب کنید.
محتوا، Base64 یک شیء JSON کوچک مانند این است:
{
"kind": "throne-route-profile",
"v": 1,
"name": "Example",
"default_outbound": "proxy",
"rules": []
}
این لینک همان JSON را حمل میکند:
throne://route/eyJraW5kIjoidGhyb25lLXJvdXRlLXByb2ZpbGUiLCJ2IjoxLCJuYW1lIjoiRXhhbXBsZSIsImRlZmF1bHRfb3V0Ym91bmQiOiJwcm94eSIsInJ1bGVzIjpbXX0
default_outbound یکی از proxy، direct، block یا warp-bypass است. یک نمایهٔ خام (بخش route دستنویس sing-box) بهجای rules، مقدار "raw": true و یک شیء route دارد. Throne سرورهایی را که قوانین استفاده میکنند از روی نام پیدا میکند و دربارهٔ هر سروری که پیدا نکند به شما اطلاع میدهد. برای اطلاعات بیشتر دربارهٔ اشتراکگذاری، مسیریابی را ببینید.
وارد کردن در تنظیمات مسیریابی
همچنین میتوانید لینک را در زبانهٔ مسیر (Route) از تنظیمات مسیریابی (Routing Settings) جایگذاری کنید: Import را بزنید، یا در فهرست Ctrl+V را بزنید. در پنجرهٔ اصلی، فقط متنی که با throne:// شروع شود لینک عمیق به حساب میآید. اینجا Throne محتوای Base64 بهتنهایی، JSON ساده و فهرست JSON قوانین به سبک قدیمی را هم میپذیرد؛ فهرست قدیمی در ویرایشگر باز میشود تا برایش نام بگذارید. نمایهای که از یک لینک route، Base64 آن یا JSON آن وارد شود، وقتی تایید (OK) را بزنید، نمایه مسیریابی (Routing Profile) انتخابشده در زبانهٔ متداول (Common) هم میشود.
لینک remoteroute که اینجا جایگذاری شود، نمایههایش را با بهروزرسانی خودکار خاموش اضافه میکند، چون این پرسش کادر انتخاب Auto update ندارد. بعداً میتوانید Auto update را در ویرایشگر هر نمایه تیک بزنید.
remoteroute: افزودن نمایههای مسیریابی راهدور
یک یا چند نمایهٔ مسیریابی راهدور اضافه میکند. لینک route کل نمایه را حمل میکند. لینک remoteroute فقط URLها را حمل میکند: Throne هر نمایه را دانلود میکند و میتواند آن را بهروز نگه دارد. از آن برای توزیع نمایهٔ مسیریابیای که خودتان نگهداری میکنید استفاده کنید.
throne://remoteroute/<base64>
محتوا، Base64 یک فهرست سادهٔ URL است، هر کدام در یک خط. JSON نیست:
<profile_url_1>#<name_1>
<profile_url_2>#<name_2>
| بخش | الزامی | توضیح |
|---|---|---|
<profile_url> |
بله | یک URL با http:// یا https://. خطهایی که با یکی از اینها شروع نشوند نادیده گرفته میشوند. |
#<name> |
خیر | نام نمایه. بدون آن، نام نمایه از میزبان (host) URL گرفته میشود. |
هر URL باید یک نمایهٔ مسیریابی ساختیافته ارائه کند: یک لینک throne://route/، محتوای Base64 آن یا JSON درون آن. نمایههای خام را نمیتوان بهعنوان نمایهٔ راهدور استفاده کرد.
برای مثال، این دو خط را کدگذاری کنید:
printf '%s\n%s' 'https://example.com/routes/bypass-iran.json#BypassIran' 'https://example.com/routes/ads.json' | base64 -w 0
نتیجه این لینک است:
throne://remoteroute/aHR0cHM6Ly9leGFtcGxlLmNvbS9yb3V0ZXMvYnlwYXNzLWlyYW4uanNvbiNCeXBhc3NJcmFuCmh0dHBzOi8vZXhhbXBsZS5jb20vcm91dGVzL2Fkcy5qc29u
Throne نشانیها را زیر پرسش «Add these remote routing profiles?» (این نمایههای مسیریابی راهدور اضافه شوند؟) فهرست میکند، با یک کادر انتخاب Auto update برای همهٔ آنها. این کادر تیک خورده است. پس از تأیید، Throne نمایهها را اضافه و دانلود میکند. گزارشها نشان میدهند چند نمایه دریافت شده است.
- Throne نمایههایی را که
Auto updateآنها روشن است، فقط وقتی تازهسازی میکند کهتنظیمات پایه(Basic Settings) ←اشتراک(Subscription) ←Routing profiles auto update←فعال کردن(Enable) تیک خورده باشد. این گزینه بهطور پیشفرض خاموش است. برای بهروزرسانی دستی، ازUpdateدر زبانهٔمسیر(Route) ازتنظیمات مسیریابی(Routing Settings) استفاده کنید. نمایههای راهدور را ببینید. - هر بهروزرسانی، قوانین و خروجی پیشفرض نمایه را با موارد دانلودشده جایگزین میکند. نام نمایه تغییر نمیکند.
- URLهای روی
raw.githubusercontent.comاز راهRemote Rule-set Mirrorکه در زبانهٔمتداول(Common) ازتنظیمات مسیریابیانتخاب شده دانلود میشوند (بهطور پیشفرض یک آینهٔ jsDelivr). یک آینه ممکن است تا مدتی پس از تغییر فایل، نسخهٔ قدیمیتری را ارائه کند. مسیریابی(Routing) ←Download Profilesهم به همین شکل کار میکند: یک لینکremoterouteرا از مخزن نمایههای مسیریابی Throne دانلود میکند و همان پرسش را نشان میدهد.
add: افزودن یک نمایهٔ پروکسی
یک نمایهٔ پروکسی به گروه فعلی اضافه میکند.
throne://add/<base64>
محتوا، Base64 تنظیمات خروجی نمایه بهصورت JSON است. در دسکتاپ این لینک تأیید نمیخواهد: نمایه بیدرنگ اضافه میشود، درست مانند اینکه یک لینک vless:// یا ss:// را جایگذاری کرده باشید.
Throne این لینکها را برای شما میسازد:
- روی نمایهها در فهرست راستکلیک کنید ←
اشتراک گذاری(Share) ←Copy links of selected (Deep Links)(Ctrl+Alt+C). - روی یک نمایه راستکلیک کنید ←
اشتراک گذاری(Share) ←کد QR و پیوند(QR Code and link). پنجره یا لینک اشتراکگذاری معمولی را نشان میدهد یا لینک عمیق را. برای جابهجایی میان آنها،Deep Linkرا تیک بزنید. گروه ها(Groups) ←Edit current Group→Copy profile share links (Deep Links).
لینک عمیق پیکربندی کامل نمایه را حمل میکند؛ بنابراین برای نوعها و گزینههایی از نمایه که لینک اشتراکگذاری استاندارد ندارند هم کار میکند. برای چنین نمایههایی، لینک های انتخاب شده را کپی کنید (Copy links of selected) با میانبر Ctrl+C معمولاً بهطور خودکار یک لینک عمیق کپی میکند و پنجرهٔ QR با Deep Link تیکخورده باز میشود. اگر چنین نمایهای گزینههای اتصال پیشرفته داشته باشد، مانند bind interface، بهجای آن از Copy links of selected (Deep Links) استفاده کنید.
لینکهای add هر جا که لینکهای اشتراکگذاری معمولی کار میکنند هم کار میکنند: درون اشتراکها، در فایلها و در کدهای QR.
در Android
Throne برای Android نسخهٔ 2.0.0 همین چهار دستور را پردازش میکند. همچنین لینکهای clash://install-config?url=…&name=… را میپذیرد که مانند addsub یک اشتراک اضافه میکنند. در این لینکها، مقدار url را percent-encode کنید. طرح (scheme) throne:// هنگام نصب برنامه ثبت میشود؛ تنظیمی برای آن وجود ندارد.
روی لینک در برنامهٔ دیگری بزنید، یا در صفحهٔ پیکربندی (Profiles) از اضافهکردن پراکسی جدید (Add profile) ← وارد کردن از بریدهدان (Import from clipboard) یا اسکن از کد QR (Scan QR code) استفاده کنید. در Android، کدهای QR برای هر چهار دستور کار میکنند. لینکهای route و remoteroute با Import در صفحهٔ مسیریابی (Routing) هم کار میکنند.
تفاوتها با دسکتاپ:
- لینک
addکه در برنامهٔ دیگری روی آن بزنید، ابتدا میپرسد «تأیید میکنید که میخواهید پراکسی … اضافه شود؟» (Confirm you want to import profile …?). لینکهایی مانندvless://که در برنامهٔ دیگری روی آنها بزنید هم همین را میپرسند. از کلیپبورد یا کد QR، نمایه بدون پرسش وارد میشود. - نمایهٔ مسیریابی واردشده اضافه میشود اما فعال نمیشود. برای استفاده، روی آن در صفحهٔ
مسیریابی(Routing) بزنید. - نمایههای مسیریابی خام از دسکتاپ (
"raw": true) با پیام «raw routing profiles are not supported on Android» (نمایههای مسیریابی خام در Android پشتیبانی نمیشوند) رد میشوند. نقطههای پایانی در یک نمایهٔ مسیریابی اشتراکی با یک یادداشت کنار گذاشته میشوند. - دستور ناشناخته پیام «Ignored deeplink with unknown command: …» (لینک عمیق با دستور ناشناخته نادیده گرفته شد) را روی صفحه نشان میدهد، نه فقط در گزارش.
- بهروزرسانیهای زمانبندیشده برای اشتراکها به
تنظیمات(Settings) ←اشتراکها(Subscriptions) ←Subscription auto updateو برای نمایههای مسیریابی راهدور بهتنظیمات←Routing→Auto update remote profilesنیاز دارند. هر دو بهطور پیشفرض خاموشاند.
برنامهٔ Android هم میتواند این لینکها را بسازد: لینکهای add برای نمایهها و لینکهای route برای نمایههای مسیریابی.
عیبیابی
این پیامها مربوط به Throne دسکتاپ هستند.
- کلیک روی لینک کاری نمیکند، یا مرورگر میپرسد از کدام برنامه استفاده شود. کنترلکنندهٔ لینک برای این نسخه ثبت نشده است. در نسخهٔ ZIP در Windows،
Register throne:// links at startupرا روشن کنید (Throne چگونه لینک عمیق را دریافت میکند را ببینید). در macOS، Throne را ازThrone.appاجرا کنید. در غیر این صورت، Throne را یک بار اجرا کنید. اگر چند نسخه نگه میدارید، در نسخهای که باید لینکها را باز کندInstallرا بزنید. همیشه میتوانید بهجای آن، لینک را کپی کنید و در ThroneCtrl+Vرا بزنید. - Linux: لینکها هنوز باز نمیشوند. ثبت، ابزار
update-desktop-databaseاز بستهٔdesktop-file-utilsرا اجرا میکند. اگر این ابزار نصب نبود، آن را نصب کنید، سپسInstallرا در کنارRegister throne:// links at startupبزنید. - هیچ اتفاقی نمیافتد و گزارش خالی میماند. Throne این لینکها را بدون پیام کنار میگذارد:
- لینک
addsubکه محتوای آن Base64 استاندارد معتبر نیست، برای مثال Base64 سازگار با URL با-یا_، یا محتوایی با فاصله یا شکست خط؛ - لینکی بدون اسلش پس از دستور، بهجز لینکهای
addوremoteroute؛ - لینکی با دستور ناشناخته که محتوای آن رمزگشایی نمیشود.
- لینک
- «Ignored deeplink with unknown command: …» (لینک عمیق با دستور ناشناخته نادیده گرفته شد) در گزارش. واژهٔ پس از
throne://یکی ازaddsub،route،remoterouteیاaddنیست. املای آن را بررسی کنید. - «The link did not contain a subscription URL.» (لینک، URL اشتراک نداشت.) محتوای
addsubرمزگشایی شد، اما پیش از#، URL وجود ندارد.<url>#<name>را کدگذاری کنید، نه فقط#<name>. - «Deep link has no data» (لینک عمیق داده ندارد) یا «Base64 is invalid.» (Base64 نامعتبر است.) این پیامها از لینکهای
remoterouteهستند: پس ازthrone://remoteroute/چیزی نیامده، یا محتوا Base64 استاندارد نیست. - «The link did not contain any valid http(s) routing profile URLs.» (لینک هیچ URL معتبر http(s) برای نمایهٔ مسیریابی نداشت.) محتوای
remoterouteرمزگشایی شد، اما هیچ خطی باhttp://یاhttps://شروع نمیشود. محتوا باید فهرستی از URLها باشد، هر کدام در یک خط، نه JSON. - «The link did not contain any valid remote routing profiles.» (لینک هیچ نمایهٔ مسیریابی راهدور معتبری نداشت.) لینک پس از
remoterouteاسلش ندارد. - «The link could not be parsed:» (لینک قابل تجزیه نبود:) همراه با یک دلیل. این پیام از لینکهای
routeاست:- «Empty input» (ورودی خالی): پس از
throne://route/چیزی نیامده است. - «Input is not valid JSON, base64, or a Throne route link» (ورودی، JSON، base64 یا لینک route معتبر Throne نیست): محتوا آسیب دیده یا ناقص است.
- «Unrecognized route object» (شیء route ناشناخته): JSON مقدار
"kind": "throne-route-profile"را ندارد.
- «Empty input» (ورودی خالی): پس از
- «0 نمایه وارد شد» (Imported 0 profile(s)) در گزارش. محتوای یک لینک
addآسیب دیده یا ناقص است. یا کد QR اسکنشده یک لینکaddsub،routeیاremoterouteدارد: متن پس ازQR Code Result:را از گزارش کپی کنید وCtrl+Vرا بزنید. - «Remote routing profile … failed: …» (نمایهٔ مسیریابی راهدور … ناموفق بود: …) در گزارش. نمایه اضافه شد، اما URL آن دانلود نشد یا نمایهٔ مسیریابی ساختیافتهای ارائه نمیکند. URL یا فایل را اصلاح کنید، سپس از
Updateدر زبانهٔمسیر(Route) ازتنظیمات مسیریابی(Routing Settings) استفاده کنید.