Files
thefeed/README-FA.md
T

9.1 KiB

🌍 thefeed

خواندن کانال‌های تلگرام از طریق DNS — برای اینترنت سانسورشده

English | فارسی


thefeed چیست؟

thefeed یک سیستم تونل DNS است که به شما اجازه می‌دهد پیام‌های کانال‌های تلگرام را حتی وقتی تلگرام و اینترنت فیلتر شده، بخوانید. تنها چیزی که نیاز دارید DNS است — که تقریباً هیچ‌وقت مسدود نمی‌شود.

  کلاینت         درخواست DNS TXT         سرور            MTProto          تلگرام
 (رابط وب)   ─────────────────────▸    (DNS)    ──────────────────────▸    API
              ◂─────────────────────             ◂──────────────────────
                 پاسخ رمزنگاری‌شده

ویژگی‌ها

سمت سرور (خارج از ایران)

  • اتصال به تلگرام و خواندن پیام‌ کانال‌ها
  • سرو داده‌ها به صورت پاسخ DNS TXT رمزنگاری‌شده
  • padding تصادفی برای جلوگیری از شناسایی DPI
  • ذخیره‌سازی session — یک‌بار لاگین، همیشه اجرا
  • پشتیبانی از حالت بدون تلگرام (--no-telegram) — خواندن کانال‌های عمومی بدون نیاز به ورود به تلگرام

سمت کلاینت (داخل ایران)

  • رابط کاربری وب با پشتیبانی RTL/فارسی (فونت وزیرمتن)
  • تنظیمات از طریق مرورگر — بدون نیاز به خط فرمان
  • ارسال پیام به کانال‌ها و چت‌های خصوصی (نیاز به --allow-manage سمت سرور)
  • مدیریت کانال‌ها از راه دور (افزودن/حذف کانال‌ها)
  • فشرده‌سازی پیام‌ها (deflate)
  • محافظت رابط وب با رمز عبور (--password سمت کلاینت)
  • لاگ زنده درخواست‌های DNS در مرورگر
  • کش آفلاین — داده‌ها بعد از قطع اتصال نگه داشته می‌شوند

ضد DPI

  • اندازه متغیر پاسخ: Padding تصادفی (۰-۳۲ بایت)
  • کوئری تک‌برچسب: رمزنگاری Base32 در یک برچسب DNS
  • شافل Resolver: توزیع تصادفی کوئری‌ها بین resolverها
  • محدودیت نرخ: قابل تنظیم برای ترکیب با ترافیک عادی DNS
  • Padding تصادفی کوئری: ۴ بایت تصادفی در هر درخواست
  • اندازه بلاک متغیر: بلاک‌های ۴۰۰-۷۰۰ بایت

🔐 رمزنگاری و احراز هویت

مدل دو بخشی

بخش ۱ — رمز عبور رمزنگاری (--key): روی سرور و کلاینت هر دو لازم است. هر کسی با این رمز می‌تواند همه پیام‌ها (از جمله کانال‌های خصوصی) را بخواند. می‌توانید آن را با دوستان مورد اعتماد به اشتراک بگذارید.

بخش ۲ — مدیریت از راه دور (--allow-manage سمت سرور): وقتی فعال باشد، هر کسی با کلید رمزنگاری می‌تواند پیام ارسال کند و کانال‌ها را مدیریت کند. به صورت پیش‌فرض غیرفعال است.

رمز عبور وب کلاینت (--password): تمام صفحات رابط وب را با HTTP Basic Auth محافظت می‌کند. این فقط محافظت محلی است.

ویژگی‌های امنیتی

  • AES-256-GCM برای تمام پاسخ‌ها و پیام‌های ارسالی
  • کلیدهای مجزا از طریق HKDF برای کوئری و پاسخ
  • Padding تصادفی در هر دو جهت
  • بدون state — هر درخواست مستقل است
  • بررسی رمز عبور ادمین سمت سرور با مقایسه زمان‌ثابت
  • فایل session با مجوز ۰۶۰۰

⚠️ هرگز رمز عبور رمزنگاری (passphrase) خود را عمومی به اشتراک نگذارید — هر کسی با آن می‌تواند کلاینت خودش را اجرا و تمام پیام‌های شما را بخواند. --password سمت کلاینت فقط رابط وب روی دستگاه خودتان را محافظت می‌کند.

نصب سریع سرور

