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)"
اسکریپت:
- آخرین باینری را از GitHub دانلود میکند
- دامنه، رمز عبور، اطلاعات تلگرام و کانالها را میپرسد
- به تلگرام لاگین میکند (یکبار)
- سرویس 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
برای ایران آزاد 🇮🇷
هر ایرانی حق دسترسی آزاد به اطلاعات را دارد