عیب‌یابی Android

رفع مشکلات رایج Throne برای Android: VPN اجرا نمی‌شود یا ترافیک ندارد، در پس‌زمینه متوقف می‌شود، و خطاهای اشتراک و مسیریابی.

پیام یا نشانه‌ای را که می‌بینید پیدا کنید و سپس مراحل را دنبال کنید. پیام‌ها همان‌طور نقل شده‌اند که نسخهٔ فارسی برنامه نشان می‌دهد؛ پیام‌هایی که در برنامه ترجمهٔ فارسی ندارند به انگلیسی آمده‌اند و ترجمهٔ آن‌ها در پرانتز است. برای مشکلات Throne دسکتاپ، عیب‌یابی را ببینید.

VPN اجرا نمی‌شود یا ترافیک ندارد

وقتی اجرا ناموفق باشد، Throne دلیل آن را در نواری در پایین صفحه، همراه با دکمهٔ آمار و اطلاعات (Logs)، نشان می‌دهد. این پیام باقی می‌ماند تا وقتی که آن را با کشیدن کنار بزنید، روی آمار و اطلاعات بزنید یا دوباره اجرا کنید.

«اجازه ایجاد سرویس VPN داده نشد.»

Android مجوز VPN را به Throne نداده است. معمولاً شما درخواست را رد کرده‌اید. همچنین وقتی برنامهٔ VPN دیگری روی Always-on VPN (VPN همیشه روشن) تنظیم شده باشد، Android بدون پرسیدن رد می‌کند.

  1. دوباره دکمهٔ اتصال را بزنید و درخواست را تأیید کنید.
  2. اگر درخواستی ظاهر نشد، تنظیمات VPN در Android را باز کنید و Always-on VPN را برای برنامهٔ دیگر خاموش کنید.
  3. اگر Throne پیام «VPN confirmation unavailable» (تأیید VPN در دسترس نیست) را نشان داد، دستگاه شما صفحه‌ای برای این درخواست ندارد. مجوز VPN را ببینید.

Android از ساختن VPN خودداری می‌کند

Android مجوز را داده، اما سپس از ساختن رابط VPN خودداری کرده است. در این حالت پیام «ناموفق: …» معمولاً شامل «configure tun interface» است.

  1. اتصال برنامه‌های VPN دیگر را قطع کنید و در تنظیمات VPN در Android بررسی کنید که هیچ‌کدام روی Always-on VPN تنظیم نشده باشند.
  2. دستگاه را دوباره راه‌اندازی کنید و دوباره متصل شوید.

پیام‌های دیگر هنگام اتصال

پیام علت چه باید کرد
«لطفاً یک پراکسی را انتخاب کنید.» هیچ نمایه‌ای انتخاب نشده است. روی یک نمایه بزنید و سپس متصل شوید.
«ناموفق: Profile … has a type this build cannot use: …» (نوع نمایهٔ … در این نسخه قابل استفاده نیست: …) نوع نمایه فقط در دسکتاپ وجود دارد؛ برای نمونه Tailscale یا هستهٔ اضافی (Extra Core). از نمایهٔ دیگری استفاده کنید. پایین‌تر را ببینید.
پیامی دربارهٔ مسیریابی یا WARP مشکلی در نمایهٔ مسیریابی یا در تنظیمات WARP. خطاهای مسیریابی و خطاهای WARP را ببینید.
هر پیام «ناموفق: …» دیگر هسته خطایی گزارش کرده است. روی آمار و اطلاعات (Logs) بزنید و آخرین خط‌ها را بخوانید.

