MCPcopy Index your code
hub / github.com/ajavadinezhad/zyrln

github.com/ajavadinezhad/zyrln @v1.6.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.6.0 ↗ · + Follow
638 symbols 2,170 edges 32 files 150 documented · 24%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

زیرلن (Zyrln)

English

ابزاری برای دور زدن فیلترینگ اینترنت در ایران. ترافیک شما را از زیرساخت گوگل عبور می‌دهد — بدون اثر انگشت VPN، بدون آی‌پی بلاک‌شده، بدون سرور اختصاصی قابل فیلتر.


فهرست مطالب


چطور کار می‌کند

سیستم فیلترینگ ایران (SNDPI) ترافیک را بررسی می‌کند تا سایت‌های فیلترشده را شناسایی و بلاک کند. زیرلن به دو روش این سیستم را دور می‌زند:

برای سرویس‌های گوگل (جیمیل، درایو، مپس و...): ترافیک مستقیم به گوگل فرستاده می‌شود، اما دست‌دهی TLS به قطعات کوچک تقسیم می‌شود. سیستم فیلترینگ نمی‌تواند این قطعات را به‌موقع بازسازی کند تا آدرس سایت را بخواند، پس اتصال را رد می‌کند. نیازی به هیچ سروری نیست.

برای بقیه سایت‌ها (اینستاگرام، توییتر و...): ترافیک از طریق Google Apps Script هدایت می‌شود — یک سرویس رایگان گوگل. از نظر سیستم فیلترینگ، این ترافیک عادی گوگل به نظر می‌رسد. Apps Script آن را به رله خروجی شما (VPS یا Cloudflare) می‌فرستد که سایت واقعی را باز می‌کند.


فقط می‌خوام سرویس‌های گوگل باز بشه (جیمیل، درایو، مپس)

نیازی به سرور نیست. هیچ راه‌اندازی‌ای لازم نیست. فقط دانلود کن و فعال کن.

  1. برنامه را از صفحه Releases دانلود کن
  2. اجرا کن — رابط گرافیکی خودبه‌خود در مرورگر باز می‌شود
  3. ویندوز: روی فایل .exe دوبار کلیک کن — GUI خودکار باز می‌شود
  4. لینوکس / macOS: از ترمینال با فلگ -gui اجرا کن:
# Linux
./zyrln-VERSION-linux-amd64 -gui
# macOS Apple Silicon
./zyrln-VERSION-darwin-arm64 -gui
# macOS Intel
./zyrln-VERSION-darwin-amd64 -gui
  1. روی دکمه ⚡ برق در نوار بالا کلیک کن تا حالت مستقیم فعال شود (سبز می‌شود)
  2. در مرورگرت پروکسی HTTP را روی 127.0.0.1:8085 تنظیم کن

همین. بسیاری از سرویس‌های گوگل می‌توانند وقتی مسیر شبکه اجازه بدهد از مسیر مستقیم و سریع‌تر استفاده کنند.

حالت مستقیم برای سرویس‌های گوگلی کار می‌کند که SNI-filtered هستند اما IP-blocked نیستند — جیمیل، درایو، مپس، گوگل داکس و مشابه. پخش ویدیو در یوتیوب و دانلود از پلی استور از طریق رله می‌رود. رفتار فیلترینگ بسته به ISP، شهر، اپراتور و زمان تغییر می‌کند.


می‌خوام همه چیز باز بشه

برای دسترسی به اینستاگرام، توییتر، تلگرام و سایت‌های غیر گوگل باید زنجیره رله راه‌اندازی کنی. حدود ۱۵ دقیقه طول می‌کشد.

چی نیاز دارم

چی هزینه
✅ ضروری اکانت گوگل رایگان
✅ ضروری کلید امنیتی (خودت می‌سازی) رایگان
☁️ یکی از این دو VPS با آی‌پی ثابت ~۵ دلار در ماه
☁️ یا این اکانت Cloudflare پلن رایگان کافیه

مرحله ۱ — اجرای برنامه دسکتاپ

  1. باینری سیستم‌عاملت را از Releases دانلود کن
  2. اجرا کن — رابط گرافیکی خودبه‌خود در مرورگر باز می‌شود
  3. ویندوز: روی فایل .exe دوبار کلیک کن — GUI خودکار باز می‌شود
  4. لینوکس / macOS: از ترمینال با فلگ -gui اجرا کن:
