Files
thefeed/README-FA.md
T

212 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<div dir="rtl" align="right">
# 🌍 thefeed
**خواندن کانال‌های تلگرام از طریق DNS — برای اینترنت سانسورشده**
[English](README.md) | فارسی
---
## 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` سمت کلاینت فقط رابط وب روی دستگاه خودتان را محافظت می‌کند.
## ⚡ نصب سریع سرور
```bash
sudo bash -c "$(curl -Ls https://raw.githubusercontent.com/sartoopjj/thefeed/main/scripts/install.sh)"
```
اسکریپت:
1. آخرین باینری را از GitHub دانلود می‌کند
2. دامنه، رمز عبور، اطلاعات تلگرام و کانال‌ها را می‌پرسد
3. به تلگرام لاگین می‌کند (یک‌بار)
4. سرویس systemd را راه‌اندازی می‌کند
```bash
# بروزرسانی
sudo bash install.sh
# لاگین مجدد تلگرام
sudo bash install.sh --login
# حذف
sudo bash install.sh --uninstall
```
## 🖥️ نصب کلاینت
### لینوکس / macOS / ویندوز
از صفحه [Releases](https://github.com/sartoopjj/thefeed/releases) باینری مناسب سیستم خود را دانلود کنید.
```bash
# اجرا (مرورگر خودکار باز می‌شود)
./thefeed-client
# با پورت و دایرکتوری سفارشی
./thefeed-client --port 9090 --data-dir ./mydata
# با رمز عبور ادمین
./thefeed-client --password "your-password"
```
### اندروید (Termux)
```bash
# نصب 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` را جایگزین کنید:
> ```bash
> 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
> ```
>
> برای ماندگار کردن این قوانین بعد از ریبوت:
> ```bash
> sudo apt install iptables-persistent # Debian/Ubuntu
> sudo netfilter-persistent save
> ```
## 🛠️ ساخت از سورس
```bash
# پیش‌نیازها: 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
---
<div align="center">
**برای ایران آزاد 🇮🇷**
*هر ایرانی حق دسترسی آزاد به اطلاعات را دارد*
</div>
</div>