متصل است، اما چیزی بارگذاری نمی‌شود

  1. روی نوار پایین صفحه بزنید. «اتصال موفق! سرعت برقراری ارتباط HTTP: …ms» یعنی نمایه کار می‌کند. «ناموفق بود: …» یعنی نمایه یا سرور آن کار نمی‌کند.
  2. اگر ناموفق بود، روی ⋮ ← URL test بزنید و نمایه‌ای را که کار می‌کند انتخاب کنید. تست و انتخابگر خودکار را ببینید.
  3. پروکسی به‌تفکیک برنامه را بررسی کنید: برای دیدن فهرست برنامه‌ها، تنظیمات (Settings) ← TUN / VPN ← تانل‌کردن اپلیکیشن‌ها (Apps VPN mode) را باز کنید. با اتصال با پراکسی (Proxy)، فقط برنامه‌های انتخاب‌شده از VPN استفاده می‌کنند. با پراکسی نشوند (Bypass)، برنامه‌های انتخاب‌شده از آن استفاده نمی‌کنند. اگر هیچ برنامه‌ای انتخاب نشده باشد، همهٔ برنامه‌ها از VPN استفاده می‌کنند. پروکسی به‌تفکیک برنامه را ببینید.
  4. با ⋮ ← Routing profile به نمایهٔ مسیریابی Default بروید و دوباره تست کنید. اگر حالا کار کرد، علت، یکی از قوانین نمایهٔ مسیریابی خود شماست. مسیریابی را ببینید.
  5. DNS را بررسی کنید: تنظیمات ← DNS → DNS ریموت (Remote DNS) که پیش‌فرض آن https://8.8.8.8/dns-query است. سرور دیگری را امتحان کنید. DNS را ببینید.
  6. اگر Tun IPv6 یا Tun routing را در تنظیمات ← TUN / VPN روشن کرده‌اید، آن‌ها را خاموش کنید و دوباره تست کنید. Tun IPv6 را فقط وقتی به کار ببرید که سرور شما از IPv6 پشتیبانی کند. اگر برخی برنامه‌ها یا وب‌سایت‌ها کار نمی‌کنند در حالی که بقیه کار می‌کنند، MTU را در همان صفحه روی 1500 بگذارید و دوباره متصل شوید.
  7. برای اینکه بفهمید آیا علت مشکل حالت VPN است، تنظیمات ← General ← حالت سرویس (Service mode) را روی فقط به حالت پراکسی (Proxy only) بگذارید و متصل شوید. سپس برنامه‌ای را که تنظیم پروکسی خودش را دارد، روی پروکسی SOCKS5 با نشانی 127.0.0.1 و پورت 2080 تنظیم کنید (تنظیمات ← Inbound ← پورت پراکسی (Proxy port) را ببینید). اگر آن برنامه کار کرد، به حالت VPN برگردید و پیاده‌سازی TUN (TUN implementation) دیگری را امتحان کنید. حالت‌های VPN و پروکسی را ببینید.

وقتی Throne خاموش است اینترنت ندارید

Always-on VPN در Android همراه با «Block connections without VPN» (مسدود کردن اتصال‌های بدون VPN) روشن است. در این حالت Android تا وقتی Throne متصل نیست کل ترافیک را مسدود می‌کند. Throne را با یک نمایهٔ سالم متصل کنید، یا این گزینه را در تنظیمات VPN در Android خاموش کنید. Always-on VPN را ببینید.

برخی برنامه‌ها پس از قطع اتصال اینترنت ندارند

تنظیمات ← DNS ← فعال کردن FakeDNS (Enable FakeDNS) به برنامه‌ها نشانی‌های جعلی می‌دهد که فقط از طریق Throne کار می‌کنند. Throne دربارهٔ این موضوع هشدار می‌دهد: «ممکن است نیاز باشد که برنامه‌های دیگر را برای اتصال مجدد، دوباره راه‌اندازی کنید.» آن برنامه‌ها را دوباره راه‌اندازی کنید، یا فعال کردن FakeDNS را خاموش کنید.

Throne در پس‌زمینه متوقف می‌شود