sudo bash -c "$(curl -Ls https://raw.githubusercontent.com/sartoopjj/thefeed/main/scripts/install.sh)"

اسکریپت:

  1. آخرین باینری را از GitHub دانلود می‌کند
  2. دامنه، رمز عبور، اطلاعات تلگرام و کانال‌ها را می‌پرسد
  3. به تلگرام لاگین می‌کند (یک‌بار)
  4. سرویس systemd را راه‌اندازی می‌کند
# بروزرسانی
sudo bash install.sh

# لاگین مجدد تلگرام
sudo bash install.sh --login

# حذف
sudo bash install.sh --uninstall

🖥️ نصب کلاینت

لینوکس / macOS / ویندوز

از صفحه Releases باینری مناسب سیستم خود را دانلود کنید.

# اجرا (مرورگر خودکار باز می‌شود)
./thefeed-client

# با پورت و دایرکتوری سفارشی
./thefeed-client --port 9090 --data-dir ./mydata

# با رمز عبور ادمین
./thefeed-client --password "your-password"

اندروید (Termux)

# نصب Termux از F-Droid
pkg update && pkg install curl

# دانلود باینری اندروید
curl -Lo thefeed-client https://github.com/sartoopjj/thefeed/releases/latest/download/thefeed-client-android-arm64
chmod +x thefeed-client

# اجرا
./thefeed-client
# مرورگر را باز کنید: http://127.0.0.1:8080

⚙️ تنظیمات DNS

شما به دو رکورد DNS نیاز دارید. فرض کنید IP سرور شما 203.0.113.10 است:

نوع نام مقدار
A ns.example.com 203.0.113.10
NS t.example.com ns.example.com

توجه: سرور باید روی پورت ۵۳ پاسخ بدهد. بهتر است روی پورت غیرمحدود (:5300) اجرا و با iptables فوروارد کنید:

نام اینترفیس شبکه خود را با ip a پیدا کنید و eth0 را جایگزین کنید:

sudo iptables -I INPUT -p udp --dport 5300 -j ACCEPT
sudo iptables -t nat -I PREROUTING -i eth0 -p udp --dport 53 -j REDIRECT --to-ports 5300
sudo ip6tables -I INPUT -p udp --dport 5300 -j ACCEPT
sudo ip6tables -t nat -I PREROUTING -i eth0 -p udp --dport 53 -j REDIRECT --to-ports 5300

برای ماندگار کردن این قوانین بعد از ریبوت:

sudo apt install iptables-persistent   # Debian/Ubuntu
sudo netfilter-persistent save

🛠️ ساخت از سورس

# پیش‌نیازها: Go 1.26+
make build          # ساخت سرور و کلاینت
make build-all      # کراس‌کامپایل تمام پلتفرم‌ها
make test           # اجرای تست‌ها
make upx            # فشرده‌سازی باینری‌ها با UPX

📋 پرچم‌های سرور

پرچم پیش‌فرض توضیح
--data-dir ./data دایرکتوری داده‌ها
--domain دامنه DNS (الزامی)
--key رمز عبور رمزنگاری (الزامی)
--channels {data-dir}/channels.txt فایل کانال‌ها
--api-id شناسه API تلگرام
--api-hash هش API تلگرام
--phone شماره تلفن تلگرام
--listen :53 آدرس شنود DNS
--login-only false فقط لاگین به تلگرام
--no-telegram false اجرا بدون ورود به تلگرام (فقط کانال‌های عمومی)
--padding 32 حداکثر padding تصادفی
--msg-limit 15 حداکثر تعداد پیام‌ها برای هر کانال تلگرام
--allow-manage false فعال‌سازی مدیریت از راه دور (ارسال پیام و مدیریت کانال‌ها)

📋 پرچم‌های کلاینت

پرچم پیش‌فرض توضیح
--data-dir ./thefeeddata دایرکتوری داده‌ها
--port 8080 پورت رابط وب
--password رمز عبور ادمین (خالی = بدون احراز هویت)

📂 فرمت channels.txt

# خطوط با # کامنت هستند
@VahidOnline
@SomeChannel

🤝 مشارکت

مشارکت شما خوش‌آمد است! Issue بزنید یا Pull Request بفرستید.

📄 لایسنس

MIT


برای ایران آزاد 🇮🇷

هر ایرانی حق دسترسی آزاد به اطلاعات را دارد