—به پرواز خوشآمدید cocode.dk Airways—
پروازی از روی فیلتر
تونل مرورگر اندروید · Apps Script · domain fronting · فارسیمحور
چکیده
بریفینگ مأموریتپرواز یک تونل مرورگر اندروید با اولویت زبان فارسی برای کاربران ایرانی بدون دانش فنی است. یک دوست آشنا بهفن، فایل Code.gs از پروژهٔ MasterHttpRelayVPN را روی حساب گوگل خودش مستقر میکند؛ کاربر یک لینک parvaz:// از طریق پیامرسان امن (سیگنال یا تلگرام — نه واتساپ) دریافت میکند، آن را چسبانده یا QR را اسکن میکند، یکبار گواهی MITM را در تنظیمات اندروید نصب میکند، روی «اتصال» میزند و سپس در Chrome (یا هر مرورگر Chromium دیگر) بهطور عادی مرور میکند.
ترافیک Chrome از روی Apps Script عبور میکند — TLS SNI www.google.com، HTTP Host script.google.com. Chrome در اندروید گواهی پرواز را بهصورت پیشفرض میپذیرد؛ بدون پرچم، بدون about:config، بدون روت. از نظر معماری با پورت اثباتشدهٔ MasterHttpRelayVPN-RUST همراستاست؛ مزیت پرواز هویت بصری NOTAM، رابط فارسی پیشفرض، و راهاندازی فشردهتر برای مسافران غیرفنی است.
مسیر پرواز
۵ توقف · DPI فقط جلوی صحنه را میبیندwww.google.com · از Search قابل تشخیص نیست.script.google.com → به Web App شما مسیریابی میشود.UrlFetchApp.fetch(target) · پاسخ را در پاکت {s,h,b} برمیگرداند.اعلان به خلبانان
حریم پروازی محدودCode.gs را فقط روی حساب گوگل شخصی خود مستقر کنید — استقرار را متمرکز نکنید، تجاریسازی نکنید، نسخهٔ مشترک توزیع نکنید. فقط استفادهٔ شخصی، پژوهشی و آموزشی. اگر پیامدهای حقوقی را درک نمیکنید، استقرار ندهید.
مشخصات بدنه
ویژگیهاwww.google.com · Host script.google.com. DPI جلوی صحنه را میبیند؛ گوگل بر اساس Host مسیریابی میکند.parvaz:// یا اسکن QR → نصب یکبارهٔ گواهی MITM → اتصال. زبان پیشفرض فارسی.EncryptedSharedPreferences.افشاگری صادقانه
آنچه نمیکند · آنچه باید بکند · محدودیتها- بدون تحلیل کاربر، تلهمتری یا گزارش راه دور (هنوز).
- بدون رلهٔ متمرکز — هر مسافر Code.gs خودش را اجرا میکند.
- بدون دسترسی به موقعیت، مخاطبین، پیامک، میکروفون، دوربین (دوربین فقط برای QR، اختیاری).
- بدون پینگ بهروزرسانی · بدون تبلیغات · بدون سرویس گزارش خطا.
- بدون سرور تحت مدیریت ما · بدون حساب · بدون ورود.
VpnService— برای گرفتن و مسیریابی پکتهای مرورگر.INTERNET+FOREGROUND_SERVICE— صحبت با Apps Script، زنده ماندن.POST_NOTIFICATIONS(اندروید ۱۳+) — نمایش وضعیت اتصال.- قفل صفحه روی دستگاه — اندروید بدون آن گواهی نصب نمیکند.
- یک مرورگر Chromium — Chrome (یا Brave / Edge / Vivaldi). نیازی به پرچم مرورگر نیست.
چه کسی پرواز میکند، چه کسی زمینگیر است
محدودهٔ صادقانه- Chrome در اندروید — بدون پرچم، بدون
about:config، بدون روت. - سایر مرورگرهای Chromium — Brave، Edge، Vivaldi — همان مسیر، همان اعتماد.
- میزبانهای متعلق به گوگل (google.com، youtube.com، fonts.googleapis.com) از طریق SNI-rewrite مستقیم، در هر مرورگری.
- وباپهای داخل Chrome — Gmail، GitHub، ویکیپدیا، سایتهای خبری، جستجو.
- Firefox Stable / Beta / Focus —
about:configندارند، پرچم اعتماد قابل تنظیم نیست. - Firefox Nightly — پرچم وجود دارد ولی پس از هر بار اجرای دوباره به
falseبرمیگردد (fenix#18990، باز از سال ۲۰۲۱). - مرورگر DuckDuckGo — مبتنی بر Chromium اما گواهی کاربر را رد میکند. تأیید شده که کار نمیکند.
- اپلیکیشنهای بومی — اینستاگرام، تلگرام، واتساپ، بانک، استریمینگ. بهصورت پیشفرض گواهی کاربر را در اندروید ۷+ رد میکنند.
توالی سوارشدن
~۳ دقیقه · یکباردریافت لینک parvaz://
سیگنال یا تلگرام از دوست آشنا · نه واتساپ
نصب پرواز · زدن لینک
APK از GitHub releases · sideload
نصب گواهی
تنظیمات اندروید · ~۳۰ ثانیه · §۸
اتصال · باز کردن Chrome
بدون پرچم مرورگر · §۹
نصب گواهی · در تنظیمات
گام ۱ از ۲ · یکبار · ~۳۰ ثانیهدر پرواز، روی باز کردن تنظیمات بزنید. پرواز فایل parvaz-ca.crt را در پوشهٔ دانلودها قرار میدهد و تنظیمات اندروید را باز میکند. سپس مسیر گوشی خود را دنبال کنید.
پیشنیاز: قفل صفحه (PIN، الگو، رمز) · بدون آن اندروید نصب نمیکند. منو پیدا نمیشود؟ در تنظیمات، CA certificate را جستجو کنید. هشدار اشکالی ندارد — گواهی روی گوشی شما ساخته شده و کلید خصوصی هرگز از حافظهٔ خصوصی برنامه خارج نمیشود.
اتصال · باز کردن Chrome
گام ۲ از ۲ · یکبار · ~۱۰ ثانیهروی دکمهٔ تمبر لاستیکی در صفحهٔ اصلی پرواز بزنید. وقتی به در پرواز تغییر کرد، Chrome را باز کنید و عادی مرور کنید — صفحات HTTPS بدون نیاز به تنظیم بیشتر از روی پرواز عبور میکنند. Brave، Edge و Vivaldi هم به همین شکل کار میکنند؛ گواهی پرواز که نصب کردید تنها چیزی است که نیاز دارند.
چرا Chrome کار میکند: Chrome در اندروید گواهی نصبشدهٔ کاربر را از حافظهٔ سیستم میپذیرد، و سیاست Certificate Transparency در Chrome استثنای صریحی برای زنجیرههایی دارد که به یک گواهی نصبشدهٔ کاربر میرسند — بنابراین گواهی برگ پرواز بدون نیاز به تنظیم پذیرفته میشود. مرورگرهایی که کار نمیکنند، و همچنین محدودیت پهنایباند و WebSocket، در §۶ آمدهاند.
طرحوارهٔ بدنه
توپولوژی monorepo · Kotlin + Goparvaz/ ├── app/ kotlin + compose UI · VpnService · tun2socks │ · sidecar launcher · MITM CA install · NOTAM ├── core/ go SOCKS5 sidecar │ ├── fronter/ TLS-with-custom-SNI dialer + HTTP client │ ├── protocol/ Apps Script JSON envelope encode/decode │ ├── codec/ gzip / br / zstd decoders │ ├── relay/ envelope + fronted client glue │ ├── mitm/ (next) CA + leaf certs + TLS server │ ├── dispatcher/ (next) SNI-rewrite vs MITM+relay decision │ ├── socks5/ local SOCKS5 listener on :1080 │ └── cmd/parvazd/ sidecar main → libparvaz.so (per ABI) ├── reference/ MasterHttpRelayVPN · upstream python (read-only) └── website/ bilingual GitHub Pages · core is called from app via ProcessBuilder, not JNI · one apk + one Code.gs drop-in + one release tag
دوست آشنا · استقرار رله
~۵ دقیقه · یکبار · فقط برای فرد فنیاگر شما دوست آشنا بهفن هستید که پرواز را برای کس دیگری راهاندازی میکنید، استقرار یکبارهٔ Apps Script در ادامه آمدهاست. کاربر نهایی هرگز script.google.com را باز نمیکند.
سهمیه: ~۲۰هزار UrlFetch / روز · ۳۰ ثانیه هر فراخوان · ۶ دقیقه هر اجرا. یک رله به ازای هر حساب گوگل (TOS اپساسکریپت). تست: Web app URL را در مرورگر باز کنید — باید {"e":"unauthorized"} ببینید (دلیل بر اینکه استقرار زنده است و درخواست بدون احراز هویت را رد میکند). منبع: apps_script/Code.gs · Apps Script · Web Apps.
پشتیبانی زمینی · حرکت
آخرین فراخوان · MIT · ۲۰۲۶مجاز برای برخاستن.
پرواز فقط نیمهٔ کلاینت MasterHttpRelayVPN را جایگزین میکند. سرور Apps Script همان Code.gs اصلی است که خودتان روی حساب گوگل خود مستقر میکنید.
اگر به ظاهر فارسی NOTAM نیاز ندارید، پورت بالغتر MasterHttpRelayVPN-RUST امروز با APKهای آمادهٔ ساخت و راهنمای انگلیسی و فارسی در دسترس است.