نشانه‌های معمول: VPN وقتی صفحه خاموش است قطع می‌شود، اعلان ناپدید می‌شود، اتصال پس از باز کردن قفل گوشی از کار می‌افتد، یا دکمه‌های اعلان یا ویجت کاری انجام نمی‌دهند.

  1. تنظیمات ← General → Battery optimization را باز کنید. باید «Unrestricted» (بدون محدودیت) را نشان دهد. اگر این‌طور نیست، روی آن بزنید و اجازه دهید Throne بدون محدودیت اجرا شود. بهینه‌سازی باتری را ببینید.
  2. تنظیمات ← General → Background & auto-start را باز کنید. اجازه دهید Throne به‌طور خودکار اجرا شود و در پس‌زمینه کار کند. تنظیمات سازندهٔ دستگاه را ببینید.
  3. بازنشانی اتصال خروجی، هنگام روشن‌شدن صفحه موبایل (Reset outbound connections when device wakes from sleep) را روشن نگه دارید (پیش‌فرض). وقتی دستگاه از خواب عمیق بیدار می‌شود، Throne اتصال‌های قدیمی را می‌بندد و برنامه‌ها دوباره وصل می‌شوند. بازنشانی اتصال خروجی، هنگام تغییر شبکه (Reset outbound connections when network changes) را هم روشن نگه دارید.
  4. Always-on VPN را روشن کنید تا Android خودش دوباره Throne را اجرا کند. Always-on VPN را ببینید.
  5. در برخی دستگاه‌ها، کنار زدن Throne از فهرست برنامه‌های اخیر آن را متوقف می‌کند. آن را در فهرست باقی بگذارید، یا اگر دستگاهتان این امکان را دارد، آن را در همان‌جا قفل کنید.

مشکلات اشتراک

وقتی اشتراکی را دستی به‌روزرسانی می‌کنید، خطاها در پایین صفحه به شکل نام گروه و سپس متن پیام ظاهر می‌شوند. به‌روزرسانی‌های خودکار خطاهای خود را فقط در آمار و اطلاعات (Logs) می‌نویسند.

پیام علت چه باید کرد
«Request with proxy but no profile started.» (درخواست با پروکسی اما هیچ نمایه‌ای شروع نشده است.) Use proxy در تنظیمات ← اشتراک‌ها (Subscriptions) روشن است، یا حالت سرویس فقط به حالت پراکسی است، و Throne متصل نیست. ابتدا متصل شوید. در حالت VPN می‌توانید Use proxy را هم خاموش کنید.
«Error transferring … - server replied: …» (خطا در انتقال …؛ پاسخ سرور: …) سرور درخواست را رد کرده است؛ برای نمونه با 403 یا 404. نشانی را بررسی کنید. بسیاری از ارائه‌دهندگان فقط برخی برنامه‌ها را می‌پذیرند: همان user agent را که ارائه‌دهنده‌تان اعلام کرده تنظیم کنید، یا ارسال HWID را روشن کنید.
«No profiles found in the subscription; it was left unchanged.» (هیچ نمایه‌ای در اشتراک پیدا نشد؛ اشتراک بدون تغییر ماند.) پاسخ هیچ نمایه‌ای ندارد که Throne بتواند بخواند؛ برای نمونه یک صفحهٔ وب است. اغلب همان مشکل user agent یا HWID است. قالب‌های واردکردن را هم بررسی کنید.
«Insecure redirect» (تغییر مسیر ناامن) سرور یک نشانی https:// را به http:// تغییر مسیر داده است. Throne از چنین تغییر مسیرهایی پیروی نمی‌کند. نشانی https:// درست را از ارائه‌دهندهٔ خود بخواهید.
«Too many redirects» (تغییر مسیرهای بیش از حد) سرور در یک حلقه تغییر مسیر می‌دهد. نشانی را با ارائه‌دهندهٔ خود بررسی کنید.
«Response larger than 64 MB» (پاسخ بزرگ‌تر از 64 MB است) اشتراک بیش از حد بزرگ است. فهرست کوچک‌تری از ارائه‌دهندهٔ خود بخواهید.
«Still in use, so kept instead of deleted» (هنوز در حال استفاده است، پس به‌جای حذف نگه داشته شد) یا «The running profile was kept.» (نمایهٔ در حال اجرا نگه داشته شد.) به‌روزرسانی، یا یکی از گزینه‌های پاک‌سازی پس از آن، نمایه‌ای را که به آن متصل هستید حذف می‌کرد، بنابراین Throne آن را نگه داشت. این پیام را در گزارش تغییرات یا در آمار و اطلاعات می‌بینید. کاری لازم نیست. برای حذف آن در هر صورت، Allow stopping the active profile را در تنظیمات ← اشتراک‌ها روشن کنید.

