Enhance README and documentation with Telegram channel and acknowledgments, improve formatting and clarity

This commit is contained in:
Abolfazl
2026-05-09 05:51:48 +03:30
parent 188909ab8b
commit 7739acc97a
5 changed files with 69 additions and 63 deletions
+10 -6
View File
@@ -4,6 +4,10 @@
**Language:** English | [Persian / فارسی](README_FA.md) **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. 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 ```text
@@ -11,17 +15,17 @@ Browser -> Local proxy -> Google front -> Your Apps Script relay -> Target site
network filter sees a Google-facing connection 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) [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) [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. 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. 1. Open [Google Apps Script](https://script.google.com/) and sign in.
2. Click **New project**. 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). 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 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 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 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). - 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) - Telegram channel: [https://t.me/masterdnsvpn](https://t.me/masterdnsvpn)
- Windows client: [MHRWindowsApp](https://github.com/AriPath/MHRWindowsApp) - Windows client: [MHRWindowsApp](https://github.com/AriPath/MHRWindowsApp)
- Ad blocker filter source: [PersianBlocker](https://github.com/MasterKia/PersianBlocker/) - 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. 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.
+22 -19
View File
@@ -2,6 +2,10 @@
**زبان:** [English](README.md) | فارسی **زبان:** [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 اضافه کنید. MasterHttpRelayVPN یک پراکسی محلی است که ترافیک مرورگر را از مسیر Google Apps Script و Domain Fronting عبور می‌دهد. برای مسیر ساده فقط همین پروژه و یک اکانت رایگان Google کافی است. اگر بعضی سایت‌ها خروجی Google را مسدود کنند، بعدا می‌توانید Exit Node اضافه کنید.
```text ```text
@@ -9,32 +13,31 @@ MasterHttpRelayVPN یک پراکسی محلی است که ترافیک مرور
فیلتر فقط اتصال شبیه Google را می‌بیند فیلتر فقط اتصال شبیه 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/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) [مرجع تنظیمات](docs/fa/CONFIGURATION.md) | [رفع مشکل](docs/fa/TROUBLESHOOTING.md) | [نکات امنیتی](docs/fa/SECURITY.md) | [معماری](docs/fa/ARCHITECTURE.md)
## شروع خیلی سریع ## شروع خیلی سریع
قبل از اجرای پراکسی، باید یک بار رله Google را deploy کنید. فقط یک اکانت Google لازم دارید و این کار حدود دو دقیقه زمان می‌برد. قبل از اجرای پراکسی، باید یک بار رله Google را deploy کنید. فقط یک اکانت Google لازم دارید و این کار حدود دو دقیقه زمان می‌برد.
## ساخت رله Google ## ساخت رله Google ☁️
1. وارد [Google Apps Script](https://script.google.com/) شوید. - وارد [Google Apps Script](https://script.google.com/) شوید و روی **New project** کلیک کنید.
2. روی **New project** کلیک کنید. - محتوای پیش‌فرض ادیتور را کامل پاک کنید.
3. محتوای پیش‌فرض ادیتور را کامل پاک کنید. - فایل [apps_script/Code.gs](apps_script/Code.gs) را باز کنید، همه کد آن را کپی کنید، و داخل Apps Script قرار دهید.
4. فایل [apps_script/Code.gs](apps_script/Code.gs) را باز کنید، همه کد آن را کپی کنید، و داخل Apps Script قرار دهید. - این خط را پیدا کنید و با یک رمز طولانی و مخصوص خودتان عوض کنید:
5. این خط را پیدا کنید و با یک رمز طولانی و مخصوص خودتان عوض کنید:
```javascript ```javascript
const AUTH_KEY = "your-secret-password-here"; const AUTH_KEY = "your-secret-password-here";
``` ```
6. از مسیر **Deploy** -> **New deployment** -> **Web app** بروید. - از مسیر **Deploy** -> **New deployment** -> **Web app** بروید.
7. گزینه **Execute as** را روی **Me** بگذارید. - گزینه **Execute as** را روی **Me** بگذارید.
8. گزینه **Who has access** را روی **Anyone** بگذارید. - گزینه **Who has access** را روی **Anyone** بگذارید.
9. روی **Deploy** کلیک کنید، دسترسی‌ها را تایید کنید، و **Deployment ID** را کپی کنید. - روی **Deploy** کلیک کنید، دسترسی‌ها را تایید کنید، و **Deployment ID** را کپی کنید.
این دو مقدار را برای setup wizard نگه دارید: این دو مقدار را برای setup wizard نگه دارید:
@@ -54,10 +57,10 @@ cd MasterHttpRelayVPN
**گزینه B: ZIP** **گزینه B: ZIP**
1. [صفحه GitHub پروژه](https://github.com/masterking32/MasterHttpRelayVPN) را باز کنید. - [صفحه GitHub پروژه](https://github.com/masterking32/MasterHttpRelayVPN) را باز کنید.
2. روی **Code** -> **Download ZIP** کلیک کنید. - روی **Code** -> **Download ZIP** کلیک کنید.
3. فایل ZIP را extract کنید. - فایل ZIP را extract کنید.
4. داخل پوشه extract شده `MasterHttpRelayVPN` یک terminal باز کنید. - داخل پوشه extract شده `MasterHttpRelayVPN` یک terminal باز کنید.
بعد برنامه را اجرا کنید: بعد برنامه را اجرا کنید:
@@ -87,20 +90,20 @@ chmod +x start.sh
برای سایت‌های HTTPS، اگر برنامه نتوانست گواهی را خودکار نصب کند، فایل `ca/ca.crt` را نصب کنید. راهنمای کامل در [شروع سریع](docs/fa/GETTING_STARTED.md) است. برای سایت‌های HTTPS، اگر برنامه نتوانست گواهی را خودکار نصب کند، فایل `ca/ca.crt` را نصب کنید. راهنمای کامل در [شروع سریع](docs/fa/GETTING_STARTED.md) است.
## قدم‌های بعدی رایج ## قدم‌های بعدی رایج 🛠️
- اگر مرورگر خطای certificate نشان می‌دهد، [بخش خطای گواهی](docs/fa/TROUBLESHOOTING.md#خطاهای-certificate) را ببینید. - اگر مرورگر خطای certificate نشان می‌دهد، [بخش خطای گواهی](docs/fa/TROUBLESHOOTING.md#خطاهای-certificate) را ببینید.
- اگر خطای `unauthorized` می‌بینید، مقدار `AUTH_KEY` در [apps_script/Code.gs](apps_script/Code.gs) باید دقیقا با `auth_key` در `config.json` یکی باشد. - اگر خطای `unauthorized` می‌بینید، مقدار `AUTH_KEY` در [apps_script/Code.gs](apps_script/Code.gs) باید دقیقا با `auth_key` در `config.json` یکی باشد.
- اگر سرعت پایین است یا timeout می‌گیرید، دستور `python main.py --scan` را اجرا کنید و [مرجع تنظیمات](docs/fa/CONFIGURATION.md#دستورهای-عیب‌یابی) را ببینید. - اگر سرعت پایین است یا timeout می‌گیرید، دستور `python main.py --scan` را اجرا کنید و [مرجع تنظیمات](docs/fa/CONFIGURATION.md#دستورهای-عیب‌یابی) را ببینید.
- اگر سایت‌هایی مثل ChatGPT یا Turnstile با خروجی Google مشکل دارند، [راهنمای Exit Node](docs/exit-node/EXIT_NODE_DEPLOYMENT_FA.md) را بخوانید. - اگر سایت‌هایی مثل ChatGPT یا Turnstile با خروجی Google مشکل دارند، [راهنمای Exit Node](docs/exit-node/EXIT_NODE_DEPLOYMENT_FA.md) را بخوانید.
## پشتیبانی و اطلاع‌رسانی ## پشتیبانی و اطلاع‌رسانی 📣
- کانال Telegram: [https://t.me/masterdnsvpn](https://t.me/masterdnsvpn) - کانال Telegram: [https://t.me/masterdnsvpn](https://t.me/masterdnsvpn)
- کلاینت Windows: [MHRWindowsApp](https://github.com/AriPath/MHRWindowsApp) - کلاینت Windows: [MHRWindowsApp](https://github.com/AriPath/MHRWindowsApp)
- منبع فیلتر تبلیغات: [PersianBlocker](https://github.com/MasterKia/PersianBlocker/) - منبع فیلتر تبلیغات: [PersianBlocker](https://github.com/MasterKia/PersianBlocker/)
## امنیت ## امنیت 🔒
این پروژه برای آموزش، تست و پژوهش ارائه شده است. مسئولیت رعایت قوانین و شرایط سرویس‌ها با کاربر است. فایل `config.json`، مقدار `auth_key`، پوشه `ca/`، و آدرس Exit Node همراه با PSK معتبر را با کسی به اشتراک نگذارید. قبل از فعال کردن استفاده در شبکه محلی، [نکات امنیتی](docs/fa/SECURITY.md) را بخوانید. این پروژه برای آموزش، تست و پژوهش ارائه شده است. مسئولیت رعایت قوانین و شرایط سرویس‌ها با کاربر است. فایل `config.json`، مقدار `auth_key`، پوشه `ca/`، و آدرس Exit Node همراه با PSK معتبر را با کسی به اشتراک نگذارید. قبل از فعال کردن استفاده در شبکه محلی، [نکات امنیتی](docs/fa/SECURITY.md) را بخوانید.
+6 -6
View File
@@ -33,12 +33,12 @@ Browser یا app
## پردازش درخواست ## پردازش درخواست
1. مرورگر ترافیک HTTP یا HTTPS proxy را به `127.0.0.1:8085` می‌فرستد. - مرورگر ترافیک HTTP یا HTTPS proxy را به `127.0.0.1:8085` می‌فرستد.
2. برای HTTPS، proxy می‌تواند با CA تولیدشده MITM محلی انجام دهد. - برای HTTPS، proxy می‌تواند با CA تولیدشده MITM محلی انجام دهد.
3. قوانین host مشخص می‌کنند درخواست مستقیم، blocked، bypass، یا relayed باشد. - قوانین host مشخص می‌کنند درخواست مستقیم، blocked، bypass، یا relayed باشد.
4. درخواست‌های relayed به JSON برای Apps Script تبدیل می‌شوند. - درخواست‌های relayed به JSON برای Apps Script تبدیل می‌شوند.
5. Apps Script مقصد را fetch می‌کند و پاسخ HTTP سریال‌شده برمی‌گرداند. - Apps Script مقصد را fetch می‌کند و پاسخ HTTP سریال‌شده برمی‌گرداند.
6. پراکسی محلی پاسخ HTTP را برای مرورگر بازسازی می‌کند. - پراکسی محلی پاسخ HTTP را برای مرورگر بازسازی می‌کند.
## امکانات کارایی ## امکانات کارایی
+10 -11
View File
@@ -13,20 +13,19 @@ cd MasterHttpRelayVPN
**با ZIP:** **با ZIP:**
1. صفحه [GitHub پروژه](https://github.com/masterking32/MasterHttpRelayVPN) را باز کنید. - صفحه [GitHub پروژه](https://github.com/masterking32/MasterHttpRelayVPN) را باز کنید.
2. روی **Code** -> **Download ZIP** کلیک کنید. - روی **Code** -> **Download ZIP** کلیک کنید.
3. فایل ZIP را extract کنید. - فایل ZIP را extract کنید.
4. داخل پوشه `MasterHttpRelayVPN` یک terminal باز کنید. - داخل پوشه `MasterHttpRelayVPN` یک terminal باز کنید.
## 2. ساخت رله Google ## 2. ساخت رله Google
1. به [Google Apps Script](https://script.google.com/) بروید. - به [Google Apps Script](https://script.google.com/) بروید و یک پروژه جدید بسازید.
2. یک پروژه جدید بسازید. - محتوای [apps_script/Code.gs](../../apps_script/Code.gs) را داخل فایل `Code.gs` کپی کنید.
3. محتوای [apps_script/Code.gs](../../apps_script/Code.gs) را داخل فایل `Code.gs` کپی کنید. - مقدار `AUTH_KEY` را به یک رمز طولانی و تصادفی تغییر دهید.
4. مقدار `AUTH_KEY` را به یک رمز طولانی و تصادفی تغییر دهید. - از مسیر **Deploy** -> **New deployment** نوع **Web app** را انتخاب کنید.
5. از مسیر **Deploy** -> **New deployment** نوع **Web app** را انتخاب کنید. - گزینه **Execute as** را روی **Me** و گزینه دسترسی را روی **Anyone** بگذارید.
6. گزینه **Execute as** را روی **Me** و گزینه دسترسی را روی **Anyone** بگذارید. - Deploy کنید و `Deployment ID` را نگه دارید.
7. Deploy کنید و `Deployment ID` را نگه دارید.
بعد از هر تغییر در `Code.gs` باید deployment جدید بسازید. بعد از هر تغییر در `Code.gs` باید deployment جدید بسازید.
+21 -21
View File
@@ -12,10 +12,10 @@
راه‌حل: راه‌حل:
1. یک بار پراکسی را اجرا کنید تا فایل `ca/ca.crt` ساخته شود. - یک بار پراکسی را اجرا کنید تا فایل `ca/ca.crt` ساخته شود.
2. فایل `ca/ca.crt` را به عنوان trusted root certificate نصب کنید. - فایل `ca/ca.crt` را به عنوان trusted root certificate نصب کنید.
3. مرورگر را کامل ببندید و دوباره باز کنید. در Windows، Task Manager را هم چک کنید. - مرورگر را کامل ببندید و دوباره باز کنید. در Windows، Task Manager را هم چک کنید.
4. در Firefox گواهی را جداگانه از مسیر **Settings** -> **Privacy & Security** -> **Certificates** وارد کنید. - در Firefox گواهی را جداگانه از مسیر **Settings** -> **Privacy & Security** -> **Certificates** وارد کنید.
می‌توانید این دستور را هم اجرا کنید: می‌توانید این دستور را هم اجرا کنید:
@@ -29,10 +29,10 @@ python main.py --install-cert
راه‌حل: راه‌حل:
1. فایل [apps_script/Code.gs](../../apps_script/Code.gs) را باز کنید. - فایل [apps_script/Code.gs](../../apps_script/Code.gs) را باز کنید.
2. مقدار `const AUTH_KEY = "...";` را پیدا کنید. - مقدار `const AUTH_KEY = "...";` را پیدا کنید.
3. مطمئن شوید دقیقا با `auth_key` در `config.json` یکی است. - مطمئن شوید دقیقا با `auth_key` در `config.json` یکی است.
4. بعد از تغییر [apps_script/Code.gs](../../apps_script/Code.gs)، یک deployment جدید بسازید. - بعد از تغییر [apps_script/Code.gs](../../apps_script/Code.gs)، یک deployment جدید بسازید.
## `Config not found` ## `Config not found`
@@ -57,10 +57,10 @@ Google به جای JSON رله، HTML یا پاسخ غیرمنتظره برگر
راه‌حل: راه‌حل:
1. یک deployment جدید Apps Script بسازید. - یک deployment جدید Apps Script بسازید.
2. `Deployment ID` جدید را داخل `config.json` بگذارید. - `Deployment ID` جدید را داخل `config.json` بگذارید.
3. مطمئن شوید Web App با **Execute as: Me** و **Who has access: Anyone** deploy شده است. - مطمئن شوید Web App با **Execute as: Me** و **Who has access: Anyone** deploy شده است.
4. اگر quota تمام شده، صبر کنید تا reset شود یا چند deployment دیگر با `script_ids` اضافه کنید. - اگر quota تمام شده، صبر کنید تا reset شود یا چند deployment دیگر با `script_ids` اضافه کنید.
## صفحه به شکل کاراکترهای عجیب باز می‌شود ## صفحه به شکل کاراکترهای عجیب باز می‌شود
@@ -76,11 +76,11 @@ Google به جای JSON رله، HTML یا پاسخ غیرمنتظره برگر
راه‌حل: راه‌حل:
1. پروژه را به‌روز کنید و وابستگی‌ها را دوباره با `pip install -r requirements.txt` نصب کنید. - پروژه را به‌روز کنید و وابستگی‌ها را دوباره با `pip install -r requirements.txt` نصب کنید.
2. فایل [apps_script/Code.gs](../../apps_script/Code.gs) را دوباره به عنوان deployment جدید Apps Script منتشر کنید. - فایل [apps_script/Code.gs](../../apps_script/Code.gs) را دوباره به عنوان deployment جدید Apps Script منتشر کنید.
3. اگر `Deployment ID` عوض شد، آن را در `config.json` جایگزین کنید. - اگر `Deployment ID` عوض شد، آن را در `config.json` جایگزین کنید.
4. اگر از Deno Exit Node استفاده می‌کنید، [apps_script/deno_deploy.ts](../../apps_script/deno_deploy.ts) را دوباره deploy کنید. - اگر از Deno Exit Node استفاده می‌کنید، [apps_script/deno_deploy.ts](../../apps_script/deno_deploy.ts) را دوباره deploy کنید.
5. پراکسی و مرورگر را کامل restart کنید. - پراکسی و مرورگر را کامل restart کنید.
## Timeout اتصال ## Timeout اتصال
@@ -98,7 +98,7 @@ python main.py --scan
چک کنید: چک کنید:
1. terminal نشان می‌دهد HTTP proxy روی `127.0.0.1:8085` فعال است. - terminal نشان می‌دهد HTTP proxy روی `127.0.0.1:8085` فعال است.
2. نوع پراکسی مرورگر **HTTP** است، نه HTTPS. - نوع پراکسی مرورگر **HTTP** است، نه HTTPS.
3. ترافیک HTTPS هم از همان HTTP proxy عبور می‌کند. - ترافیک HTTPS هم از همان HTTP proxy عبور می‌کند.
4. گواهی نصب شده و مرورگر کامل restart شده است. - گواهی نصب شده و مرورگر کامل restart شده است.