عیب‌یابی Android

رفع مشکلات رایج Throne برای Android.

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

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

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

پیام علت چه باید کرد
«اجازه ایجاد سرویس VPN داده نشد.» (Permission denied to create a VPN service) درخواست VPN را رد کرده‌اید، یا برنامهٔ VPN دیگری روی Always-on VPN (VPN همیشه روشن) تنظیم شده است. دوباره متصل شوید و درخواست را تأیید کنید. اگر درخواستی ظاهر نشد، Always-on VPN را برای برنامهٔ دیگر در تنظیمات VPN در Android خاموش کنید.
«تأیید VPN در دسترس نیست» (VPN confirmation unavailable) دستگاه صفحه‌ای برای درخواست VPN ندارد. مجوز VPN را ببینید.
«ناموفق: …» همراه با «configure tun interface» Android از ساختن رابط VPN خودداری کرد. اتصال برنامه‌های VPN دیگر را قطع کنید، مطمئن شوید هیچ‌کدام روی Always-on VPN تنظیم نشده‌اند و دستگاه را دوباره راه‌اندازی کنید.
«ناموفق: Profile … has a type this build cannot use: …» (نوع نمایهٔ … در این نسخه قابل استفاده نیست: …) نوع نمایه فقط در دسکتاپ وجود دارد؛ مانند Tailscale یا هستهٔ اضافی (Extra Core). از نمایهٔ دیگری استفاده کنید.
«اتصال برقرار نشد: DNS شبکه (…) پاسخی نداد. …» (Could not connect: the network's DNS (…) did not answer. …) یا همین پیام برای «DNS سیستم» DNS مستقیم (Direct DNS) پاسخ نداد. با مقدار پیش‌فرض (localhost)، این همان سرور DNS شبکهٔ فعلی است. در پیام روی DNS بزنید و DNS مستقیم را روی سروری بگذارید که در این شبکه پاسخ می‌دهد؛ برای نمونه tls://1.1.1.1. DNS در Android را ببینید.
«دانلود مجموعه قوانین ممکن نشد: …» (Could not download the rule-sets: …) یک قانون از مجموعه‌قوانینی (rule-set) استفاده می‌کند که هرگز دانلود نشده است، و دانلود ناموفق بود. روی به‌هرحال متصل شو (Connect anyway) و سپس اتصال (Connect) بزنید. این قوانین تا وقتی دانلود موفق نشود با هیچ چیزی تطبیق داده نمی‌شوند.
«دانلود geoip.dat از … ممکن نشد: …» (Could not download geoip.dat from …) یا همین پیام برای geosite.dat یک پیکربندی Xray با قوانین geoip: یا geosite: به این فایل نیاز دارد. روی داده‌های جغرافیایی (Geo assets) بزنید، با نمایهٔ دیگری متصل شوید و روی اکنون دانلود کن (Download now) بزنید، یا منبع (Source) دیگری انتخاب کنید.

برای هر پیام «ناموفق: …» دیگر، روی آمار و اطلاعات (Logs) بزنید و آخرین خط‌ها را بخوانید.

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

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

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

  • Always-on VPN در Android همراه با «Block connections without VPN» (مسدود کردن اتصال‌های بدون VPN)، تا وقتی Throne متصل نیست کل ترافیک را مسدود می‌کند. Throne را متصل کنید، یا این گزینه را در تنظیمات VPN در Android خاموش کنید. Always-on VPN را ببینید.
  • با تنظیمات ← DNS ← فعال کردن FakeDNS (Enable FakeDNS)، برخی برنامه‌ها پس از توقف Throne اتصال خود را از دست می‌دهند. آن برنامه‌ها را دوباره راه‌اندازی کنید، یا فعال کردن FakeDNS را خاموش کنید.

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

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

  1. تنظیمات ← عمومی (General) ← بهینه‌سازی باتری (Battery optimization) باید «نامحدود» (Unrestricted) را نشان دهد. اگر این‌طور نیست، روی آن بزنید. بهینه‌سازی باتری را ببینید.
  2. در تنظیمات ← عمومی ← پس‌زمینه و راه‌اندازی خودکار (Background & auto-start)، اجازه دهید Throne به‌طور خودکار اجرا شود و در پس‌زمینه کار کند. تنظیمات سازندهٔ دستگاه را ببینید.
  3. بازنشانی اتصال خروجی، هنگام روشن‌شدن صفحه موبایل (Reset outbound connections when device wakes from sleep) و بازنشانی اتصال خروجی، هنگام تغییر شبکه (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.) تنظیمات ← اشتراک‌ها (Subscriptions) ← استفاده از پراکسی (Use proxy) روشن است و Throne متصل نیست. ابتدا متصل شوید، یا استفاده از پراکسی را خاموش کنید.
«خطای انتقال … - پاسخ سرور: …» (Error transferring … - server replied: …) سرور درخواست را رد کرده است؛ برای نمونه با 403 یا 404. نشانی را بررسی کنید. بسیاری از ارائه‌دهندگان فقط برخی برنامه‌ها را می‌پذیرند: همان user agent را که ارائه‌دهنده‌تان اعلام کرده تنظیم کنید، یا ارسال HWID را روشن کنید.
«پروفایلی در اشتراک یافت نشد؛ بدون تغییر ماند.» (No profiles found in the subscription; it was left unchanged.) پاسخ هیچ نمایه‌ای ندارد که Throne بتواند بخواند. اغلب همان مشکل user agent یا HWID است. قالب‌های واردکردن را هم بررسی کنید.
«سرور به‌جای اشتراک یک صفحه وب برگرداند. …» (The server returned a web page instead of a subscription. …) اغلب یک CAPTCHA یا بررسی ربات. در تنظیمات پیشرفته (Advanced) گروه، نسخه TLS (TLS version)، نسخه HTTP (HTTP version) یا عامل کاربر (User agent) دیگری را امتحان کنید.
«فیلترهای نام همه … پروفایل اشتراک را کنار گذاشتند؛ اشتراک بدون تغییر ماند.» (The name filters left out all … profiles of the subscription; it was left unchanged.) فیلترهای نام گروه همهٔ نمایه‌ها را حذف کردند. فقط نام‌های منطبق (Only names matching) و حذف نام‌های منطبق (Remove names matching) را زیر فیلتر (Filter) در تنظیمات گروه بررسی کنید.
«تغییر مسیر ناامن» (Insecure redirect)، «تغییر مسیر بیش از حد» (Too many redirects) یا «پاسخ بزرگ‌تر از 64 مگابایت» (Response larger than 64 MB) سرور یک نشانی https:// را به http:// تغییر مسیر داده است (Throne از آن پیروی نمی‌کند)، در یک حلقه تغییر مسیر می‌دهد، یا بیش از 64 مگابایت می‌فرستد. نشانی را با ارائه‌دهندهٔ خود بررسی کنید.

User-Agent و HWID در تنظیمات ← اشتراک‌ها هستند، و برای یک گروه در گروه‌ها (Groups) ← دکمهٔ ویرایش (Edit) گروه ← پیشرفته. User-Agent و HWID را ببینید.

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

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

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

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

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

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

خطاهای WARP

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

Cloudflare WARP را ببینید.

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

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

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

  1. نمایه‌های Tailscale و هستهٔ اضافی (Extra Core) در Android کار نمی‌کنند و تنظیمات TLS spoof نادیده گرفته می‌شوند.
  2. Throne برای Android نمایه‌هایی از اشتراک را که هسته‌اش نمی‌تواند اجرا کند وارد نمی‌کند؛ برای نمونه با transportی که sing-box آن را ندارد، یا XHTTP روی نوعی از نمایه به‌جز VLESS. آمار و اطلاعات (Logs) دلیل رد شدن هر کدام را نشان می‌دهد.
  3. یک پیکربندی Xray با قوانین geoip: یا geosite: به geoip.dat و geosite.dat نیاز دارد که Throne آن‌ها را از منبع (Source) در تنظیمات ← هسته (Core) ← داده‌های جغرافیایی Xray (Xray geo assets) دانلود می‌کند. اگر فایل نصب‌شده دسته‌ای (category) را که پیکربندی لازم دارد ندارد، منبعی را انتخاب کنید که آن را دارد؛ مانند منبعی که دسکتاپ شما استفاده می‌کند.
  4. تنظیمات ← از پیش‌تنظیم‌ها (Presets) و در تنظیمات ← هسته، ترجیح VLESS در Xray (Xray VLESS preference) و اعتماد به گواهی‌های سیستم در Xray (Trust system certificates in Xray) را مقایسه کنید. ترجیح VLESS هنگام وارد کردن اعمال می‌شود، پس پس از تغییر آن اشتراک را دوباره به‌روزرسانی کنید. در Android، اعتماد به گواهی‌های سیستم شامل گواهی‌هایی که خودتان نصب کرده‌اید نمی‌شود.
  5. برای داشتن همان تنظیمات دسکتاپ، یک پشتیبان دسکتاپ را بازیابی کنید. جابه‌جایی بین دسکتاپ و Android را ببینید.

گزارش‌ها

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

اشتراک‌گذاری گزارش‌ها (Share logs) و ذخیره گزارش‌ها… (Save logs…) یک فایل متنی می‌سازند که نسخه‌ها، مدل دستگاه، گزارش‌های هسته در این اتصال و اتصال قبلی، و گزارش سیستمی برنامه را دارد.

پنهان‌کردن داده‌های حساس (Hide sensitive data) در منو به‌طور پیش‌فرض روشن است؛ آن را روشن نگه دارید. این گزینه مسیر نشانی‌ها، اطلاعات ورود، کلیدها، نشانی سرورها، نام‌های میزبان، نشانی‌های IP عمومی و نام‌های Wi-Fi را در فایل پنهان می‌کند. پنهان‌کردن مقاصد (Hide destinations) نام دامنه‌ها را در خط‌های مربوط به اتصال‌ها و DNS هم پنهان می‌کند. این پنهان‌سازی کامل تضمین نمی‌شود: پیش از انتشار فایل، آن را بخوانید.

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

داده‌های تشخیصی

برای هنگ کردن، مصرف بالای CPU یا تخلیهٔ سریع باتری، ممکن است توسعه‌دهندگان یک فایل داده‌های تشخیصی (Diagnostics) بخواهند. این فایل ثبت می‌کند که هسته در مدت 30 ثانیه چه کاری انجام می‌دهد و چیزی از پیکربندی‌های شما در آن نیست.

  1. Throne را به وضعیتی ببرید که مشکل در آن رخ می‌دهد.
  2. تنظیمات ← عیب‌یابی (Diagnostics) را باز کنید و گزینه‌هایی را که توسعه‌دهندگان خواسته‌اند روشن کنید: رقابت بر سر قفل (Lock contention)، ردیابی اجرا (فایل بزرگ‌تر) (Execution trace (larger file)) یا شامل گزارش‌های Throne (Include Throne logs). اگر گزارش‌ها را هم ضمیمه می‌کنید، پنهان‌کردن داده‌های حساس را روشن نگه دارید.
  3. روی شروع (Start) بزنید. ضبط پس از خروج از این صفحه هم ادامه پیدا می‌کند، پس می‌توانید در این مدت مشکل را دوباره ایجاد کنید.
  4. روی اشتراک‌گذاری (Share) یا ذخیره… (Save…) بزنید و فایل throne-profile-<date>-<time>.zip را پیوست کنید.

گزارش مشکل

مشکلات را در github.com/throneproj/ThroneForAndroid/issues گزارش کنید و بنویسید چه کاری انجام دادید، چه انتظاری داشتید و چه اتفاقی افتاد. فایل اشتراک‌گذاری گزارش‌ها (Share logs) را با پنهان‌کردن داده‌های حساس (Hide sensitive data) روشن، و نوع نمایه (برای نمونه VLESS با REALITY) و حالت سرویس را هم بیاورید. گزارش باگ را هم ببینید.