mirror of
https://github.com/masterking32/MasterHttpRelayVPN.git
synced 2026-05-18 06:24:35 +03:00
59 lines
3.5 KiB
Markdown
59 lines
3.5 KiB
Markdown
# معماری
|
|
|
|
MasterHttpRelayVPN از یک پراکسی محلی و یک relay که کاربر deploy میکند ساخته شده است.
|
|
|
|
## مسیر ساده
|
|
|
|
```text
|
|
Browser یا app
|
|
-> HTTP/SOCKS5 proxy محلی
|
|
-> اتصال TLS fronted به سمت Google
|
|
-> Apps Script relay
|
|
-> سایت مقصد
|
|
```
|
|
|
|
شبکه یک اتصال شبیه Google میبیند. URL واقعی مقصد داخل ترافیک رمزگذاریشده به relay فرستاده میشود.
|
|
|
|
## بخشهای اصلی
|
|
|
|
| فایل یا پوشه | کاربرد |
|
|
|--------------|--------|
|
|
| [main.py](../../main.py) | نقطه ورود CLI. config را میخواند، دستورهای certificate را اجرا میکند، و proxy را شروع میکند. |
|
|
| [setup.py](../../setup.py) | wizard تعاملی که `config.json` میسازد. |
|
|
| [start.bat](../../start.bat) | لانچر Windows. venv میسازد، dependency نصب میکند، setup را اجرا میکند، و proxy را بالا میآورد. |
|
|
| [start.sh](../../start.sh) | لانچر Linux/macOS با همین نقش. |
|
|
| [config.example.json](../../config.example.json) | نمونه کانفیگ و پیشفرضها. |
|
|
| [apps_script/Code.gs](../../apps_script/Code.gs) | رله Google Apps Script که کاربر deploy میکند. |
|
|
| [src/proxy/proxy_server.py](../../src/proxy/proxy_server.py) | HTTP CONNECT، مسیرهای MITM، SOCKS5، و تصمیمهای مربوط به host policy. |
|
|
| [src/proxy/mitm.py](../../src/proxy/mitm.py) | CA محلی و certificate های ساختهشده برای سایتها. |
|
|
| [src/relay/domain_fronter.py](../../src/relay/domain_fronter.py) | کلاینت Apps Script relay، batch، retry، و انتخاب transport H1/H2. |
|
|
| [src/relay/h2_transport.py](../../src/relay/h2_transport.py) | transport اختیاری HTTP/2 برای multiplexing. |
|
|
| [src/core/cert_installer.py](../../src/core/cert_installer.py) | نصب و حذف CA برای سیستمعامل و Firefox. |
|
|
| [src/core/google_ip_scanner.py](../../src/core/google_ip_scanner.py) | اسکنر IPهای Google برای `python main.py --scan`. |
|
|
|
|
## پردازش درخواست
|
|
|
|
- مرورگر ترافیک 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 را برای مرورگر بازسازی میکند.
|
|
|
|
## امکانات کارایی
|
|
|
|
- pool گرم اتصال TLS برای fallback H1.
|
|
- HTTP/2 multiplexing وقتی package `h2` نصب باشد.
|
|
- batch کردن درخواستهای static در burst ها.
|
|
- چند `script_ids` اختیاری برای load balancing.
|
|
- دانلود موازی range برای فایلهای بزرگ.
|
|
- Exit Node اختیاری برای مقصدهایی که خروجی Google را مسدود میکنند.
|
|
|
|
## مسیر Exit Node
|
|
|
|
```text
|
|
Browser -> Local proxy -> Apps Script -> Exit node -> Target website
|
|
```
|
|
|
|
Exit Node میتواند روی Cloudflare Workers، Deno Deploy، یا VPS اجرا شود. [راهنمای Exit Node](../exit-node/EXIT_NODE_DEPLOYMENT_FA.md) را ببینید.
|