diff --git a/README.md b/README.md index c676142..6f63d46 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,10 @@ **Language:** English | [Persian / فارسی](README_FA.md) +**Telegram Channel 📣:** [https://t.me/masterdnsvpn](https://t.me/masterdnsvpn) + +**Special Thanks ❤️:** [Abolix](https://github.com/abolix) + MasterHttpRelayVPN is a local proxy that routes browser traffic through a Google Apps Script relay using domain fronting. The simple path needs only this project and a free Google account. For sites that block Google egress, you can optionally add an exit node later. ```text @@ -11,17 +15,17 @@ Browser -> Local proxy -> Google front -> Your Apps Script relay -> Target site network filter sees a Google-facing connection ``` -## Quick Menu +## Quick Menu 🧭 [Getting Started](docs/GETTING_STARTED.md) | [Docker](docs/DOCKER.md) | [LAN Sharing](docs/LAN_SHARING.md) | [Exit Node](docs/exit-node/EXIT_NODE_DEPLOYMENT.md) [Configuration](docs/CONFIGURATION.md) | [Troubleshooting](docs/TROUBLESHOOTING.md) | [Security](docs/SECURITY.md) | [Architecture](docs/ARCHITECTURE.md) -## Fast Start +## Fast Start ⚡ Before running the local proxy, deploy the Google relay once. You only need a Google account and about two minutes. -## Deploy The Google Relay +## Deploy The Google Relay ☁️ 1. Open [Google Apps Script](https://script.google.com/) and sign in. 2. Click **New project**. @@ -89,20 +93,20 @@ After it starts, configure your browser to use: For HTTPS sites, install the generated certificate from `ca/ca.crt` if the app cannot install it automatically. The full setup is in [Getting Started](docs/GETTING_STARTED.md). -## Common Next Steps +## Common Next Steps 🛠️ - If the browser shows certificate warnings, open [Troubleshooting](docs/TROUBLESHOOTING.md#certificate-errors). - If you see `unauthorized`, make sure `AUTH_KEY` in [apps_script/Code.gs](apps_script/Code.gs) exactly matches `auth_key` in `config.json`. - If browsing is slow or connections time out, run `python main.py --scan` and see [Configuration Reference](docs/CONFIGURATION.md#diagnostic-commands). - If ChatGPT, Turnstile, or similar sites block the Google exit IP, use [Exit Node Guide](docs/exit-node/EXIT_NODE_DEPLOYMENT.md). -## Support And Updates +## Support And Updates 📣 - Telegram channel: [https://t.me/masterdnsvpn](https://t.me/masterdnsvpn) - Windows client: [MHRWindowsApp](https://github.com/AriPath/MHRWindowsApp) - Ad blocker filter source: [PersianBlocker](https://github.com/MasterKia/PersianBlocker/) -## Safety +## Safety 🔒 This project is provided for educational, testing, and research use. You are responsible for following applicable laws and service terms. Never share `config.json`, `auth_key`, `ca/`, or an exit-node URL together with a valid PSK. Read [Security Notes](docs/SECURITY.md) before sharing the proxy with other devices. diff --git a/README_FA.md b/README_FA.md index e5ca626..7502095 100644 --- a/README_FA.md +++ b/README_FA.md @@ -2,6 +2,10 @@ **زبان:** [English](README.md) | فارسی +**کانال تلگرام 📣:** [https://t.me/masterdnsvpn](https://t.me/masterdnsvpn) + +**تشکر ویژه ❤️:** [Abolix](https://github.com/abolix) + MasterHttpRelayVPN یک پراکسی محلی است که ترافیک مرورگر را از مسیر Google Apps Script و Domain Fronting عبور می‌دهد. برای مسیر ساده فقط همین پروژه و یک اکانت رایگان Google کافی است. اگر بعضی سایت‌ها خروجی Google را مسدود کنند، بعدا می‌توانید Exit Node اضافه کنید. ```text @@ -9,32 +13,31 @@ MasterHttpRelayVPN یک پراکسی محلی است که ترافیک مرور فیلتر فقط اتصال شبیه Google را می‌بیند ``` -## منوی سریع +## منوی سریع 🧭 [شروع سریع](docs/fa/GETTING_STARTED.md) | [Docker](docs/fa/DOCKER.md) | [اشتراک گذاری LAN](docs/fa/LAN_SHARING.md) | [راهنمای Exit Node](docs/exit-node/EXIT_NODE_DEPLOYMENT_FA.md) [مرجع تنظیمات](docs/fa/CONFIGURATION.md) | [رفع مشکل](docs/fa/TROUBLESHOOTING.md) | [نکات امنیتی](docs/fa/SECURITY.md) | [معماری](docs/fa/ARCHITECTURE.md) -## شروع خیلی سریع +## شروع خیلی سریع ⚡ قبل از اجرای پراکسی، باید یک بار رله Google را deploy کنید. فقط یک اکانت Google لازم دارید و این کار حدود دو دقیقه زمان می‌برد. -## ساخت رله Google +## ساخت رله Google ☁️ -1. وارد [Google Apps Script](https://script.google.com/) شوید. -2. روی **New project** کلیک کنید. -3. محتوای پیش‌فرض ادیتور را کامل پاک کنید. -4. فایل [apps_script/Code.gs](apps_script/Code.gs) را باز کنید، همه کد آن را کپی کنید، و داخل Apps Script قرار دهید. -5. این خط را پیدا کنید و با یک رمز طولانی و مخصوص خودتان عوض کنید: +- وارد [Google Apps Script](https://script.google.com/) شوید و روی **New project** کلیک کنید. +- محتوای پیش‌فرض ادیتور را کامل پاک کنید. +- فایل [apps_script/Code.gs](apps_script/Code.gs) را باز کنید، همه کد آن را کپی کنید، و داخل Apps Script قرار دهید. +- این خط را پیدا کنید و با یک رمز طولانی و مخصوص خودتان عوض کنید: ```javascript const AUTH_KEY = "your-secret-password-here"; ``` -6. از مسیر **Deploy** -> **New deployment** -> **Web app** بروید. -7. گزینه **Execute as** را روی **Me** بگذارید. -8. گزینه **Who has access** را روی **Anyone** بگذارید. -9. روی **Deploy** کلیک کنید، دسترسی‌ها را تایید کنید، و **Deployment ID** را کپی کنید. +- از مسیر **Deploy** -> **New deployment** -> **Web app** بروید. +- گزینه **Execute as** را روی **Me** بگذارید. +- گزینه **Who has access** را روی **Anyone** بگذارید. +- روی **Deploy** کلیک کنید، دسترسی‌ها را تایید کنید، و **Deployment ID** را کپی کنید. این دو مقدار را برای setup wizard نگه دارید: @@ -54,10 +57,10 @@ cd MasterHttpRelayVPN **گزینه B: ZIP** -1. [صفحه GitHub پروژه](https://github.com/masterking32/MasterHttpRelayVPN) را باز کنید. -2. روی **Code** -> **Download ZIP** کلیک کنید. -3. فایل ZIP را extract کنید. -4. داخل پوشه extract شده `MasterHttpRelayVPN` یک terminal باز کنید. +- [صفحه GitHub پروژه](https://github.com/masterking32/MasterHttpRelayVPN) را باز کنید. +- روی **Code** -> **Download ZIP** کلیک کنید. +- فایل ZIP را extract کنید. +- داخل پوشه extract شده `MasterHttpRelayVPN` یک terminal باز کنید. بعد برنامه را اجرا کنید: @@ -87,20 +90,20 @@ chmod +x start.sh برای سایت‌های HTTPS، اگر برنامه نتوانست گواهی را خودکار نصب کند، فایل `ca/ca.crt` را نصب کنید. راهنمای کامل در [شروع سریع](docs/fa/GETTING_STARTED.md) است. -## قدم‌های بعدی رایج +## قدم‌های بعدی رایج 🛠️ - اگر مرورگر خطای certificate نشان می‌دهد، [بخش خطای گواهی](docs/fa/TROUBLESHOOTING.md#خطاهای-certificate) را ببینید. - اگر خطای `unauthorized` می‌بینید، مقدار `AUTH_KEY` در [apps_script/Code.gs](apps_script/Code.gs) باید دقیقا با `auth_key` در `config.json` یکی باشد. - اگر سرعت پایین است یا timeout می‌گیرید، دستور `python main.py --scan` را اجرا کنید و [مرجع تنظیمات](docs/fa/CONFIGURATION.md#دستورهای-عیب‌یابی) را ببینید. - اگر سایت‌هایی مثل ChatGPT یا Turnstile با خروجی Google مشکل دارند، [راهنمای Exit Node](docs/exit-node/EXIT_NODE_DEPLOYMENT_FA.md) را بخوانید. -## پشتیبانی و اطلاع‌رسانی +## پشتیبانی و اطلاع‌رسانی 📣 - کانال Telegram: [https://t.me/masterdnsvpn](https://t.me/masterdnsvpn) - کلاینت Windows: [MHRWindowsApp](https://github.com/AriPath/MHRWindowsApp) - منبع فیلتر تبلیغات: [PersianBlocker](https://github.com/MasterKia/PersianBlocker/) -## امنیت +## امنیت 🔒 این پروژه برای آموزش، تست و پژوهش ارائه شده است. مسئولیت رعایت قوانین و شرایط سرویس‌ها با کاربر است. فایل `config.json`، مقدار `auth_key`، پوشه `ca/`، و آدرس Exit Node همراه با PSK معتبر را با کسی به اشتراک نگذارید. قبل از فعال کردن استفاده در شبکه محلی، [نکات امنیتی](docs/fa/SECURITY.md) را بخوانید. diff --git a/docs/fa/ARCHITECTURE.md b/docs/fa/ARCHITECTURE.md index 84eaea3..48c3d00 100644 --- a/docs/fa/ARCHITECTURE.md +++ b/docs/fa/ARCHITECTURE.md @@ -33,12 +33,12 @@ Browser یا app ## پردازش درخواست -1. مرورگر ترافیک HTTP یا HTTPS proxy را به `127.0.0.1:8085` می‌فرستد. -2. برای HTTPS، proxy می‌تواند با CA تولیدشده MITM محلی انجام دهد. -3. قوانین host مشخص می‌کنند درخواست مستقیم، blocked، bypass، یا relayed باشد. -4. درخواست‌های relayed به JSON برای Apps Script تبدیل می‌شوند. -5. Apps Script مقصد را fetch می‌کند و پاسخ HTTP سریال‌شده برمی‌گرداند. -6. پراکسی محلی پاسخ HTTP را برای مرورگر بازسازی می‌کند. +- مرورگر ترافیک HTTP یا HTTPS proxy را به `127.0.0.1:8085` می‌فرستد. +- برای HTTPS، proxy می‌تواند با CA تولیدشده MITM محلی انجام دهد. +- قوانین host مشخص می‌کنند درخواست مستقیم، blocked، bypass، یا relayed باشد. +- درخواست‌های relayed به JSON برای Apps Script تبدیل می‌شوند. +- Apps Script مقصد را fetch می‌کند و پاسخ HTTP سریال‌شده برمی‌گرداند. +- پراکسی محلی پاسخ HTTP را برای مرورگر بازسازی می‌کند. ## امکانات کارایی diff --git a/docs/fa/GETTING_STARTED.md b/docs/fa/GETTING_STARTED.md index 979e170..b0102c6 100644 --- a/docs/fa/GETTING_STARTED.md +++ b/docs/fa/GETTING_STARTED.md @@ -13,20 +13,19 @@ cd MasterHttpRelayVPN **با ZIP:** -1. صفحه [GitHub پروژه](https://github.com/masterking32/MasterHttpRelayVPN) را باز کنید. -2. روی **Code** -> **Download ZIP** کلیک کنید. -3. فایل ZIP را extract کنید. -4. داخل پوشه `MasterHttpRelayVPN` یک terminal باز کنید. +- صفحه [GitHub پروژه](https://github.com/masterking32/MasterHttpRelayVPN) را باز کنید. +- روی **Code** -> **Download ZIP** کلیک کنید. +- فایل ZIP را extract کنید. +- داخل پوشه `MasterHttpRelayVPN` یک terminal باز کنید. ## 2. ساخت رله Google -1. به [Google Apps Script](https://script.google.com/) بروید. -2. یک پروژه جدید بسازید. -3. محتوای [apps_script/Code.gs](../../apps_script/Code.gs) را داخل فایل `Code.gs` کپی کنید. -4. مقدار `AUTH_KEY` را به یک رمز طولانی و تصادفی تغییر دهید. -5. از مسیر **Deploy** -> **New deployment** نوع **Web app** را انتخاب کنید. -6. گزینه **Execute as** را روی **Me** و گزینه دسترسی را روی **Anyone** بگذارید. -7. Deploy کنید و `Deployment ID` را نگه دارید. +- به [Google Apps Script](https://script.google.com/) بروید و یک پروژه جدید بسازید. +- محتوای [apps_script/Code.gs](../../apps_script/Code.gs) را داخل فایل `Code.gs` کپی کنید. +- مقدار `AUTH_KEY` را به یک رمز طولانی و تصادفی تغییر دهید. +- از مسیر **Deploy** -> **New deployment** نوع **Web app** را انتخاب کنید. +- گزینه **Execute as** را روی **Me** و گزینه دسترسی را روی **Anyone** بگذارید. +- Deploy کنید و `Deployment ID` را نگه دارید. بعد از هر تغییر در `Code.gs` باید deployment جدید بسازید. diff --git a/docs/fa/TROUBLESHOOTING.md b/docs/fa/TROUBLESHOOTING.md index 3563710..8d3004d 100644 --- a/docs/fa/TROUBLESHOOTING.md +++ b/docs/fa/TROUBLESHOOTING.md @@ -12,10 +12,10 @@ راه‌حل: -1. یک بار پراکسی را اجرا کنید تا فایل `ca/ca.crt` ساخته شود. -2. فایل `ca/ca.crt` را به عنوان trusted root certificate نصب کنید. -3. مرورگر را کامل ببندید و دوباره باز کنید. در Windows، Task Manager را هم چک کنید. -4. در Firefox گواهی را جداگانه از مسیر **Settings** -> **Privacy & Security** -> **Certificates** وارد کنید. +- یک بار پراکسی را اجرا کنید تا فایل `ca/ca.crt` ساخته شود. +- فایل `ca/ca.crt` را به عنوان trusted root certificate نصب کنید. +- مرورگر را کامل ببندید و دوباره باز کنید. در Windows، Task Manager را هم چک کنید. +- در Firefox گواهی را جداگانه از مسیر **Settings** -> **Privacy & Security** -> **Certificates** وارد کنید. می‌توانید این دستور را هم اجرا کنید: @@ -29,10 +29,10 @@ python main.py --install-cert راه‌حل: -1. فایل [apps_script/Code.gs](../../apps_script/Code.gs) را باز کنید. -2. مقدار `const AUTH_KEY = "...";` را پیدا کنید. -3. مطمئن شوید دقیقا با `auth_key` در `config.json` یکی است. -4. بعد از تغییر [apps_script/Code.gs](../../apps_script/Code.gs)، یک deployment جدید بسازید. +- فایل [apps_script/Code.gs](../../apps_script/Code.gs) را باز کنید. +- مقدار `const AUTH_KEY = "...";` را پیدا کنید. +- مطمئن شوید دقیقا با `auth_key` در `config.json` یکی است. +- بعد از تغییر [apps_script/Code.gs](../../apps_script/Code.gs)، یک deployment جدید بسازید. ## `Config not found` @@ -57,10 +57,10 @@ Google به جای JSON رله، HTML یا پاسخ غیرمنتظره برگر راه‌حل: -1. یک deployment جدید Apps Script بسازید. -2. `Deployment ID` جدید را داخل `config.json` بگذارید. -3. مطمئن شوید Web App با **Execute as: Me** و **Who has access: Anyone** deploy شده است. -4. اگر quota تمام شده، صبر کنید تا reset شود یا چند deployment دیگر با `script_ids` اضافه کنید. +- یک deployment جدید Apps Script بسازید. +- `Deployment ID` جدید را داخل `config.json` بگذارید. +- مطمئن شوید Web App با **Execute as: Me** و **Who has access: Anyone** deploy شده است. +- اگر quota تمام شده، صبر کنید تا reset شود یا چند deployment دیگر با `script_ids` اضافه کنید. ## صفحه به شکل کاراکترهای عجیب باز می‌شود @@ -76,11 +76,11 @@ Google به جای JSON رله، HTML یا پاسخ غیرمنتظره برگر راه‌حل: -1. پروژه را به‌روز کنید و وابستگی‌ها را دوباره با `pip install -r requirements.txt` نصب کنید. -2. فایل [apps_script/Code.gs](../../apps_script/Code.gs) را دوباره به عنوان deployment جدید Apps Script منتشر کنید. -3. اگر `Deployment ID` عوض شد، آن را در `config.json` جایگزین کنید. -4. اگر از Deno Exit Node استفاده می‌کنید، [apps_script/deno_deploy.ts](../../apps_script/deno_deploy.ts) را دوباره deploy کنید. -5. پراکسی و مرورگر را کامل restart کنید. +- پروژه را به‌روز کنید و وابستگی‌ها را دوباره با `pip install -r requirements.txt` نصب کنید. +- فایل [apps_script/Code.gs](../../apps_script/Code.gs) را دوباره به عنوان deployment جدید Apps Script منتشر کنید. +- اگر `Deployment ID` عوض شد، آن را در `config.json` جایگزین کنید. +- اگر از Deno Exit Node استفاده می‌کنید، [apps_script/deno_deploy.ts](../../apps_script/deno_deploy.ts) را دوباره deploy کنید. +- پراکسی و مرورگر را کامل restart کنید. ## Timeout اتصال @@ -98,7 +98,7 @@ python main.py --scan چک کنید: -1. terminal نشان می‌دهد HTTP proxy روی `127.0.0.1:8085` فعال است. -2. نوع پراکسی مرورگر **HTTP** است، نه HTTPS. -3. ترافیک HTTPS هم از همان HTTP proxy عبور می‌کند. -4. گواهی نصب شده و مرورگر کامل restart شده است. +- terminal نشان می‌دهد HTTP proxy روی `127.0.0.1:8085` فعال است. +- نوع پراکسی مرورگر **HTTP** است، نه HTTPS. +- ترافیک HTTPS هم از همان HTTP proxy عبور می‌کند. +- گواهی نصب شده و مرورگر کامل restart شده است.