# Linux
./zyrln-VERSION-linux-amd64 -gui
# macOS Apple Silicon
./zyrln-VERSION-darwin-arm64 -gui
# macOS Intel
./zyrln-VERSION-darwin-amd64 -gui
  1. در بخش Security گواهینامه CA بساز و نصب کن (برای سایت‌های HTTPS لازم است)
  2. در بخش Settings روی Generate Key کلیک کن و کلید را کپی کن — در مراحل بعد به آن نیاز داری

تنظیم مرورگر:

مرورگر کجا تنظیم شود
Chrome / Edge Settings → System → Open proxy settings → Manual proxy → 127.0.0.1:8085
Firefox Settings → Network → Manual proxy → HTTP 127.0.0.1 port 8085
کل سیستم SOCKS5 با آدرس 127.0.0.1 پورت 1080 در تنظیمات شبکه سیستم‌عامل

نصب گواهینامه CA (برای سایت‌های HTTPS ضروری است):

  • Chrome/Edge: Settings → Privacy → Security → Manage certificates → Authorities → Import فایل zyrln-ca.pem
  • Firefox: Settings → Privacy & Security → Certificates → View Certificates → Authorities → Import

مرحله ۲ — راه‌اندازی رله خروجی

این گره خروجی است که سایت‌های واقعی را باز می‌کند. یکی را انتخاب کن:

گزینه الف — Cloudflare Worker (پیشنهادی، رایگان)

  1. به dash.cloudflare.com برو → Workers & Pages → Create
  2. محتوای فایل relay/cloudflare/worker.js را جای‌گذاری کن
  3. روی Deploy کلیک کن و آدرس Worker را کپی کن: https://worker-name.subdomain.workers.dev

گزینه ب — VPS

راهنمای کامل: docs/fa/vps-setup.md

خلاصه — روی VPS:

# بیلد و کپی روی سرور
GOOS=linux GOARCH=amd64 go build -o zyrln-relay ./relay/vps/main.go
scp zyrln-relay root@IP_VPS:/usr/local/bin/

# فایل /etc/zyrln-relay.env بساز:
ZYRLN_RELAY_LISTEN=0.0.0.0:8787
ZYRLN_RELAY_KEY=

ufw allow 8787/tcp

مرحله ۳ — راه‌اندازی Apps Script

این درب ورودی است. روی سرورهای گوگل اجرا می‌شود و ترافیک تو را دریافت می‌کند.

  1. به script.google.com برو → پروژه جدید
  2. کد پیش‌فرض را پاک کن و محتوای فایل relay/apps-script/Code.gs را جای‌گذاری کن
  3. سه خط اول را ویرایش کن:
const AUTH_KEY       = "your-key-from-step-1";
const EXIT_RELAY_URL = "http://YOUR_VPS_IP:8787/relay";
const EXIT_RELAY_KEY = "";
  • اگر از Cloudflare Worker استفاده می‌کنی: در EXIT_RELAY_URL آدرس Worker را بگذار، بدون /relay در انتها
  • اگر از VPS استفاده می‌کنی: EXIT_RELAY_KEY را با کلیدت پر کن؛ برای Cloudflare خالی بگذار

  • روی Deploy → New deployment کلیک کن

  • Type: Web app
  • Execute as: Me
  • Who has access: Anyone
  • روی Deploy کلیک کن و لینک را کپی کن — چیزی شبیه: https://script.google.com/macros/s/AKfycb.../exec

هر اکانت گوگل ۲۰,۰۰۰ درخواست در روز دارد. می‌توانی چندین لینک از اکانت‌های مختلف را با ویرگول جدا کنی. زیرلن همه را موازی امتحان می‌کند.

مرحله ۴ — اتصال

  1. در برنامه روی + کلیک کن تا پروفایل جدید بسازی
  2. آدرس Apps Script و کلید امنیتی را وارد کن
  3. SaveConnect

مرحله ۵ — راه‌اندازی اندروید

راهنمای کامل: docs/fa/android-setup.md

خلاصه: 1. APK را از Releases نصب کن 2. در برنامه دسکتاپ روی دکمه export کلیک کن → JSON را کپی کن 3. در اپ اندروید: Import Config from Clipboard را بزن 4. Install CA Certificate را بزن و مراحل را دنبال کن 5. روی پروفایل بزن تا متصل شود

⚠️ هرگز فایل گواهینامه را از کامپیوتر به گوشی کپی نکن. هر دستگاه گواهینامه اختصاصی خود را دارد. همیشه از دکمه Install CA Certificate داخل اپ استفاده کن.


ساخت از سورس

نیاز به Go نسخه ۱.۲۵ به بالا دارد.

# باینری دسکتاپ
make desktop

# باینری‌های انتشار دسکتاپ برای لینوکس، ویندوز و مک
make desktop-release

# یا ساخت یک پلتفرم
make desktop-linux
make desktop-windows
make desktop-macos

# APK اندروید (نیاز به Android SDK و NDK)
# یک بار اجرا کن — کلید امضا می‌سازد
make keystore
# APK نهایی می‌سازد
make android

# اجرای پروکسی از سورس
make proxy

# تست
make test

make desktop یک باینری محلی ./zyrln برای همین سیستم می‌سازد. make desktop-release باینری‌های مخصوص هر پلتفرم را داخل dist/ می‌سازد.


مشکلات رایج

هیچ سایتی از طریق پروکسی باز نمی‌شود - مطمئن شو برنامه در حال اجراست (نقطه سبز در GUI) - تنظیمات پروکسی مرورگر را بررسی کن: 127.0.0.1:8085 - از ابزار Diagnostics (دکمه پلی در بخش Tools) استفاده کن

سایت‌های HTTPS خطای SSL می‌دهند - گواهینامه CA نصب نشده یا مورد اعتماد نیست - دسکتاپ: فایل certs/zyrln-ca.pem را دوباره در مرورگر Import کن - اندروید: از دکمه Install CA Certificate در اپ استفاده کن، نه کپی دستی فایل

سهمیه Apps Script تمام شده - از چند اکانت گوگل استفاده کن و لینک‌ها را با ویرگول جدا کن

یوتیوب باز می‌شود ولی اینستاگرام نه - اینستاگرام علاوه بر SNI، آی‌پی‌هایش هم بلاک است — به زنجیره رله کامل نیاز دارد - مطمئن شو VPS یا Cloudflare در حال اجراست

اندروید: بعضی اپ‌ها باز نمی‌شوند - اپ‌هایی که گواهینامه خودشان را دارند (اپ‌های بانکی) از پروکسی سیستم پیروی نمی‌کنند


نکات امنیتی

  • هر کاربر باید Apps Script و کلید اختصاصی خودش را داشته باشد
  • فایل config.env، پوشه certs/ و هیچ کلید امنیتی‌ای را کامیت نکن
  • گوگل و ارائه‌دهنده VPS/Cloudflare می‌توانند متادیتای ترافیک را ببینند، اما محتوا را نه
  • اگر کلیدت جایی لیک شد، یک کلید جدید بساز و در همه جا جایگزین کن
  • کلید خصوصی CA (certs/zyrln-ca-key.pem) را با کسی به اشتراک نگذار

لایسنس

MIT — فایل LICENSE را ببین.

Extension points exported contracts — how you extend this code

SocketProtector (Interface)
SocketProtector is implemented by the Android VpnService to protect sockets from being routed through the VPN tunnel.
platforms/mobile/mobile.go

Core symbols most depended-on inside this repo

t
called by 40
platforms/desktop/gui/app.js
showLog
called by 37
platforms/desktop/gui/app.js
Write
called by 31
relay/core/fragment.go
logf
called by 23
relay/core/proxy.go
SetDirectEnabled
called by 23
relay/core/direct.go
fetch
called by 21
relay/cloudflare/worker.js
requestPriority
called by 19
relay/core/relay.go
showToast
called by 17
platforms/desktop/gui/app.js

Shape

Function 498
Method 96
Struct 35
Class 5
TypeAlias 2
FuncType 1
Interface 1

Languages

Go83%
Kotlin10%
TypeScript7%

Modules by API surface

platforms/desktop/main_test.go70 symbols
relay/core/relay_test.go61 symbols
platforms/desktop/main.go48 symbols
relay/core/relay.go46 symbols
platforms/desktop/gui/app.js42 symbols
relay/core/fragment_test.go41 symbols
android/app/src/main/java/com/zyrln/relay/MainActivity.kt39 symbols
relay/core/proxy.go37 symbols
relay/core/direct_profiles_test.go33 symbols
relay/core/proxy_test.go27 symbols
platforms/mobile/mobile.go25 symbols
relay/core/direct_profiles.go18 symbols

For agents

$ claude mcp add zyrln \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page