Skip to content

Latest commit

 

History

335 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tunnel Config Builder (TCB) v6.8

ابزار ساخت کانفیگ VLESS و Trojan برای Cloudflare Workers و Cloudflare Pages — بدون نیاز به VPS یا سرور شخصی

معرفی

Tunnel Config Builder یک ابزار تحت وب است که به شما امکان می‌دهد بدون هیچ هزینه‌ای و تنها با استفاده از سرویس رایگان Cloudflare Workers یا Cloudflare Pages، کانفیگ‌های VLESS و Trojan بسازید. تمام مراحل از ساخت Worker/Pages تا تولید کانفیگ در همین صفحه انجام می‌شود.

ویژگی‌ها

  • پشتیبانی همزمان از دو پروتکل VLESS و Trojan روی یک Worker یا Pages واحد — با قابلیت انتخاب فقط VLESS، فقط Trojan یا هر دو به‌صورت همزمان
  • پشتیبانی از استقرار روی Cloudflare Pages در کنار Cloudflare Workers — کد یکسان روی هر دو سرویس اجرا می‌شود؛ برای Pages کافیست فایل ZIP حاوی _worker.js را در بخش آپلود مستقیم Cloudflare Pages بارگذاری کنید
  • ساخت و دانلود مستقیم فایل Worker یا فایل ZIP مخصوص Pages، هر دو با Token (VLESS) و Password (Trojan) جاسازی‌شده
  • دامنه پوششی (Fallback Domain): در صورت تنظیم، بازدیدکننده‌های غیرمجاز که مستقیم به آدرس Worker/Pages سر می‌زنند، به‌جای یک پاسخ خالی، محتوای یک دامنه واقعی دلخواه را می‌بینند
  • تولید UUID و Password اتوماتیک یا استفاده از مقادیر دلخواه
  • پشتیبانی از پورت‌های TLS: 443، 8443، 2053، 2083، 2087، 2096
  • پشتیبانی از پورت‌های WebSocket بدون TLS: 80، 8080، 8880، 2052، 2082، 2086، 2095 (فقط در حالت استقرار Worker؛ Cloudflare Pages به‌طور کامل و دائمی از این پورت‌ها پشتیبانی نمی‌کند)
  • پشتیبانی از چند IP و دامنه همزمان
  • انتخاب TLS Fingerprint از ۱۰ گزینه برای دور زدن DPI
  • انتخاب مسیر WebSocket Path
  • تنظیمات Fragment برای مقابله با فیلترینگ عمیق
  • تنظیمات پیشرفته JSON: Fake DNS، IPv6، Allow LAN، TCP Fast Open، Local DNS، Remote DNS / DoH
  • پشتیبانی از ECH برای رمزنگاری Client Hello و پنهان کردن SNI از دید DPI
  • قوانین مسیریابی قابل تنظیم: انتخاب کشورهای ایران، چین و روسیه برای مسیریابی مستقیم (Bypass) و انتخاب دسته‌های Ads، Porn، QUIC، Malware، Phishing و Cryptominers برای مسدودسازی؛ هر دو گروه هم‌زمان روی هر سه فرمت خروجی (Xray، Sing-box، Clash) اعمال می‌شوند
  • Bypass Sanctions: دور زدن مستقیم سرویس‌های تحریمی (OpenAI، Google AIs، Anthropic، xAI، Microsoft، Oracle، Docker، Adobe، Epic Games، Intel، AMD، Nvidia، Asus، HP، Lenovo) با یک DNS ضدتحریم قابل تنظیم (پیش‌فرض: 178.22.122.100)، حتی اگر IP خروجی شما ایرانی تشخیص داده شود
  • قوانین سفارشی مسیریابی: دو کادر متنی برای وارد کردن دامنه/IP/CIDR دلخواه جهت Bypass یا Block کردن مستقیم، مستقل از دسته‌بندی‌های آماده بالا
  • تنظیمات Observatory Settings (فاصله زمانی و پارامترهای leastPing/leastLoad) قابل ویرایش توسط کاربر برای هسته‌ی Xray
  • Chain Proxy — امکان زنجیر کردن کانفیگ‌های TCB به یک سرور خارجی (VLESS، Trojan، Shadowsocks، SOCKS5 یا HTTP) برای ثابت نگه‌داشتن IP خروجی، روی هر سه فرمت خروجی JSON (Xray، Sing-box، Clash)
  • کانفیگ JSON مخصوص هسته Xray بر اساس آخرین ساختار و قوانین شناخته‌شده‌ی این هسته (شامل Finalmask/Fragment پیشرفته)
  • تولید همزمان کانفیگ در چهار فرمت: لینک VLESS/Trojan، JSON برای هسته Xray (با قابلیت least ping)، JSON برای Sing-box و JSON برای Clash / Mihomo
  • نام‌گذاری هوشمند کانفیگ‌ها: نام هر کانفیگ به‌صورت خودکار بر اساس حالت آن (Normal، Fragment یا ECH) تعیین می‌شود و به‌طور یکسان روی هر سه فرمت خروجی JSON/YAML (Xray، Sing-box، Clash) و همچنین روی نام فایل‌های دانلودی اعمال می‌شود؛ در صورت تمایل می‌توانید یک نام دلخواه هم برای کانفیگ خود تعیین کنید
  • اکسپورت و ایمپورت تمام تنظیمات صفحه در قالب یک فایل، برای پشتیبان‌گیری یا انتقال سریع تنظیمات
  • نمایش QR Code اختصاصی برای هر کانفیگ با یک کلیک — تولید کاملاً آفلاین و بدون نیاز به هیچ سرویس یا API خارجی
  • نام‌گذاری یکتا برای هر کانفیگ تکی فرمت لینک (شامل پروتکل، شماره IP و پورت) تا هیچ دو کانفیگی نام یکسان نداشته باشند
  • دکمه «🔄 پاکسازی کامل و شروع مجدد» برای بازگرداندن آنی پنل به حالت اولیه و پاک‌سازی کامل و امن تمام اطلاعات وارد شده، مناسب برای استفاده روی سیستم‌های عمومی یا مشترک
  • راهنمای گام‌به‌گام اتصال دامنه شخصی به Worker (کاملاً از طریق داشبورد رسمی Cloudflare، بدون نیاز به هیچ توکن یا تنظیم اضافی در TCB)