برای تغییر user agent یا HWID یک گروه، گروه‌ها (Groups) را در منوی کناری باز کنید، دکمهٔ ویرایش (Edit) گروه را بزنید و Advanced را باز کنید. این بخش User agent و Send HWID را دارد. تنظیمات همهٔ گروه‌ها در تنظیمات ← اشتراک‌ها قرار دارد. User-Agent و HWID را ببینید.

ارائه‌دهنده فقط به‌روزرسانی از اتصال خود شما را می‌پذیرد

وقتی Throne متصل است، درخواست‌های خود آن، مانند به‌روزرسانی اشتراک‌ها، هم از Throne عبور می‌کنند و از نمایهٔ مسیریابی شما پیروی می‌کنند. برخی ارائه‌دهندگان درخواست‌های به‌روزرسانی را فقط از اتصال اینترنت خود شما می‌پذیرند. قانونی اضافه کنید که دامنهٔ اشتراک را به direct بفرستد:

  1. مسیریابی (Routing) را در منوی کناری باز کنید. منوی نمایهٔ مسیریابی فعلی را باز کنید و ویرایش را انتخاب کنید.
  2. Add rule را انتخاب کنید.
  3. Outbound را روی direct بگذارید. در Domain suffix، نام میزبان نشانی اشتراک را وارد کنید؛ برای نمونه sub.example.com.
  4. قانون و نمایهٔ مسیریابی را ذخیره کنید. قانون را بالاتر از قوانین دیگری قرار دهید که با همان دامنه تطبیق دارند.

اگر ارائه‌دهنده می‌خواهد درخواست از یکی از سرورهای خودش بیاید، به‌جای آن همان سرور را به‌عنوان Outbound انتخاب کنید.

خطاهای مسیریابی

