نحوه استفاده از پروکسیها در اندروید (و چرا تنظیمات پروکسی Wi-Fi فقط HTTP ارائه میدهد، نه SOCKS5)
دیالوگ پروکسی Wi-Fi داخلی اندروید هیچ گزینه پروتکلی ندارد، چون فقط HTTP است. این برای SOCKS5 چه معنایی دارد، چرا برخی برنامهها این تنظیم را نادیده میگیرند، و روشهای عملی برای عبور ترافیک از پروکسی در اندروید.
روی شبکه Wi-Fi خود در اندروید ضربه طولانی بزنید، روی تغییر شبکه بزنید، گزینههای پیشرفته را باز کنید، پروکسی را روی دستی بگذارید، و یک فیلد نام میزبان، یک فیلد پورت و یک لیست bypass دریافت میکنید. همین. بدون منوی کشویی پروتکل، بدون گزینه SOCKS5، بدون درخواست احراز هویت.
اگر دنبال نحوه استفاده از پروکسیها در اندروید بودهاید و تعجب میکنید چرا SOCKS5 هرگز ظاهر نمیشود، دلیلش این است: تنظیم پروکسی Wi-Fi داخلی اندروید یک پروکسی HTTP است، نه یک کلاینت SOCKS5 همهمنظوره.
تنظیم پروکسی داخلی اندروید واقعاً از چه چیزی پشتیبانی میکند
- فقط HTTP و HTTPS. ترافیک HTTPS با یک درخواست
CONNECTHTTP تونل میشود، به همین دلیل سایتهای HTTPS کار میکنند حتی اگر خود پروکسی HTTP باشد. - بدون SOCKS4، SOCKS5 یا SOCKS5h. بهسادگی هیچ فیلدی برای آن وجود ندارد.
- بدون UDP. هر چیزی مبتنی بر UDP - QUIC، ترافیک بازی، DNS از همان مسیر - از آن عبور نخواهد کرد.
- وابسته به هر شبکه. این تنظیم همراه با شبکه Wi-Fi که ویرایش کردهاید ذخیره میشود، بنابراین وقتی شبکه را عوض میکنید یا از داده موبایل استفاده میکنید اعمال نمیشود.
- توصیهای، نه اجباری. اندروید پیکربندی پروکسی را به برنامهها میدهد، اما برنامهها آزادند آن را نادیده بگیرند.
آن نکته آخر بیشتر از همه مردم را غافلگیر میکند. یک مرورگر معمولاً به پروکسی سیستم احترام میگذارد؛ بسیاری از برنامههای دیگر، بهویژه آنهایی که کلاینت HTTP یا کتابخانه شبکهای خودشان را همراه دارند، مستقیم وصل میشوند و اصلاً به پروکسی دست نمیزنند. داده موبایل در بیشتر دستگاهها فیلد پروکسی قابلتنظیمی برای کاربر ندارد، پس آنجا هم چیزی برای پیکربندی وجود ندارد.
چرا SOCKS5 در اندروید با ابزارهای داخلی معمولاً بنبست است
حتی وقتی یک برنامه فیلد SOCKS5 خودش را ارائه میدهد، سه چیز معمولاً خراب میشود:
- DNS کجا حل میشود. SOCKS5 گونهای دارد که نامهای میزبان را از راه دور حل میکند، که معمولاً بهصورت
socks5hنوشته میشود. اگر برنامه ابتدا نامها را محلی حل کند، پرسوجوهای DNS شما به ISPتان میرود در حالی که ترافیکتان از جای دیگری خارج میشود - یک نشت جزئی. - پشتیبانی UDP. SOCKS5 در واقع یک ارتباط UDP تعریف میکند، اما پشتیبانی کلاینتها ناهمگون است و پشته خود اندروید آن را از طریق پروکسی سیستم در دسترس قرار نمیدهد.
- احراز هویت. احراز هویت با نام کاربری/رمز عبور بخشی از دستدادن SOCKS5 است، اما اینکه برنامه آن فیلدها را نشان بدهد به توسعهدهنده بستگی دارد.
روشهای عملی برای عبور ترافیک از پروکسی در اندروید
گزینه ۱: پروکسی HTTP داخلی (سریعترین، محدودترین)
- تنظیمات را باز کنید، سپس شبکه و اینترنت، سپس اینترنت (در نسخههای قدیمیتر با برچسب Wi-Fi).
- روی شبکه خود ضربه طولانی بزنید و تغییر شبکه را انتخاب کنید.
- گزینههای پیشرفته را باز کنید و پروکسی را روی دستی بگذارید.
- نام میزبان و پورت پروکسی را وارد کنید. بعضی نسخهها یک لیست bypass هم نشان میدهند - آدرسهای محلی را آنجا اضافه کنید.
- ذخیره کنید، سپس دوباره به شبکه وصل شوید.
با مراجعه به یک صفحه بررسی IP در مرورگر و مقایسه نتیجه با حالت خاموش بودن پروکسی آن را تست کنید. اگر مرورگر IP پروکسی را نشان میدهد اما یک برنامه هنوز IP واقعی شما را نشان میدهد، آن برنامه پروکسی سیستم را نادیده میگیرد.
گزینه ۲: برنامهای که یک رابط VPN محلی میسازد
برنامههایی که یک تونل VPN محلی میسازند میتوانند ترافیک دستگاه را بگیرند و آن را به یک نقطه پایانی پروکسی هدایت کنند، که محدودیت فقط-HTTP را دور میزند. دو چیز را قبل از رفتن به این مسیر باید بدانید:
- اندروید فقط یک VPN فعال در هر زمان را اجازه میدهد، بنابراین این با هر برنامه VPN که از قبل استفاده میکنید رقابت میکند.
- این برنامه اکنون در مسیر ترافیک هر چیزی است که میگیرد. آن را با همان دقتی انتخاب کنید که یک ارائهدهنده VPN را انتخاب میکنید.
گزینه ۳: ترمینیت پروکسی در جای دیگری
بهجای اینکه اندروید را وادار کنید SOCKS5 صحبت کند، کلاینت SOCKS5 را روی ماشینی که کنترل میکنید قرار دهید - یک سرور خانگی، یک روتر، یا یک نمونه ابری کوچک - و اندروید را به آن وصل کنید. ترمینیت کردن SOCKS5 در یک تونل هدایت دینامیک SSH (ssh -D) روی یک دسکتاپ و اشتراک آن اتصال الگوی رایجی است.
گزینه ۴: هدایت سطح روت
با روت، هدایت در سطح هسته میتواند همه ترافیک TCP را به یک پروکسی SOCKS5 بفرستد و پشتیبانی پروکسی هر برنامه را کاملاً دور بزند. این خطر واقعی قطع شدن اتصال را دارد و گزینهای سرانگشتی نیست.
آن را بهدرستی از خط فرمان تست کنید
اگر یک برنامه ترمینال روی دستگاه دارید، پروکسی را مستقل از مرورگر بررسی کنید:
# IPی که پروکسی نشان میدهد را بررسی کنید
curl -s --proxy socks5h://user:[email protected]:1080 https://api.ipify.org; echo
# همان پروکسی، خروجی JSON برای اسکریپتنویسی
curl -s --proxy socks5h://user:[email protected]:1080 "https://api.ipify.org?format=json"
اگر آن دستورها آدرس پروکسی را نشان میدهند اما مرورگر شما نشان نمیدهد، مشکل پیکربندی سطح برنامه است نه خود پروکسی.
نکات امنیتی که ارزش جدی گرفتن دارند
- یک پروکسی HTTP مقصد هر درخواست را میبیند. HTTPS محتوا را رمزنگاریشده نگه میدارد، اما فراداده همچنان برای هر کسی که پروکسی را اداره میکند قابل مشاهده است.
- پروکسیهای عمومی رایگان در هر پلتفرمی باید خصمانه در نظر گرفته شوند. هرگز اعتبارنامه یا کوکیهای نشست را از طریق یکی از آنها نفرستید.
- اگر یک پروکسی شفاف، رایگان و بدون نیاز به حساب است، قبل از اینکه هر چیز حساسی را از آن عبور دهید بپرسید مدل کسبوکارش چیست.
جمعبندی
دیالوگ پروکسی Wi-Fi اندروید یک راحتی فقط-HTTP است، نه یک کلاینت SOCKS5 - این یک محدودیت پلتفرم است، نه پیکربندی نادرست از طرف شما. برای پروکسی HTTP ساده در سطح مرورگر از تنظیم داخلی استفاده کنید، وقتی به مسیریابی در کل دستگاه به یک نقطه پایانی SOCKS5 نیاز دارید از یک برنامه تونلسازی VPN محلی استفاده کنید، و اگر انعطافپذیری بدون روت میخواهید، ترمینیت کردن SOCKS5 در جای دیگر، مثل یک تونل SSH یا روتری که کنترل میکنید، را در نظر بگیرید. هر مسیری را که انتخاب میکنید، قبل از اعتماد به آن با یک بررسی IP هم از مرورگر و هم از خط فرمان تأیید کنید.