محدودیت‌ها

  • تماس صوتی/تصویری (UDP): Cloudflare Workers در حال حاضر فقط از اتصال‌های خروجی TCP پشتیبانی می‌کند، نه UDP. به همین دلیل، مثل هر ابزار مشابه دیگری که روی Cloudflare Workers ساخته شده، ترافیک UDP (از جمله تماس صوتی/تصویری تلگرام یا برنامه‌های مشابه) از طریق کانفیگ‌های TCB به‌درستی کار نمی‌کند. این یک محدودیت پایه‌ای خود پلتفرم Cloudflare Workers است، نه چیزی که با تغییر کد Worker/Pages قابل رفع باشد.
  • محدودیت تعداد درخواست روزانه: پلن رایگان Cloudflare Workers روزانه ۱۰۰ هزار درخواست را پشتیبانی می‌کند. برای استفاده شخصی یا چند‌نفره این مقدار معمولاً کاملاً کافی است.
  • حداقل نسخه کلاینت برای ECH: پشتیبانی از ECH در Sing-box و در Clash/Mihomo نسبتاً جدید است؛ اگر با فعال بودن ECH کانفیگ‌های Sing-box یا Clash متصل نشدند، مطمئن شوید کلاینت شما به آخرین نسخه به‌روزرسانی شده باشد.

نحوه استفاده

مرحله ۱ — ساخت Worker یا Pages در Cloudflare

۱. به dash.cloudflare.com بروید و وارد حساب کاربری خود شوید.

۲. برای Worker: از منو Workers and Pages را انتخاب کنید، روی Create Application کلیک کنید، گزینه Create Worker را بزنید، یک نام دلخواه وارد کنید و Deploy کنید.

برای Pages: از همان صفحه‌ی «Ship something new»، پایین صفحه روی «Looking to deploy Pages? Get started» کلیک کنید، سپس گزینه‌ی «Drag and drop your files» را انتخاب کنید. در این حالت به‌جای Edit Code، فایل ZIP مخصوص Pages که در مرحله بعد از ابزار دانلود می‌کنید را مستقیماً در همین صفحه رها (drag & drop) کرده و Deploy site را بزنید.

مرحله ۲ — تنظیم Token و آپلود کد

۱. در ابزار، یک Token جدید بسازید یا UUID دلخواه خود را مستقیم در کادر وارد کنید. برای استفاده از پروتکل Trojan، یک Password نیز به همین ترتیب بسازید یا مقدار دلخواه خود را وارد کنید.

۲. در بخش ساخت کد، تب Worker یا تب Pages را متناسب با روشی که در مرحله ۱ انتخاب کردید انتخاب کنید.

۳. برای Worker: کد Worker که به‌صورت خودکار با Token و Password شما آپدیت شده را با دکمه کپی کد کپی کنید، یا با دکمه دانلود .js فایل worker.js را دانلود کنید؛ در داشبورد Cloudflare روی Edit Code کلیک کنید، کد پیش‌فرض را پاک کنید، کد کپی‌شده را Paste کنید و Deploy کنید.

برای Pages: روی دکمه «↓ دانلود ZIP» کلیک کنید تا فایلی حاوی _worker.js (با Token و Password شما جاسازی‌شده) دانلود شود؛ همین فایل ZIP را در صفحه‌ی «Drag and drop your files» رها کنید و Deploy site را بزنید. توجه داشته باشید که فایل داخل ZIP باید دقیقاً با نام _worker.js در ریشه‌ی آرشیو باشد تا Cloudflare Pages آن را به‌عنوان یک Worker کامل اجرا کند، نه یک فایل جاوااسکریپت استاتیک ساده.

۴. آدرسی که Cloudflare بعد از Deploy نمایش می‌دهد (مثل myworker.username.workers.dev برای Worker یا myproject.pages.dev برای Pages) را کپی کنید.

با دکمه «📤 اکسپورت تنظیمات» می‌توانید در هر مرحله یک فایل پشتیبان از تمام تنظیمات وارد شده در صفحه (Token، Password، پروتکل‌های انتخاب‌شده، آدرس Worker/Pages، IP ها، پورت‌ها، Fingerprint، WebSocket Path، تنظیمات Fragment، تنظیمات پیشرفته JSON، ECH، DNS، قوانین مسیریابی، Observatory Settings، Chain Proxy و نام کانفیگ) دانلود کنید. با دکمه «📥 ایمپورت تنظیمات» می‌توانید همان فایل را دوباره در صفحه بارگذاری کنید تا تمام تنظیمات به‌صورت خودکار بازیابی شوند.

این دکمه فقط فایلی را می‌پذیرد که دقیقاً با همین نسخه از TCB اکسپورت شده باشد. فایل‌های تنظیمات مربوط به نسخه‌های قدیمی‌تر (حتی اگر ساختار آن‌ها با دست تغییر داده شود) همیشه رد می‌شوند تا هیچ‌وقت تنظیمات ناقص یا ناسازگار با نسخه‌ی فعلی به‌اشتباه در صفحه اعمال نشود. اگر فایل تنظیمات خود را از یک نسخه‌ی قدیمی‌تر TCB نگه داشته‌اید، ابتدا باید تنظیمات را دستی در همین نسخه دوباره وارد کنید و سپس یک فایل خروجی جدید بگیرید تا از این پس قابل ایمپورت باشد.

مرحله ۳ — ساخت کانفیگ

۱. آدرس Worker یا Pages را در فیلد مربوطه وارد کنید.

۲. پروتکل یا پروتکل‌های موردنظر (VLESS، Trojan یا هر دو) را انتخاب کنید.

۳. IP های سالم Cloudflare را در کادر مربوطه وارد کنید. علاوه بر IP، می‌توانید از برخی دامنه‌ها نیز استفاده کنید (مثلاً chatgpt.com). برای یافتن IP های سالم می‌توانید از ابزار Clean IP Scanner استفاده کنید.