پیام علت چه باید کرد
«The routing profile is referencing outbounds that no longer exist, consider revising your settings» (نمایهٔ مسیریابی به خروجی‌هایی ارجاع می‌دهد که دیگر وجود ندارند؛ تنظیمات خود را بازبینی کنید) یک قانون ترافیک را به نمایهٔ سروری می‌فرستد که حذف شده است؛ برای نمونه با به‌روزرسانی اشتراک. نمایهٔ مسیریابی را باز کنید (مسیریابی ← منوی آن ← ویرایش). قوانینی که سرورشان حذف شده «Missing server (#…)» (سرور موجود نیست) را نشان می‌دهند. خروجی دیگری انتخاب کنید.
«Unknown rule-set "…" in rule "…" of routing profile "…"» (مجموعه‌قوانین ناشناخته «…» در قانون «…» از نمایهٔ مسیریابی «…») یک قانون از نام مجموعه‌قوانینی (rule-set) استفاده می‌کند که Throne آن را نمی‌شناسد. در مسیریابی، روی Refresh repository list بزنید، یا از نشانی یک فایل .srs استفاده کنید.
«The rule-set list is not available. …» (فهرست مجموعه‌قوانین در دسترس نیست. …) فهرست نام مجموعه‌قوانین دانلود نشده است. در مسیریابی، روی Refresh repository list بزنید.
«raw routing profiles are not supported on Android» (نمایه‌های مسیریابی خام در Android پشتیبانی نمی‌شوند) یک نمایهٔ مسیریابی خام را از Throne دسکتاپ وارد کرده‌اید. از نمایهٔ مسیریابی ساخت‌یافته (structured) یا راه‌دور (remote) استفاده کنید.

خطاهای WARP

پیام علت چه باید کرد
«WARP is enabled but its config has not been generated. Generate it in Settings › Routing › WARP.» (WARP روشن است، اما پیکربندی آن ساخته نشده است؛ آن را در تنظیمات › Routing › WARP بسازید.) WARP روشن است، اما برای حالت انتخاب‌شده پیکربندی WARP وجود ندارد. تنظیمات ← Routing → WARP را باز کنید و روی ایجاد پیکربندی (Generate WARP config) بزنید.
«ناموفق: Warp is enabled but its config has not been generated. Please generate the Warp config first in Routing Settings.» (Warp روشن است، اما پیکربندی آن ساخته نشده است؛ ابتدا پیکربندی Warp را در تنظیمات مسیریابی بسازید.) همان مشکل، که هنگام اتصال نشان داده می‌شود. همان کار.
«Failed to generate WARP config» (ساخت پیکربندی WARP ناموفق بود) ثبت‌نام در Cloudflare ناموفق بود. این کار در برخی شبکه‌ها مسدود است. به یک نمایهٔ سالم متصل شوید، Use proxy را در تنظیمات ← اشتراک‌ها روشن کنید و دوباره بسازید.
پیامی نمایش داده نمی‌شود، اما وقتی WARP روشن است چیزی بارگذاری نمی‌شود در حالت WireGuard، WARP به نمایه‌ای نیاز دارد که UDP را عبور دهد. Mode را روی MASQUE و HTTP version را روی HTTP/2 بگذارید که فقط به TCP نیاز دارد. برای حالت جدید یک پیکربندی بسازید.

Cloudflare WARP را ببینید.

مشکلات به‌روزرسانی

  • «The download is signed with a different key than this build, so Android cannot install it as an update. Back up, uninstall this build and install the release from GitHub.» (فایل دانلودشده با کلیدی متفاوت از این نسخه امضا شده است و Android نمی‌تواند آن را به‌عنوان به‌روزرسانی نصب کند؛ پشتیبان بگیرید، این نسخه را حذف کنید و نسخهٔ انتشار را از GitHub نصب کنید.) نسخهٔ شما با کلید انتشار Throne امضا نشده است. یک پشتیبان بسازید (منوی کناری ← ابزارها (Tools) ← Create backup)، Throne را حذف کنید، APK را از GitHub نصب کنید و پشتیبان را بازیابی کنید.
  • «This update cannot be installed from the app (…). Download it from the release page.» (این به‌روزرسانی را نمی‌توان از داخل برنامه نصب کرد (…)؛ آن را از صفحهٔ انتشار دانلود کنید.) روی Open in browser بزنید، APK مناسب دستگاه خود را دانلود کنید و آن را روی برنامهٔ فعلی نصب کنید.
  • «Could not check for updates» (بررسی به‌روزرسانی ممکن نشد): Throne نتوانست به GitHub دسترسی پیدا کند. به یک نمایهٔ سالم متصل شوید و دوباره تلاش کنید.
  • Android نسخهٔ 2.0.0 را روی نسخهٔ قدیمی‌تر Throne برای Android نصب نمی‌کند. ارتقا از 1.x یا NekoBox را ببینید.

نمایه‌ای که در دسکتاپ کار می‌کند اما در Android نه

  1. نوع نمایه را بررسی کنید. نمایه‌های Tailscale و هستهٔ اضافی (Extra Core) در Android کار نمی‌کنند. تنظیمات TLS spoof در Android نادیده گرفته می‌شوند.
  2. تنظیماتی را که نحوهٔ اتصال نمایه‌ها را تغییر می‌دهند مقایسه کنید: پیش‌تنظیم‌های تنظیمات ← Presets (multiplex، TLS fragment، TLS tricks، uTLS) و تنظیمات ← Core → Xray VLESS preference. ترجیح VLESS هنگام وارد کردن نمایه‌ها اعمال می‌شود، پس پس از تغییر آن، اشتراک را دوباره به‌روزرسانی کنید. sing-box در برابر Xray را ببینید.
  3. برای داشتن همان تنظیمات دسکتاپ، یک پشتیبان دسکتاپ را بازیابی کنید. جابه‌جایی بین دسکتاپ و Android را ببینید.
  4. اگر باز هم کار نکرد، مشکل را گزارش کنید و گزارش‌های هر دو برنامه را پیوست کنید.

گزارش‌ها

آمار و اطلاعات (Logs) را در منوی کناری باز کنید. این صفحه گزارش هسته را نشان می‌دهد. نوار ابزار این گزینه‌ها را دارد: به‌روزرسانی گروه (Update) که نما را دوباره بارگذاری می‌کند، Share logs و پاک‌کردن اطلاعات Logcat (Clear logs). منو گزینه‌های Save logs…، Hide sensitive data و Hide destinations را دارد.

Share logs و Save logs… یک فایل متنی می‌سازند که شامل این موارد است:

  • سرآیندی با نسخهٔ برنامه و هسته، نسخهٔ Android، مدل دستگاه، ABI، حالت سرویس و برخی تنظیمات که هیچ اطلاعات محرمانه‌ای ندارند؛
  • گزارش هسته، و گزارش هستهٔ اتصال قبلی؛
  • آخرین 2000 خط از گزارش سیستمی برنامه.

Hide sensitive data به‌طور پیش‌فرض روشن است. آن را روشن نگه دارید. این گزینه در فایل خروجی این موارد را جایگزین می‌کند:

  • مسیر (path) و پرس‌وجوی (query) هر نشانی، و نام‌های کاربری و گذرواژه‌های درون نشانی‌ها (نام میزبان باقی می‌ماند)؛
  • گذرواژه‌ها، کلیدها، توکن‌ها، UUIDها و مقادیر مشابه؛
  • نشانی سرورها، SNI و نام‌های میزبان در پیکربندی؛
  • نشانی‌های IP عمومی (نشانی‌های خصوصی باقی می‌مانند)؛
  • نام‌های Wi-Fi.

Hide destinations نام دامنه‌ها را در خط‌های مربوط به اتصال‌ها و DNS هم پنهان می‌کند. فقط وقتی Hide sensitive data روشن است می‌توانید آن را روشن کنید، و Throne پس از راه‌اندازی دوبارهٔ برنامه آن را حفظ نمی‌کند. این پنهان‌سازی کامل تضمین نمی‌شود: پیش از انتشار فایل، آن را بخوانید.

برای جزئیات بیشتر، تنظیمات ← Core ← سطح ثبت آمار (Log level) را روی info یا debug بگذارید و برای راه‌اندازی دوبارهٔ برنامه روی اعمال تغییرات (Apply) بزنید. مشکل را دوباره ایجاد کنید و سپس گزارش‌ها را به اشتراک بگذارید. پس از آن، سطح را به warn برگردانید.

پس از یک کرش (crash)، Throne دوباره اجرا می‌شود و پیشنهاد می‌دهد یک فایل گزارش با اطلاعات حساسِ پنهان‌شده به اشتراک بگذارید.

گزارش مشکل

مشکلات برنامهٔ Android را در github.com/throneproj/ThroneForAndroid/issues گزارش کنید. این موارد را ضمیمه کنید:

  • چه کاری انجام دادید، چه انتظاری داشتید و چه اتفاقی افتاد؛
  • فایل گزارش از Share logs یا Save logs…، در حالی که Hide sensitive data روشن است؛
  • نوع نمایه (برای نمونه VLESS با REALITY) و حالت سرویس.

فایل گزارش از قبل نسخهٔ برنامه، نسخهٔ هسته و مدل دستگاه را دارد. برای توصیه‌های کلی، گزارش باگ را ببینید.