Features • Quick Start • Usage • Documentation • فارسی
A robust, production-ready Telegram bot designed to extract V2Ray/Xray configurations from subscription links with intelligent Base64 auto-fix capabilities. Built for maximum reliability, speed, and ease of use.
|
|
|
|
| 🎯 Feature | 📝 Description | 🎨 Status | 🔥 Priority |
|---|---|---|---|
| Smart Base64 Decoder | Automatically detects and repairs missing Base64 padding | ✅ Stable | 🔴 Critical |
| Subscription Fetcher | Downloads HTTP/HTTPS subscription links with custom headers | ✅ Stable | 🔴 Critical |
| Multi-Protocol Support | VMess, VLess, Trojan, Shadowsocks, and more | ✅ Stable | 🟡 High |
| File Generator | Creates in-memory .txt files using io.BytesIO | ✅ Stable | 🔴 Critical |
| Proxy Tunneling | Routes all requests through local HTTP proxy (Karing/Clash/etc) | ✅ Stable | 🟡 High |
| Async Processing | Non-blocking concurrent request handling | ✅ Stable | 🔴 Critical |
| Error Recovery | Graceful handling of timeouts and malformed links | ✅ Stable | 🟡 High |
| Interactive UI | Custom ReplyKeyboard with Persian support | ✅ Stable | 🟢 Medium |
| Real-time Status | Live processing updates and progress indicators | ✅ Stable | 🟢 Medium |
| User Management | Channel membership verification (optional) | 🚧 Planned | 🟢 Medium |
graph LR
A[👤 User] -->|Sends Link| B[🤖 Telegram Bot]
B -->|Request| C{🌐 Proxy Layer}
C -->|Tunnel| D[📡 Subscription Server]
D -->|Base64 Data| C
C -->|Encoded Data| E[🔧 Base64 Fixer]
E -->|Corrected Padding| F[📦 Decoder]
F -->|Plain Text| G[🔍 Config Parser]
G -->|Extract Nodes| H[📄 File Generator]
H -->|.txt File| B
B -->|Document| A
|
System Requirements
|
Optional Components
|
# Clone via HTTPS
git clone https://github.com/0xradikal/Telegram-Config-Extractor.git
# Or clone via SSH
git clone git@github.com:0xradikal/Telegram-Config-Extractor.git
# Navigate to directory
cd Telegram-Config-Extractor# Option 1: Using pip
pip install -r requirements.txt
# Option 2: Manual installation
pip install python-telegram-bot requests
# Option 3: Using virtual environment (Recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txtMethod 1: Direct Edit (Quick)
# Edit main.py
TOKEN = "7891234567:ABCdefGHIjklMNOpqrsTUVwxyz123456789" # Your bot token
PROXY_URL = "http://127.0.0.1:3067" # Your local proxyMethod 2: Environment Variables (Recommended)
# Create .env file
echo "BOT_TOKEN=7891234567:ABCdefGHIjklMNOpqrsTUVwxyz123456789" >> .env
echo "PROXY_URL=http://127.0.0.1:3067" >> .env
echo "CHANNEL_ID=@Raydikalx" >> .envThen modify your code:
import os
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv("BOT_TOKEN")
PROXY_URL = os.getenv("PROXY_URL", "http://127.0.0.1:3067")- Open Telegram and search for @BotFather
- Send
/newbotcommand - Follow the instructions to create your bot
- Copy the API Token provided
- Paste it in your configuration
# Simple run
python main.py
# Run with logging
python main.py --log-level DEBUG
# Run in background (Linux/Mac)
nohup python main.py > bot.log 2>&1 &
# Run with auto-restart
while true; do python main.py; sleep 5; donesequenceDiagram
participant U as 👤 User
participant B as 🤖 Bot
participant S as 📡 Subscription Server
U->>B: /start
B->>U: Welcome + Keyboard
U->>B: Subscription Link
B->>U: ⏳ Processing...
B->>S: Fetch via Proxy
S->>B: Base64 Data
B->>B: Fix Padding
B->>B: Decode & Parse
B->>U: ✅ configs.txt
-
Start the Bot
Send: /start Response: Interactive keyboard appears -
Extract Configs
- Click
📥 استخراج کانفیگbutton - Or send subscription link directly:
https://sub.example.com/api/v1/client/subscribe?token=YOUR_TOKEN - Click
-
Receive File
- Bot shows:
⏳ در حال پردازش... - On success:
✅ تعداد X کانفیگ پیدا شد - Downloads:
configs.txtfile
- Bot shows:
# Standard V2Ray subscription
https://sub.example.com/link/YOUR_TOKEN
# API-based subscription
https://api.example.com/v1/client/subscribe?token=ABC123
# Short URL
https://short.link/abc123
# Base64 direct link
https://example.com/sub.txtdef fix_base64_padding(encoded_data: str) -> str:
"""
Intelligently repairs missing Base64 padding.
Base64 strings must be divisible by 4. If not,
padding characters ('=') are added.
Args:
encoded_data: Raw Base64 string from subscription
Returns:
Properly padded Base64 string
Example:
Input: "SGVsbG8gV29ybGQ" (15 chars)
Output: "SGVsbG8gV29ybGQ=" (16 chars)
"""
missing_padding = len(encoded_data) % 4
if missing_padding:
encoded_data += '=' * (4 - missing_padding)
return encoded_dataWhy is this important?
- Many subscription providers omit trailing
=characters - Python's base64 library requires correct padding
- This fixes ~80% of decoding failures
# System-wide proxy (affects all requests)
os.environ["HTTP_PROXY"] = "http://127.0.0.1:3067"
os.environ["HTTPS_PROXY"] = "http://127.0.0.1:3067"
# Alternative: requests-specific proxy
proxies = {
'http': 'http://127.0.0.1:3067',
'https': 'http://127.0.0.1:3067',
}
response = requests.get(url, proxies=proxies)Compatible Proxies:
- ✅ Karing (default port: 3067)
- ✅ Clash (default port: 7890)
- ✅ V2Ray (default port: 10809)
- ✅ Shadowsocks (various ports)
📝 Custom Headers
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept': 'text/html,application/xhtml+xml',
'Accept-Language': 'en-US,en;q=0.9',
'Accept-Encoding': 'gzip, deflate, br',
}
response = requests.get(url, headers=headers)⏱️ Timeout Settings
# Connect timeout: 5s, Read timeout: 15s
response = requests.get(url, timeout=(5, 15))
# Global timeout
response = requests.get(url, timeout=20)🔁 Retry Logic
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
retry_strategy = Retry(
total=3,
backoff_factor=1,
status_forcelist=[429, 500, 502, 503, 504]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session = requests.Session()
session.mount("http://", adapter)
session.mount("https://", adapter)Telegram-Config-Extractor/
│
├── 📄 main.py # Main bot application
├── 📄 requirements.txt # Python dependencies
├── 📄 README.md # This file
├── 📄 LICENSE # MIT License
├── 📄 .env.example # Environment variables template
├── 📄 .gitignore # Git ignore rules
│
├── 📁 utils/ # Utility modules (optional)
│ ├── decoder.py # Base64 decoder
│ ├── fetcher.py # Subscription fetcher
│ └── parser.py # Config parser
│
├── 📁 handlers/ # Telegram handlers (optional)
│ ├── start.py # /start command
│ └── message.py # Message handler
│
└── 📁 tests/ # Unit tests (optional)
├── test_decoder.py
└── test_fetcher.py
| Variable | Type | Default | Description |
|---|---|---|---|
TOKEN |
string | Required | Telegram Bot API token from @BotFather |
PROXY_URL |
string | http://127.0.0.1:3067 |
Local HTTP proxy address |
CHANNEL_ID |
string | @Raydikalx |
Channel username for membership check |
CHANNEL_URL |
string | https://t.me/Raydikalx |
Channel invite link |
TIMEOUT |
integer | 15 |
Request timeout in seconds |
MAX_RETRIES |
integer | 3 |
Maximum retry attempts |
| Error Type | Cause | Solution |
|---|---|---|
ConnectionError |
Proxy not running | Start your proxy application (Karing/Clash) |
TimeoutError |
Slow/blocked server | Check internet connection, try different link |
Base64Error |
Invalid encoding | Bot auto-fixes, if persistent, link is corrupted |
HTTPError 403 |
Subscription expired | Renew your subscription |
HTTPError 404 |
Invalid link | Verify the URL is correct |
❔ Why do I need a proxy?
If subscription links are blocked in your region, the bot routes requests through a local proxy (Karing, Clash, etc.) to access them.
❔ Can I use this without a proxy?
Yes! Simply remove or comment out these lines:
# os.environ["HTTP_PROXY"] = PROXY_URL
# os.environ["HTTPS_PROXY"] = PROXY_URL❔ What subscription formats are supported?
Any Base64-encoded subscription containing V2Ray/Xray configs:
- VMess (vmess://)
- VLess (vless://)
- Trojan (trojan://)
- Shadowsocks (ss://)
- And more...
❔ How do I get a subscription link?
Purchase a VPN service that provides V2Ray/Xray subscriptions. They'll give you a subscription URL.
❔ Is this bot safe?
Yes, the code is open-source and transparent. Review it yourself! We recommend:
- Don't share your bot token
- Use environment variables for sensitive data
- Host on a secure server
We welcome contributions! Here's how you can help:
- 🐛 Report Bugs: Open an issue with detailed description
- 💡 Suggest Features: Share your ideas via issues
- 📝 Improve Docs: Fix typos, add examples
- 🔧 Submit PRs: Fix bugs, add features
- ⭐ Star the Repo: Show your support!
- Fork the repository
- Create a feature branch:
git checkout -b feature/AmazingFeature - Commit changes:
git commit -m 'Add AmazingFeature' - Push to branch:
git push origin feature/AmazingFeature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License - You are free to:
✅ Use commercially
✅ Modify
✅ Distribute
✅ Private use
With conditions:
📋 Include copyright notice
📋 Include license text
Built With ❤️ Using:
Special Thanks To:
- python-telegram-bot - Excellent Telegram Bot framework
- Requests - HTTP library for Python
- V2Ray & Xray - Proxy protocols
- All contributors and users! 🎉
Python Developer & Network Security Enthusiast
"Building tools that make privacy accessible to everyone"
| Resource | Link |
|---|---|
| 📦 Repository | github.com/0xradikal/Telegram-Config-Extractor |
| 📱 Telegram Channel | @Raydikalx |
| 📖 Documentation | Wiki |
| 🐛 Issues | Issue Tracker |
| 💬 Discussions | GitHub Discussions |
ربات تلگرام استخراج کانفیگ V2Ray یک ابزار قدرتمند، حرفهای و کاملاً رایگان برای دریافت و پردازش خودکار لینکهای سابسکریپشن است. این ربات با استفاده از الگوریتمهای هوشمند، خطاهای رایج Base64 را به طور خودکار تشخیص و اصلاح میکند.
|
|
|
|
| مشکل | راهحل این ربات |
|---|---|
| 🔴 لینکهای سابسکریپشن فیلتر هستند | ✅ استفاده از پروکسی محلی (کارینگ، کلش و...) |
| 🔴 خطای Base64 در بیشتر لینکها | ✅ اصلاح خودکار و هوشمند padding |
| 🔴 فرآیند دستی استخراج کانفیگ | ✅ استخراج خودکار با یک کلیک |
| 🔴 نیاز به دانش فنی | ✅ رابط کاربری ساده و فارسی |
| 🔴 پردازش کند | ✅ سرعت بالا با معماری async |
الزامات سیستم:
- Python نسخه 3.9 یا بالاتر
- مدیر بسته pip
- Git (برای کلون کردن)
- اتصال اینترنت پایدار
اختیاری:
- پروکسی محلی (کارینگ، کلش، V2Ray)
- ویرایشگر کد (VS Code پیشنهاد میشود)
# دانلود از GitHub
git clone https://github.com/0xradikal/Telegram-Config-Extractor.git
# ورود به پوشه پروژه
cd Telegram-Config-Extractor# روش ساده
pip install -r requirements.txt
# یا نصب دستی
pip install python-telegram-bot requests
# روش توصیه شده: استفاده از محیط مجازی
python -m venv venv
source venv/bin/activate # در ویندوز: venv\Scripts\activate
pip install -r requirements.txt- در تلگرام @BotFather را جستجو کنید
- دستور
/newbotرا ارسال کنید - نام و یوزرنیم دلخواه برای ربات انتخاب کنید
- توکن API که دریافت میکنید را کپی کنید
- توکن را در فایل پیکربندی قرار دهید
روش اول: استفاده از کارینگ (Karing)
- نرمافزار کارینگ را اجرا کنید
- در تنظیمات، پورت پروکسی را بررسی کنید (معمولاً 3067)
- آدرس پروکسی در کد:
http://127.0.0.1:3067
روش دوم: استفاده از Clash
- کلش را اجرا کنید
- پورت پیشفرض معمولاً 7890 است
- آدرس پروکسی:
http://127.0.0.1:7890
روش سوم: استفاده از V2Ray
- V2Ray را با تنظیمات محلی اجرا کنید
- پورت پیشفرض معمولاً 10809 است
- آدرس پروکسی:
http://127.0.0.1:10809
روش اول: ویرایش مستقیم (سریع)
فایل main.py را باز کنید و مقادیر زیر را تغییر دهید:
TOKEN = "توکن_ربات_خود_را_اینجا_قرار_دهید"
PROXY_URL = "http://127.0.0.1:3067" # آدرس پروکسی محلی
CHANNEL_ID = "@your_channel" # آیدی کانال (اختیاری)روش دوم: فایل محیطی (توصیه میشود)
یک فایل .env ایجاد کنید:
BOT_TOKEN=7891234567:ABCdefGHIjklMNOpqrsTUVwxyz123456789
PROXY_URL=http://127.0.0.1:3067
CHANNEL_ID=@Raydikalxسپس کد را تغییر دهید:
import os
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv("BOT_TOKEN")
PROXY_URL = os.getenv("PROXY_URL")# اجرای ساده
python main.py
# اجرای با لاگگیری کامل
python main.py --log-level DEBUG
# اجرا در پسزمینه (لینوکس/مک)
nohup python main.py > bot.log 2>&1 &
# اجرا با راهاندازی مجدد خودکار
while true; do python main.py; sleep 5; doneمرحله ۱: شروع کار با ربات
- ربات را در تلگرام پیدا کنید
- دکمه Start یا دستور
/startرا بزنید - کیبورد تعاملی ظاهر میشود
مرحله ۲: ارسال لینک سابسکریپشن
دو روش ارسال لینک:
- روش اول: کلیک روی دکمه
📥 استخراج کانفیگ - روش دوم: مستقیماً لینک را در چت ارسال کنید
مرحله ۳: دریافت فایل
- ربات پیام
⏳ در حال پردازش...نشان میدهد - پس از چند ثانیه:
✅ تعداد X کانفیگ پیدا شد - فایل
configs.txtارسال میشود - فایل را دانلود و در برنامه V2Ray خود import کنید
✅ لینک استاندارد V2Ray
https://sub.example.com/link/TOKEN
✅ لینک API-based
https://api.example.com/v1/client/subscribe?token=ABC123
✅ لینک کوتاه
https://short.link/abc123
✅ فایل Base64 مستقیم
https://example.com/subscription.txt
مشکل: بسیاری از سرویسدهندگان سابسکریپشن، رشتههای Base64 را بدون کاراکترهای padding (علامت =) ارسال میکنند.
راهحل: ربات به طور خودکار padding لازم را اضافه میکند.
def fix_base64_padding(encoded_data: str) -> str:
"""
اصلاح هوشمند padding در Base64
رشتههای Base64 باید به 4 بخشپذیر باشند.
در غیر این صورت، کاراکتر '=' اضافه میشود.
مثال:
ورودی: "SGVsbG8gV29ybGQ" (15 کاراکتر)
خروجی: "SGVsbG8gV29ybGQ=" (16 کاراکتر)
"""
missing = len(encoded_data) % 4
if missing:
encoded_data += '=' * (4 - missing)
return encoded_dataچرا مهم است؟
- حدود ۸۰٪ از خطاهای decode را حل میکند
- سرعت پردازش را افزایش میدهد
- نیاز به دخالت دستی را حذف میکند
# روش اول: تنظیم سیستمی (تمام درخواستها)
os.environ["HTTP_PROXY"] = "http://127.0.0.1:3067"
os.environ["HTTPS_PROXY"] = "http://127.0.0.1:3067"
# روش دوم: تنظیم اختصاصی برای requests
proxies = {
'http': 'http://127.0.0.1:3067',
'https': 'http://127.0.0.1:3067',
}
response = requests.get(url, proxies=proxies)پروکسیهای سازگار:
| نرمافزار | پورت پیشفرض | وضعیت |
|---|---|---|
| Karing | 3067 | ✅ تست شده |
| Clash | 7890 | ✅ تست شده |
| V2Ray | 10809 | ✅ تست شده |
| Shadowsocks | متغیر | ✅ سازگار |
❔ آیا حتماً باید از پروکسی استفاده کنم؟
خیر! اگر لینکهای سابسکریپشن در کشور شما فیلتر نیستند، میتوانید بدون پروکسی استفاده کنید. کافی است خطوط مربوط به پروکسی را کامنت کنید:
# os.environ["HTTP_PROXY"] = PROXY_URL
# os.environ["HTTPS_PROXY"] = PROXY_URL❔ چگونه توکن ربات را دریافت کنم؟
- در تلگرام به @BotFather پیام دهید
- دستور
/newbotرا بفرستید - نام و یوزرنیم دلخواه انتخاب کنید
- توکن API را کپی کنید
❔ کدام پروتکلها پشتیبانی میشوند؟
تمام پروتکلهای استاندارد V2Ray/Xray:
- VMess (vmess://)
- VLess (vless://)
- Trojan (trojan://)
- Shadowsocks (ss://)
- Socks (socks://)
- HTTP (http://)
❔ اگر ربات خطا داد چه کنم؟
خطاهای رایج و راهحل:
| خطا | علت | راهحل |
|---|---|---|
ConnectionError |
پروکسی اجرا نیست | نرمافزار پروکسی را اجرا کنید |
TimeoutError |
سرور کند یا مسدود | اینترنت را بررسی کنید |
HTTPError 403 |
سابسکریپشن منقضی | سابسکریپشن را تمدید کنید |
HTTPError 404 |
لینک اشتباه | آدرس را بررسی کنید |
❔ آیا این ربات امن است؟
بله! پروژه کاملاً متنباز است و میتوانید کد را بررسی کنید. توصیهها:
- توکن را با کسی به اشتراک نگذارید
- از متغیرهای محیطی استفاده کنید
- روی سرور امن اجرا کنید
❔ چگونه میتوانم به پروژه کمک کنم؟
روشهای مشارکت:
- ⭐ ستاره دادن به مخزن
- 🐛 گزارش باگها
- 💡 پیشنهاد ویژگیهای جدید
- 📝 بهبود مستندات
- 🔧 ارسال Pull Request
- استخراج پایه کانفیگها
- اصلاح خودکار Base64
- پشتیبانی از پروکسی
- رابط کاربری فارسی
- بررسی عضویت در کانال
- پشتیبانی از چند پروکسی
- کش کردن نتایج
- آمار استفاده
- تست سرعت کانفیگها
- فیلتر کانفیگهای معیوب
- پایگاه داده کاربران
- پنل مدیریت وب
- API عمومی
اگر این پروژه برای شما مفید بود:
- ⭐ به مخزن ستاره بدهید
- 🔄 آن را به دیگران معرفی کنید
- 🐛 باگها را گزارش دهید
- 💡 پیشنهادات خود را ارسال کنید
از تمام کسانی که به این پروژه کمک کردهاند تشکر میکنیم!
|
Mohammad (Radikal) توسعهدهنده اصلی |
راههای ارتباطی:
|
این پروژه تحت مجوز MIT منتشر شده است. شما آزاد هستید:
✅ استفاده تجاری
✅ تغییر و اصلاح
✅ توزیع مجدد
✅ استفاده خصوصی
با شرط:
- درج اطلاعات کپیرایت
- درج متن مجوز
برای جزئیات بیشتر، فایل LICENSE را مطالعه کنید.
| موضوع | لینک |
|---|---|
| 🐍 Python Async | Real Python Guide |
| 🤖 PTB Documentation | python-telegram-bot |
| 🔐 V2Ray Protocol | V2Ray.com |
| 🌐 Proxy Setup | Karing Guide |
به زودی در کانال تلگرام منتشر خواهد شد
- ✨ انتشار اولیه پروژه
- 🚀 استخراج پایه کانفیگها
- 🔧 اصلاح خودکار Base64
- 🌐 پشتیبانی از پروکسی محلی
- 🇮🇷 رابط کاربری فارسی کامل