۴. پورت‌های TLS و WebSocket مورد نظر را انتخاب کنید.

۵. TLS Fingerprint و مسیر WebSocket Path را انتخاب کنید.

۶. در صورت تمایل، تنظیمات Fragment را فعال کرده و مقادیر دلخواه را وارد کنید.

۷. در صورت تمایل، تنظیمات پیشرفته JSON را بر اساس نیاز خود تغییر دهید.

۸. کشورهای موردنظر برای مسیریابی مستقیم و دسته‌های موردنظر برای مسدودسازی را انتخاب کنید؛ در صورت تمایل تنظیمات Observatory Settings را نیز تغییر دهید.

۹. در صورت تمایل به داشتن IP خروجی ثابت، کانفیگ سرور خارجی خود را در کادر Chain Proxy وارد کنید.

۱۰. روی ساخت کانفیگ کلیک کنید.

مرحله ۴ — استفاده از کانفیگ‌ها

  • کانفیگ‌های تولید شده (لینک‌های vless:// و trojan://) را در v2rayNG یا کلاینت‌های مشابه وارد کنید.
  • کانفیگ JSON خروجی Xray را در کلاینت‌های سازگار با Xray مانند v2rayNG وارد کنید تا از حالت least ping بهره‌مند شوید.
  • کانفیگ JSON خروجی Sing-box را مستقیماً در کلاینت‌هایی مثل Sing-box، Hiddify یا NekoBox وارد کنید.
  • کانفیگ خروجی Clash (با پسوند .yaml دانلود می‌شود) را در کلاینت‌های Clash Meta / Mihomo مانند Clash Verge وارد کنید.

پس از اتمام کار، به‌خصوص اگر از یک سیستم عمومی یا مشترک استفاده می‌کنید، حتماً روی دکمه «🔄 پاکسازی کامل و شروع مجدد» کلیک کنید تا تمام اطلاعات شما به‌طور کامل و امن پاک شوند (توضیحات کامل در بخش پاکسازی کامل و امنیت).

راهنمای تنظیمات

پروتکل‌ها — VLESS و Trojan

این ابزار روی یک Worker یا Pages واحد از هر دو پروتکل VLESS و Trojan پشتیبانی می‌کند. Token (UUID) برای احراز هویت VLESS و Password برای احراز هویت Trojan استفاده می‌شود؛ این دو کاملاً مستقل از هم عمل می‌کنند و تغییر هرکدام در کد Worker/Pages، فقط همان پروتکل را غیرفعال می‌کند (دقیقاً مثل رفتار Token در نسخه‌های قبلی). با چک‌باکس‌های «پروتکل‌های خروجی» در مرحله ۳ مشخص می‌کنید کدام پروتکل یا پروتکل‌ها برای شما کانفیگ (لینک، JSON، Sing-box و Clash) بسازند؛ کد Worker/Pages همیشه از هر دو پروتکل پشتیبانی می‌کند و تغییر این چک‌باکس‌ها نیازی به Deploy مجدد Worker/Pages ندارد.

TLS Fingerprint

این تنظیم مشخص می‌کند که کلاینت شما در TLS handshake خود را به عنوان چه مرورگر یا دستگاهی معرفی کند. سیستم‌های DPI با بررسی الگوی TLS می‌توانند ترافیک پروکسی را تشخیص دهند؛ انتخاب یک Fingerprint معمول مثل chrome یا firefox این تشخیص را دشوارتر می‌کند. گزینه‌های موجود:

chromefirefoxsafariiosandroidedge360qqrandomrandomized

WebSocket Path

مسیر WebSocket که در کانفیگ‌ها استفاده می‌شود. گزینه‌های موجود: /vless، /proxy، /v2ray، /ws، /

پورت‌های بدون TLS و محدودیت Cloudflare Pages

کانفیگ‌های بدون TLS (پورت‌های WebSocket ساده) فقط زمانی کار می‌کنند که کد را روی Cloudflare Worker مستقر کرده باشید. اگر روی Cloudflare Pages مستقر کرده باشید، این کانفیگ‌ها اصلاً و تحت هیچ شرایطی کار نخواهند کرد.

این یک محدودیت دائمی و رسمی از سمت خود Cloudflare است، نه یک باگ در TCB و نه چیزی که با تغییر کد Worker/Pages قابل رفع باشد: Cloudflare Pages هر درخواست HTTP (غیر-TLS) را همیشه و به‌صورت خودکار به HTTPS ریدایرکت می‌کند — این ریدایرکت در لایه شبکه خود Cloudflare اتفاق می‌افتد، پیش از آنکه اصلاً درخواست به کد شما برسد. این رفتار طبق تأیید صریح تیم Cloudflare عمدی است و قرار نیست تغییر کند. به همین دلیل، در پنل TCB وقتی تب Pages را انتخاب می‌کنید، بخش پورت‌های بدون TLS به‌طور خودکار غیرفعال می‌شود.

همین محدودیت، طبق مستندات پروژه‌های مشابه، برای Worker با دامنه اختصاصی (Custom Domain) هم صدق می‌کند — یعنی حتی اگر روی Worker (نه Pages) یک دامنه اختصاصی متصل کرده باشید، کانفیگ‌های همان دامنه اختصاصی هرگز نمی‌توانند از پورت‌های بدون TLS استفاده کنند. به همین دلیل، وقتی از قابلیت دامنه شخصی TCB استفاده می‌کنید (توضیح کامل در بخش اتصال دامنه شخصی به Worker پایین‌تر)، کانفیگ‌های ساخته‌شده با آن دامنه همیشه و به‌طور خودکار فقط با TLS ساخته می‌شوند — بدون این‌که پورت‌های بدون TLS مربوط به آدرس اصلی workers.dev شما محدود شوند، چون آن آدرس همچنان به‌طور کامل از پورت‌های بدون TLS پشتیبانی می‌کند.

اگر فقط به کانفیگ بدون TLS نیاز دارید (مثلاً برای شبکه‌هایی که TLS در آن‌ها بلاک است) و قصد استفاده از دامنه شخصی را ندارید، همان روش استقرار Worker با آدرس پیش‌فرض *.workers.dev کاملاً کافی است.

اتصال دامنه شخصی به Worker

اگر یک دامنه شخصی دارید (مثلاً یک دامنه .ir یا هر پسوند دیگری) و می‌خواهید علاوه بر آدرس پیش‌فرض workers.dev، از دامنه خودتان هم برای دسترسی به Worker استفاده کنید، این کاملاً ممکن است — و این قابلیت رسمی و رایگان خود Cloudflare است، نه چیزی که TCB نیاز به تنظیم اضافی برایش داشته باشد. کد Worker که TCB برایتان می‌سازد، بدون هیچ تغییری با دامنه شخصی هم کار می‌کند.

چرا TCB یک دکمه «اتصال خودکار دامنه» مثل بعضی پنل‌های مشابه ندارد؟ برخی پنل‌های مشابه (که به‌صورت یک اپلیکیشن دائمی روی Cloudflare با پایگاه‌داده KV اجرا می‌شوند) یک فیلد Custom Domain در تنظیمات خودشان دارند که با یک کلیک، دامنه را برایتان متصل می‌کند. این قابلیت فقط به این دلیل ممکن است که آن پنل‌ها از قبل یک Cloudflare API Token با دسترسی به حساب شما می‌گیرند و مستقیماً از طریق API کلادفلر تغییرات را اعمال می‌کنند. TCB عمداً و از پایه یک ابزار کاملاً استاتیک و آفلاین است که هیچ‌وقت هیچ توکن، رمز عبور API، یا اطلاعات حساب Cloudflare شما را دریافت نمی‌کند و هیچ تماس شبکه‌ای با هیچ سروری (جز خود شما) برقرار نمی‌کند؛ گرفتن چنین توکنی از کاربر، دقیقاً همان اصل سادگی و امنیت آفلاین بودن TCB را که در معرفی این پروژه به آن معروف است نقض می‌کند. خوشبختانه اتصال دامنه شخصی به هیچ توکن یا API‌ای نیاز ندارد — این کار کاملاً از طریق داشبورد رسمی خود Cloudflare و در چند کلیک ساده انجام می‌شود.

مراحل اتصال دامنه (روش فعلی داشبورد Cloudflare):

۱. دامنه خودتان را به Cloudflare اضافه کنید: وارد حساب Cloudflare شوید، از صفحه اصلی گزینه افزودن دامنه را بزنید و دامنه‌تان (مثلاً example.ir) را بدون https:// و بدون www وارد کنید.

۲. Cloudflare دو Nameserver به شما نشان می‌دهد. وارد پنل همان شرکتی شوید که دامنه را از آن خریده‌اید (Registrar) و در تنظیمات دامنه، Nameserverهای فعلی را با همین دو مورد جایگزین کنید.

۳. صبر کنید تا وضعیت دامنه در Cloudflare به Active برسد (معمولاً چند دقیقه تا چند ساعت طول می‌کشد).

۴. به بخش Workers & Pages بروید و روی Worker خودتان کلیک کنید.

۵. از مسیر SettingsDomains & RoutesAddCustom Domain، یک زیردامنه دلخواه (مثلاً vpn.example.ir — نه خود example.ir) وارد کرده و اضافه کنید.

Cloudflare به‌صورت کاملاً خودکار رکورد DNS لازم و گواهی TLS معتبر را برایتان می‌سازد — نیازی به تنظیم دستی رکورد DNS یا صدور گواهی جداگانه نیست.

۶. در پنل TCB، در مرحله ۲ و زیر همان کادر آدرس اصلی Worker/Pages، یک چک‌باکس با عنوان «همچنین یک دامنه شخصی هم به Worker متصل کرده‌ام» وجود دارد. با فعال کردن آن، یک کادر متنی جدید ظاهر می‌شود؛ همان زیردامنه (مثلاً vpn.example.ir) را در آن وارد کنید.

نکته مهم: این دو آدرس جایگزین هم نیستند، بلکه ترکیب می‌شوند. کادر بالایی (آدرس اصلی Worker/Pages) دست‌نخورده باقی می‌ماند و دقیقاً مثل قبل کانفیگ می‌سازد؛ کادر دوم فقط کانفیگ‌های اضافه‌ای با دامنه شخصی شما اضافه می‌کند. کانفیگ‌های JSON و YAML (Xray، Sing-box، Clash) هر دو مجموعه را در یک فایل ترکیبی می‌سازند و نام آن‌ها با ایموجی 🌐 مشخص می‌شود؛ کانفیگ‌های تکی فرمت لینک هم برای هر دو آدرس، جدا از هم و در کنار هم ساخته می‌شوند، با پسوند -D روی نسخه‌ی دامنه شخصی. چون دامنه شخصی از پورت‌های بدون TLS پشتیبانی نمی‌کند، کانفیگ‌های آن همیشه فقط با TLS ساخته می‌شوند؛ برای همین لازم است حداقل یک پورت TLS در بخش «پورت‌ها و Fingerprint» انتخاب شده باشد، وگرنه پنل هنگام ساخت کانفیگ هشدار می‌دهد.

دامنه پوششی (Fallback Domain)

در مرحله ۲، زیر کادر آدرس Worker/Pages، یک کادر اختیاری با عنوان «دامنه پوششی» وجود دارد. اگر کسی بدون اپلیکیشن پروکسی، مستقیماً آدرس Worker/Pages شما را باز کند، به‌صورت پیش‌فرض یک پاسخ خالی می‌بیند که می‌تواند نشانه‌ای از خاص بودن این آدرس باشد. با پر کردن این کادر با آدرس یک سایت واقعی و بی‌خطر (مثلاً یک سایت خبری)، آن بازدیدکننده به‌جای پاسخ خالی، محتوای همان سایت را می‌بیند.

⚠️ نکته مهم: برخلاف اکثر تنظیمات دیگر که فقط سمت کلاینت اعمال می‌شوند، این مقدار مستقیماً داخل کد Worker/Pages جاسازی می‌شود. یعنی با هر بار تغییر یا حذف این کادر، باید کد Worker/Pages را دوباره از پنل دریافت (کپی یا دانلود) و در Cloudflare جایگزین کنید، وگرنه تغییر اعمال نمی‌شود.

Fragment

با فعال کردن Fragment، داده‌های TLS handshake به قطعات کوچک‌تر تقسیم می‌شوند که تشخیص آن توسط DPI را دشوارتر می‌کند. این تنظیم روی کانفیگ JSON مخصوص هسته Xray به‌طور کامل و دقیق اعمال می‌شود؛ روی کانفیگ JSON مخصوص Sing-box هم اعمال می‌شود ولی فقط به‌صورت یک کلید روشن/خاموش ساده (بدون کنترل دقیق روی طول یا فاصله‌ی قطعات، چون Sing-box چنین کنترلی را ارائه نمی‌دهد). فرمت Clash/Mihomo و لینک‌های تکی فرمت URL (vless://، trojan://) اصلاً قابلیت Fragment را پشتیبانی نمی‌کنند و این تنظیم روی آن‌ها هیچ تاثیری ندارد. Fragment و ECH را نمی‌توان همزمان فعال کرد.

تنظیمات Fragment:

  • Fragment Packets: نوع داده‌ای که Fragment می‌شود. مقدار tlshello برای تقطیع TLS Client Hello توصیه می‌شود.
  • Fragment Interval: فاصله زمانی بین ارسال قطعات (میلی‌ثانیه).
  • Fragment Length: اندازه هر قطعه (بایت).
  • Fragment Max Split: حداکثر تعداد دفعات تقسیم بسته.

در فیلدهای Fragment Interval و Fragment Length می‌توانید به‌جای یک رنج ساده (مثل 10-20)، چند مقدار متوالی را با کاما از هم جدا کرده و وارد کنید (مثل 5,94,1) تا هر قطعه اندازه یا فاصله متفاوتی داشته باشد؛ آخرین مقدار وارد شده برای قطعات بعدی هم تکرار می‌شود.

تنظیمات پیشرفته Finalmask (اختیاری — فقط JSON هسته Xray)

این بخش زیرمجموعه‌ی تنظیمات Fragment است و برای کاربرانی طراحی شده که با اینترنت‌های همراه یا ثابت با محدودیت شدید در آپلود مواجه‌اند. این تنظیمات فقط روی کانفیگ JSON مخصوص هسته‌ی Xray اعمال می‌شوند و هیچ تاثیری روی کانفیگ‌های Sing-box و Clash ندارند.

  • فعال‌سازی مرحله دوم قطعه‌بندی (دو لایه): با فعال کردن این گزینه، خروجی مرحله اول Fragment یک‌بار دیگر هم قطعه‌قطعه می‌شود (معادل قرار گرفتن یک آبجکت fragment دوم در آرایه finalmask.tcp). فیلدهای Stage 2 Packets، Stage 2 Interval، Stage 2 Length و Stage 2 Max Split دقیقاً مشابه فیلدهای مرحله اول عمل می‌کنند و از همان قابلیت وارد کردن چند مقدار متوالی با کاما پشتیبانی می‌کنند.
  • استفاده از فینگرپرینت خام به‌جای فینگرپرینت انتخابی: در صورت فعال بودن، هسته‌ی Xray به‌جای تقلید از فینگرپرینت یک مرورگر خاص (مثل Chrome یا Firefox)، یک بسته ClientHello خام و با طول ثابت و قابل پیش‌بینی می‌سازد. این گزینه فقط روی خروجی JSON هسته‌ی Xray اعمال می‌شود؛ فرمت لینک، Sing-box و Clash همچنان از همان فینگرپرینتی استفاده می‌کنند که در بخش «پورت‌ها و Fingerprint» انتخاب کرده‌اید.
  • Cipher Suites سفارشی: به‌صورت اختیاری می‌توانید یک فهرست دلخواه از Cipher Suiteها وارد کنید. این مقدار هم فقط در JSON هسته‌ی Xray قرار می‌گیرد و اگر کادر خالی بماند، هیچ فیلد اضافه‌ای به خروجی افزوده نمی‌شود.

هدف اصلی این سه گزینه با هم این است که طول واقعی بسته‌ی ClientHello ثابت و قابل پیش‌بینی بماند تا نقاط شکستن Fragment (چه در مرحله اول و چه در مرحله دوم) همیشه دقیق و درست بیفتند؛ همین موضوع باعث می‌شود سرعت آپلود در شبکه‌های با محدودیت شدید بهبود پیدا کند.

ECH — Encrypted Client Hello

ECH یک لایه رمزنگاری اضافه روی TLS handshake است که نام دامنه مقصد (SNI) را از دید سیستم‌های DPI پنهان می‌کند. با فعال کردن ECH، کلید رمزنگاری دامنه Worker یا Pages شما به صورت خودکار از سرور DNS دریافت می‌شود و Client Hello را قبل از ارسال رمزنگاری می‌کند.

فعال کردن چک‌باکس به‌تنهایی کافی است. آدرس پیش‌فرض در کادر DNS (DoH Cloudflare) برای اکثر کاربران مناسب است. اگر DoH Proxy شخصی دارید، آدرس آن را جایگزین کنید تا پایداری بیشتری داشته باشید. ECH روی هر چهار فرمت خروجی (لینک VLESS/Trojan، JSON برای Xray، JSON برای Sing-box و JSON برای Clash) اعمال می‌شود، فقط در حالت Normal (بدون Fragment)، چرا که Fragment و ECH را نمی‌توان همزمان فعال کرد.

تنظیمات پیشرفته JSON

  • Fake DNS: DNS جعلی برای بهبود سرعت resolve در کلاینت.
  • IPv6: فعال یا غیرفعال کردن پشتیبانی از IPv6.
  • Allow LAN: امکان استفاده سایر دستگاه‌های شبکه محلی از پروکسی.
  • TCP Fast Open: بهبود سرعت اتصال با کاهش تأخیر handshake.
  • Local DNS: سرور DNS برای resolve دامنه‌های داخلی کشورهای انتخاب‌شده (پیش‌فرض: 8.8.8.8).
  • Remote DNS / DoH: سرور DNS برای ترافیک خارج از کشورهای انتخاب‌شده (پیش‌فرض: DoH Cloudflare). می‌توانید از ابزار DoH Proxy یک سرور DoH اختصاصی روی Cloudflare بسازید.

قوانین مسیریابی

این بخش شامل دو گروه چک‌باکس است که در هر سه فرمت خروجی (Xray، Sing-box، Clash) به‌صورت هماهنگ اعمال می‌شوند:

  • Bypass rules — ایران، چین، روسیه: مشخص می‌کند ترافیک و DNS مربوط به کدام کشور(ها) به‌صورت مستقیم و بدون عبور از پروکسی مسیریابی شود. حداقل یک کشور باید فعال باشد؛ به‌صورت پیش‌فرض فقط ایران انتخاب شده است. برای دقت بیشتر و جلوگیری از مسمومیت DNS، تشخیص دامنه‌های داخلی هر کشور در کانفیگ Xray با یک لایه تایید DNS اضافه (expectIPs) همراه است.
  • Block rules — Ads، Porn، QUIC، Malware، Phishing، Cryptominers: مشخص می‌کند کدام دسته‌ها مسدود شوند. QUIC یعنی مسدود شدن ترافیک UDP (شامل HTTP/3) تا مرورگر به‌صورت خودکار روی HTTPS معمولی که از تانل عبور می‌کند سوییچ کند. به‌صورت پیش‌فرض فقط QUIC فعال است؛ بقیه دسته‌ها (Ads، Porn، Malware، Phishing، Cryptominers) در صورت نیاز باید خودتان فعال کنید.

با فعال کردن هر یک از چک‌باکس‌های Malware، Phishing یا Cryptominers، یک پیام هشدار نمایش داده می‌شود. این سه دسته برخلاف Ads و Porn، در دیتاست پیش‌فرض («Official») بسیاری از کلاینت‌ها (مثل v2rayNG) اصلاً وجود ندارند و فقط در دیتاست‌های تکمیلی مثل Chocolate4U یا Loyalsoldier تعریف شده‌اند؛ اگر Geo Assets کلاینت شما روی این دیتاست‌های تکمیلی تنظیم و دانلود نشده باشد، فعال کردن این سه چک‌باکس می‌تواند باعث عدم اتصال کامل کانفیگ شود (مخصوصاً در کانفیگ JSON هسته Xray، چون این هسته برخلاف Sing-box و Clash امکان دریافت خودکار این فایل‌ها از یک آدرس مشخص در خود کانفیگ را ندارد). برای رفع این مشکل، در تنظیمات کلاینت خود (مثلاً در v2rayNG از مسیر تنظیمات → Geo Assets Provider) گزینه Chocolate4U/Iran-v2ray-rules یا Loyalsoldier را انتخاب و فایل‌ها را دانلود/آپدیت کنید.

برای هر کشور و هر دسته، از پایگاه‌های GeoIP/GeoSite مخصوص همان فرمت خروجی استفاده می‌شود.

Bypass Sanctions

این بخش، مستقل از Bypass rules (بخش «قوانین مسیریابی» بالاتر)، اجازه می‌دهد سرویس‌هایی که به دلیل تحریم IP‌های ایرانی را مسدود می‌کنند (نه به دلیل فیلترینگ داخلی) به‌صورت مستقیم و با یک DNS اختصاصی مسیریابی شوند: OpenAI، Google AIs، Anthropic، xAI، Microsoft، Oracle، Docker، Adobe، Epic Games، Intel، AMD، Nvidia، Asus، HP و Lenovo. کادر DNS ضدتحریم بالای این چک‌باکس‌ها به‌صورت پیش‌فرض روی 178.22.122.100 (Shecan) تنظیم شده و قابل تغییر به هر DNS دلخواه دیگر است. این قابلیت کاملاً سمت کلاینت است و روی کد Worker/Pages تاثیری ندارد.

دقیقاً زیر همین چک‌باکس‌ها، یک کادر متنی جداگانه با عنوان «دامنه‌های سفارشی ضدتحریم» هم وجود دارد — برای دامنه‌ها یا سرویس‌های تحریمی خاصی که در ۱۵ دسته‌ی بالا نیستند. دامنه‌هایی که اینجا وارد می‌کنید، برخلاف کادرهای «Custom Bypass Rules» پایین‌تر، هم مستقیم مسیریابی می‌شوند و هم برای Resolve شدن از همان DNS ضدتحریم بالا استفاده می‌کنند. توجه: این کادر فقط دامنه قبول می‌کند (نه IP یا CIDR)، چون DNS فقط دامنه Resolve می‌کند و برای IP خام معنی ندارد؛ برای IP/CIDR از کادرهای پایین‌تر استفاده کنید.

قوانین سفارشی مسیریابی

دو کادر متنی مستقل («Custom Bypass Rules» و «Custom Block Rules») برای وارد کردن دامنه، IP یا CIDR دلخواه — یک مورد در هر خط — که در چک‌باکس‌های آماده بالا وجود ندارند. دامنه‌ی وارد شده و همه زیردامنه‌هایش را هم شامل می‌شود. توجه: این دو کادر فقط مسیر اتصال (مستقیم/از تونل) را تعیین می‌کنند و DNS ضدتحریم را برای آن‌ها اعمال نمی‌کنند — برای آن حالت از کادر «دامنه‌های سفارشی ضدتحریم» در بخش Bypass Sanctions بالا استفاده کنید. این کادرها کاملاً سمت کلاینت عمل می‌کنند، بدون هیچ تاثیری بر کد Worker/Pages.

Observatory Settings

این بخش تنظیمات مربوط به نحوه‌ی تست و انتخاب بهترین سرور توسط هسته‌ی Xray را در اختیار شما قرار می‌دهد و دقیقاً منطبق بر بخش Observatory Settings کلاینت v2rayNG است:

  • leastPing Interval: فاصله زمانی بین تست‌های ساده‌ی پینگ برای انتخاب سریع‌ترین سرور. مقدار پیش‌فرض 3m (۳ دقیقه) است.
  • leastLoad Interval: فاصله زمانی بین دور‌های تست پیشرفته‌ی leastLoad. مقدار پیش‌فرض 5m (۵ دقیقه) است.
  • leastLoad Mode: روش ارسال درخواست تست — HEAD یا GET. مقدار پیش‌فرض HEAD است.
  • leastLoad Sampling: تعداد نمونه‌برداری در هر دور تست leastLoad. مقدار پیش‌فرض 2 است.
  • leastLoad Timeout: حداکثر زمان انتظار برای هر درخواست تست. مقدار پیش‌فرض 30s (۳۰ ثانیه) است.

مقادیر زمانی (leastPing Interval، leastLoad Interval، leastLoad Timeout) باید با پسوند m (دقیقه) یا s (ثانیه) وارد شوند — مثلاً 3m یا 30s — و leastLoad Sampling باید یک عدد صحیح مثبت باشد؛ پنل به‌صورت خودکار از ورود مقادیر نامعتبر در این کادرها جلوگیری می‌کند. این تنظیمات فقط روی کانفیگ JSON مخصوص هسته‌ی Xray اعمال می‌شوند (به‌صورت بخش‌های observatory و burstObservatory در کانفیگ) و روی کانفیگ‌های Sing-box و Clash تأثیری ندارند.

نکته فنی: از آنجا که هسته‌ی Xray گزینه‌ی allowInsecure را به‌طور کامل از تنظیمات TLS حذف کرده است، این گزینه از تمام کانفیگ‌های JSON مخصوص Xray (و همچنین کانفیگ‌های Chain Proxy) در پنل TCB حذف شده تا با آخرین نسخه‌های هسته‌ی Xray و کلاینت‌های مبتنی بر آن (مانند v2rayNG) کاملاً سازگار باشد.

Chain Proxy — ثابت کردن IP خروجی

با وارد کردن یک کانفیگ با فرمت URL از یک سرور خارجی (مثلاً یک VPS با IP ثابت) در کادر Chain Proxy، کانفیگ‌های TCB به آن سرور Chain می‌شوند: ابتدا از طریق Worker یا Pages شما (برای عبور از فیلترینگ) و سپس از طریق آن سرور به اینترنت متصل می‌شوید — یعنی IP خروجی همیشه ثابت و برابر با IP همان سرور خواهد بود.

فرمت‌های پشتیبانی‌شده در این کادر: VLESS (شبکه‌های tcp/ws/grpc با امنیت none/tls/reality)، Trojan (tcp/ws/grpc با tls)، Shadowsocks، SOCKS5 و HTTP.

نکات مهم:

  • این قابلیت فقط روی کانفیگ‌های JSON برای Xray، Sing-box و Clash اعمال می‌شود، نه روی کانفیگ‌های تکی فرمت لینک، چون Chain به دو گره هماهنگ نیاز دارد که فقط در یک فایل کانفیگ کامل قابل تعریف است.
  • وقتی این قابلیت فعال باشد، ایموجی ⛓️ کنار نام کانفیگ‌های JSON اضافه می‌شود تا مشخص باشد کدام کانفیگ‌ها Chain شده‌اند.
  • کانفیگی که در این کادر وارد می‌کنید نباید مربوط به یک Cloudflare Worker یا Pages دیگر باشد، چون هیچ‌کدام آی‌پی اختصاصی و ثابت ندارند؛ حتماً از کانفیگ یک سرور واقعی (مثل VPS) با آی‌پی اختصاصی خودش استفاده کنید.
  • کانفیگ‌های SOCKS5 و HTTP حتماً باید شامل نام کاربری و رمز عبور باشند (مثلاً socks://user:pass@host:port)؛ هسته Xray این دو مورد را برای این دو پروتکل الزامی می‌داند و بدون آن‌ها کانفیگ Chain کار نخواهد کرد. پنل TCB این موضوع را در همان لحظه ساخت کانفیگ بررسی و در صورت نبود، خطای واضحی نمایش می‌دهد.
  • برای غیرفعال کردن این قابلیت، کادر Chain Proxy را خالی بگذارید.

فرمت‌های خروجی کانفیگ

پس از ساخت کانفیگ، نتیجه به‌صورت همزمان در چهار فرمت در دسترس قرار می‌گیرد:

  • لینک VLESS (vless://) — برای وارد کردن مستقیم در v2rayNG و کلاینت‌های مشابه.
  • JSON برای Xray — کانفیگ کامل با حالت least ping برای انتخاب خودکار سریع‌ترین سرور.
  • JSON برای Sing-box — کانفیگ کامل برای Sing-box، Hiddify و NekoBox، شامل پشتیبانی از ECH در صورت فعال بودن.
  • JSON برای Clash / Mihomo — کانفیگ کامل برای Clash Meta و کلاینت‌های مشابه مانند Clash Verge، شامل پشتیبانی از ECH در صورت فعال بودن. این فایل با ساختار JSON نوشته شده اما با پسوند .yaml دانلود می‌شود، چرا که JSON زیرمجموعه معتبری از YAML است. توجه داشته باشید که فرمت Clash/Mihomo قابلیت Fragment را پشتیبانی نمی‌کند.

هر چهار فرمت بر اساس تنظیمات یکسانی (IP ها، پورت‌ها، Fingerprint، Fragment، تنظیمات پیشرفته JSON) ساخته می‌شوند.

نام‌گذاری کانفیگ‌ها

نام هر سه فرمت JSON/YAML (Xray، Sing-box، Clash) به‌صورت خودکار و هماهنگ بر اساس حالت کانفیگ تعیین می‌شود: Normal برای حالت عادی، Fragment در صورت فعال بودن Fragment، یا ECH در صورت فعال بودن ECH. در فیلد اختیاری «نام کانفیگ» (در انتهای تنظیمات مرحله ۳، بعد از Chain Proxy) می‌توانید یک نام دلخواه هم وارد کنید؛ این نام هم روی خود کانفیگ (در هر سه فرمت) و هم روی نام فایل‌های دانلودی اعمال می‌شود. اگر Chain Proxy فعال باشد، ایموجی ⛓️ هم به این نام اضافه می‌شود.

پاکسازی کامل و امنیت

دکمه «🔄 پاکسازی کامل و شروع مجدد» زیر دکمه ساخت کانفیگ قرار دارد و پس از یک پیام تأیید، پنل را دقیقاً به همان حالتی که در اولین بارگذاری صفحه دارد بازمی‌گرداند: تمام فیلدها به مقدار پیش‌فرض خود برمی‌گردند، Token و Password جدیدی تولید می‌شود، و بخش کانفیگ‌های ساخته‌شده محو می‌شود.

این دکمه صرفاً یک ریست ظاهری نیست؛ محتوای واقعی کانفیگ‌های تولیدشده (که در پس‌زمینه صفحه باقی می‌ماند) را هم کامل از حافظه صفحه پاک می‌کند، کلیپ‌بورد سیستم را (در صورت پشتیبانی مرورگر) خالی می‌کند، و فیلدهای حساس (Token، Password، آدرس Worker/Pages، IP ها، Chain Proxy، نام کانفیگ) قابلیت Autofill مرورگر را ندارند. علاوه بر این، حتی اگر فراموش کنید روی این دکمه کلیک کنید، به محض بستن یا ترک صفحه توسط شما، همین پاکسازی کامل به‌صورت خودکار و بی‌صدا انجام می‌شود.

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

اجرای آفلاین روی دستگاه شخصی

اگر می‌خواهید این ابزار را بدون نیاز به اینترنت، مستقیماً روی دستگاه خودتان اجرا کنید، مراحل زیر را دنبال کنید.

ابزارهای مورد نیاز

برای اجرای محلی این پروژه به دو چیز نیاز دارید:

  • Git — برای دانلود فایل‌های پروژه از GitHub
  • Python — برای راه‌اندازی یک سرور محلی ساده

مرحله ۱ — نصب Git (در صورت نیاز)

اگر Git روی سیستم شما نصب نیست، ابتدا آن را نصب کنید:

لینوکس (Ubuntu/Debian):

sudo apt install git

مک (macOS):

brew install git

ویندوز: از git-scm.com نصب‌کننده را دانلود و اجرا کنید.

Termux روی اندروید:

pkg install git

iSH روی iOS:

apk add git

مرحله ۲ — Clone کردن پروژه

با دستور زیر، تمام فایل‌های پروژه از GitHub روی دستگاه شما دانلود می‌شود:

git clone https://github.com/4n0nymou3/tcb.git

توضیح: دستور git clone یعنی «یک کپی کامل از این پروژه برایم بساز». بعد از اجرا، یک پوشه با نام tcb در مسیر جاری شما ایجاد می‌شود.


مرحله ۳ — رفتن به داخل پوشه پروژه

cd tcb

توضیح: دستور cd یعنی «وارد این پوشه شو». باید حتماً این مرحله را انجام دهید، وگرنه مراحل بعدی کار نمی‌کنند.


مرحله ۴ — نصب Python (در صورت نیاز)

Python معمولاً روی لینوکس و مک از قبل نصب است. اگر نصب نبود:

لینوکس (Ubuntu/Debian):

sudo apt install python3

مک (macOS):

brew install python3

ویندوز: از python.org نصب‌کننده را دانلود کنید. در حین نصب گزینه Add Python to PATH را حتماً تیک بزنید.

Termux روی اندروید:

pkg install python

iSH روی iOS:

apk add python3

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

این ابزار یک صفحه وب است و برای اجرای درست به یک سرور نیاز دارد. Python این سرور ساده را برای شما می‌سازد.

بسته به نسخه Python نصب‌شده روی سیستم، یکی از دستورات زیر را اجرا کنید:

Python 3 (لینوکس، مک، ویندوز، Termux):

python -m http.server 8080

Python 3 روی iSH:

python3 -m http.server 8080

Python 2 (نسخه قدیمی):

python -m SimpleHTTPServer 8080

توضیح: عدد 8080 شماره پورت است. اگر این پورت اشغال بود می‌توانید عدد دیگری مثل 8000 یا 9090 را جایگزین کنید.

وقتی سرور با موفقیت اجرا شود، چیزی شبیه به این می‌بینید:

Serving HTTP on 0.0.0.0 port 8080 ...

مرحله ۶ — باز کردن ابزار در مرورگر

مرورگر خود را باز کنید و آدرس زیر را وارد کنید:

http://localhost:8080

متوقف کردن سرور

وقتی کارتان تمام شد، برای خاموش کردن سرور کافیست در همان پنجره ترمینال کلیدهای زیر را بزنید:

Ctrl + C

اگر ترمینال را اشتباهاً بستید

گاهی پیش می‌آید که پنجره ترمینال را می‌بندید، اما سرور همچنان در پس‌زمینه در حال اجراست و پورت ۸۰۸۰ را اشغال کرده. در این حالت دفعه بعد که بخواهید سرور را دوباره راه‌اندازی کنید، با خطا مواجه می‌شوید.

برای حل این مشکل، دو دستور زیر را به ترتیب اجرا کنید:

اول — پیدا کردن برنامه‌ای که پورت ۸۰۸۰ را اشغال کرده:

lsof -i :8080

این دستور یک جدول نمایش می‌دهد. در ستون PID یک عدد می‌بینید — آن عدد شناسه (ID) برنامه‌ای است که باید بسته شود.

دوم — بستن آن برنامه با شناسه‌اش:

kill -9 PID

به جای PID عدد واقعی را از خروجی دستور قبل وارد کنید. مثلاً اگر عدد 2341 بود:

kill -9 2341

ابزارهای مرتبط

  • Clean IP Scanner — یافتن IP های سالم Cloudflare با Termux روی اندروید
  • DoH Proxy — ساخت سرور DNS over HTTPS اختصاصی روی Cloudflare

مجوز

این پروژه تحت مجوز MIT منتشر شده است — استفاده آزاد


سازنده

طراحی و توسعه توسط: Anonymous

ارتباط: Telegram


حمایت از پروژه

اگر این ابزار برای شما مفید بود:

  • ⭐ یک Star به repository بدهید
  • آن را با دوستانتان به اشتراک بگذارید

About

👽 TCB ... A browser-based VLESS & Trojan config generator for Cloudflare Workers & Pages — no VPS required.

Resources

Stars

41 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages