Skip to content

vless to sub - Built a subscription link with the ability to automatically add CF clean IPs to VLESS configurations

License

Notifications You must be signed in to change notification settings

NiREvil/Harmony

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

هارمونی

zread

ساخت لینک ساب با قابلیت افزودن خودکار آی‌پی تمیز کلادفلر و پارامترهای ثابت و متغیر برای کانفیگ‌های VLESS در جهت بهبود وضعیت دسترسی به اینترنت آزاد

متن ارائه شده به عنوان دستورالعمل پیکربندی CloudFlare Workers—Pages ارائه می‌شود.
فرض بر این است که مخاطب از دانش فنی لازم برخوردار است.

دستورالعمل پیکربندی

از هر کد وورکر که تمایل دارید برای ساخت یک کانفیگ Vless استفاده کنید. برای ما دو عنصر کلیدی در این پروسه فقط UUID و hostname کانفیگ هستند.

1. ایجاد کانفیگ Vless

من برای مثال از کد وورکر zizifn نسخه بهینه و ارتقاء یافته‌ی REvil برای ساخت کانفیگ VLESS استفاده کردم:

کد فشرده‌ی وورکر. کد نرمال وورکر

Note

اگر کانفیگ ندارید و تاکنون وورکر نساخته‌اید، توضیحات پیرامون ساخت کانفیگ را بخوانید. در غیر این صورت، این قسمت را نادیده گرفته و آموزش را ادامه دهید.


توضیحات پیرامون ساخت کانفیگ

افرادی که کانفیگ ندارند و تاکنون وورکری نساخته‌اند، می‌توانند به دو روش این کار را انجام دهند:

از طریق Workers (پیشنهادی)

کپی و پست مستقیم (سریع‌ترین روش)

این روش برای تست سریع و بدون نیاز به گیت‌هاب مناسب است.

  1. ورود به کلادفلر: وارد داشبورد Cloudflare شوید.

  2. ساخت ورکر: در نوار ابزار بالای سایت روی "Add" یا در موبایل روی آیکون "+" کلیک کرده سپس "workers" را انتخاب کنید.

  3. روی دکمه Get Start مقابل "Start with Hello World!" کلیک کرده و سپس یک نام دلخواه برای ورکر خود انتخاب کنید. سپس Deploy را بزنید.

  4. کپی کد: پس از اتمام مرحله ساخت وورکر روی گزینه Edit code کلیک کرده و سپس محتویات یکی از فایل‌های زیر را کپی کنید. (هیو تفاوتی ندارن)

  1. پس از عمل کپی؛ قطعه کد پیش‌فرض در صفحه ویرایش‌گر را حذف و کد خود را به‌طور کامل در آن جایگذاری کنید و سپس برای اعمال تغییرات انجام شده، از گوشه سمت راست روی گزینه آبی رنگ Deploy کلیک کنید.

از طریق Pages

این روش موقتا توصیه نمی‌شود به دلیل فیلتر شدن دامنه‌های pages.dev در کشور ایران، ترجیحا از روش worker پیش برید هنوز دامنه‌ی workers.dev عالی کار می‌کنه.

به‌ هر حال
این روش به شما اجازه می‌دهد از فایل کد پروژه را برای دپلوی در Cloudflare Pages (بدون اتصال به اکانت گیت‌هاب) استفاده کنید.

  1. فایل _worker.js— را از همین مخزن دانلود کنید.

  2. در کلادفلر، به بخش Pages بروید.

  3. در تب Pages روی دکمه Get Start مقابلDrag and drop your files کلیک کنید.

  4. برای پروژه خود یک نام انتخاب کرده و سپس فایل _worker.js را آپلود کنید تا پروسه دپلوی آغاز شود.


از طریق Fork مخزن

ساخت worker یا pages از طریق فورک و کلون کردن این مخزن و اتصال آن به کلادفلر

این ساده‌ترین روش برای مدیریت و بروزرسانی‌های آینده است.

  1. کپی کردن پروژه: ابتدا این مخزن (Repository) را در اکانت گیت‌هاب خود Fork کنید.

  2. ورود به کلادفلر: وارد داشبورد Cloudflare خود شوید.

  3. ساخت پروژه: در نوار ابزار بالای سایت روی "Add" یا در موبایل روی آیکون "+" کلیک کرده سپس "Pages" را انتخاب کنید. همچنین می‌توان از منوی سمت چپ از بخش Build و سپس سپس Compute & Ai به بخش worker & Pages دست یافت.

  4. در صفحه جدید گزینه "Import an existing Git repository" را انتخاب کنید.

  5. اول اگر به اکانت خود متصل نبودید "Connect to Git" را بزنید.

  6. انتخاب مخزن: مخزن فورک شده خود را انتخاب کنید و Begin setup را بزنید.

نکته

می‌تونید دقیقا عین همین روش رو برای وورکر پیاده کنید، چون الان دامین pages.dev فیلتر شده پس ساختن pages بدون داشتن دامنه‌ی شخصی بی‌فایده‌است، توصیه می‌کنم فورک بزنید مخزن رو، از داخل کلادفلر ساخت وورکر رو انتخاب کنید و سپس گزینه اتصال به اکانت گیت‌هاب رو انتخاب کرده و روی اسم مخزن فورک شده داخل لیست کلیک کنید و ...


تنظیمات دپلوی

Project name: یک نام دلخواه برای پروژه‌تان انتخاب کنید.

Production branch: شاخه main را انتخاب کنید.

Framework preset: گزینه None را انتخاب کنید.

ذخیره و دپلوی: روی Save and Deploy کلیک کنید. پروژه شما در چند ثانیه دپلوی خواهد شد!

همچنین می‌توان از دکمه زیر برای دپلوی مستقیم pages استفاده کرد. (فقط اسم انتخاب می‌کنید)

Deploy to Cloudflare Workers



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

بعد از راه‌اندازی، باید متغیرهای محیطی (Environment Variables) را برای شخصی‌سازی کانفیگ‌های خود تنظیم کنید. این متغیرها را در داشبورد پروژه خود در کلادفلر، در مسیر زیر اضافه کنید:

worker & Pages > Settings > Variables and Secrets > Add variable.


متغیر توضیحات الزامی - اختیاری مقدار پیش‌فرض*
UUID شناسه کاربری منحصر به فرد شما. این متغیر برای امنیت ضروری است. الزامی برای ساخت، به UUID Generator مراجعه کنید.
PROXYIP یک IP یا دامنه برای fronting. این آدرس به عنوان آی‌پی جایگزین موقع بازدید از وب‌سایت و سرویس‌های پشت کلادفلر مانند speedtest و whoer استفاده می‌شود. از مخزن پروکسی آی‌پی ما پیشنهادی یک مورد را انتخاب کنید. اختیاری مقدار پیشفرض: nima.nscl.ir هفتاد پروکسی آمریکا از بهترین ارائه دهنده‌ها
SCAMALYTICS_USERNAME نام کاربری سرویس Scamalytics برای تحلیل IP. اختیاری برای مصرف شخصی نیاز نیست. در صورت استفاده عمومی و فورک‌های زیاد، از سایت Scamalytics درخواست API شخصی بدهید. در عرض ۲۴ ساعت اطلاعات سرویس ایمیل می‌شود.
SCAMALYTICS_API_KEY کلید API سرویس Scamalytics. اختیاری همراه با نام کاربری از سایت Scamalytics دریافت می‌شود.
SCAMALYTICS_BASEURL اندپوینت سرویس Scamalytics. اختیاری همراه با نام کاربری و api برای شما ایمیل میشود.

نحوه استفاده

دسترسی به پنل مدیریت

پس اتمام پروسه دپلوی؛ کافیست UUID خود را به انتهای آدرس ورکر یا پیج خود اضافه کنید:

https://<Your-Worker-URL>/<Your-UUID>

برای مثال:

https://index.forexample.workers.dev/2210f3f0-513d-4d17-9ce2-c094d2f54580


2. شخصی‌سازی اسکریپت

دانلود اسکریپت

ابتدا اسکریپت هارمونی را کپی یا دانلود کنید. 1
Harmony.js

این اسکریپت را می‌توان توسط 2 Notepad++ در ویندوز یا ابزارهای مدیریت فایل مانند 3 MT Manager در اندروید و یا در داخل ویرایش‌گر گیت‌هاب و ... ویرایش کرد. در صورت دسترسی نداشتن به هیچ‌کدام، ابتدا وورکر جدید کلادفلر ایجاد کرده و این کد را داخل آن جایگذاری و سپس اقدام به ویرایش آن کنید.

ویرایش UUID

در ابتدای کد، UUID پیش‌فرض در لاین 32 را با UUID خود (از داخل یکی از کانفیگ‌هایی که از قبل یا تازه ساختید) جایگزین کنید.

ویرایش HostName

در این مرحله از ویرایش کد، باید ادرس هایت کانفیگ خود را با hostname پیش‌فرض را کد در سه بخش مختلف جایگزین کنید.

  • دسته‌ی اول کانفیگ‌های TLS

    • Host: line 55
    • SNI: line 56
  • دسته دوم کانفیگ‌های TCP

    • Host: line 69
    • SNI: line 70
  • دسته سوم کانفیگ‌های اضطراری

    • Host: line 83
    • SNI: line 84

نکته
در کانفیگ‌هایی که با وورکر یا پیج به میزبانی کلادفلر ساخته می‌شوند پارامتر SNI همان Hostname می‌باشد.

ذخیره کد

در نهایت کد ویرایش شده را ذخیره کنید.

3. ساخت Worker

  1. وارد داشبورد حساب Cloudflare شوید.

  2. در نوار ابزار بالای سایت روی آیکون "Add" (در موبایل آیکون "+") کلیک کرده سپس "Workers" را انتخاب کنید.

  3. روی گزینه Get Start در مقابل "Start with Hello World!" کلیک کرده و سپس یک نام دلخواه برای ورکر خود انتخاب کنید. سپس Deploy را بزنید.

  4. پس از اتمام ساخت وورکر روی Edit code کلیک کنید.

  5. قطعه کد پیش‌فرض در صفحه ویرایش‌گر را حذف و کد خود را به‌طور کامل در آن جایگذاری کنید و سپس برای اعمال تغییرات انجام شده، از گوشه سمت راست روی گزینه آبی رنگ Deploy کلیک کنید.

Tip

برای جلوگیری از بهم ریختگی ساختار کد یا جایگزاری ناقص؛ لطفاً از کلیدهای ترکیبی ctrl+c برای کپی و ctrl+v برای جایگذاری در دسکتاپ استفاده کنید. در موبایل می‌توان فایل js را درون وورکر آپلود کرد. و یا از Hackers keyboard کمک گرفت.

5. دریافت لینک اشتراک

پس از deploy شدن worker، در همان محیط ویرایشگر با کلیک بر روی گزینه Visit یک تب جدید باز شده چ کانفیگ‌های خود را در فرمت base64 مشاهده کنید.

از بخش آدرس بار مرورگر لینک آدرس را کپی کرده و از آن به عنوان لینک ساب در کلاینت دلخواه خود استفاده کنید. در تمام کلاینت‌های با هسته سینگ‌باکس و Xray می‌توان آنرا وارد کرد.

این URL به عنوان لینک اشتراک شما عمل خواهد کرد.

6. به‌روزرسانی لینک اشتراک

بر روی دکمه به‌روزرسانی اشتراک - Update Subscriptions داخل کلاینت کلیک کنید.

با هربار انجام این عمل، 30 عدد کانفیگ جدید با IP های تمیز به کلاینت شما اضافه خواهد شد.

Caution

برای شخصی‌سازی بیشتر، لطفاً توضیحات زیر را بخوانید.

توضیحات غیر ضروری

قبل‌تر گفتم واسه‌ی اینکه بتونیم شخصا از این اسکریپت استفاده کنیم، باید UUID و Hostname خودمون‌رو در لاین‌های ذکر شده در ابتدای کد جای‌گذاری کنیم. حالا می‌خوام یکم بیشتر شخصی‌سازی کنیم بر حسب نیاز.

1. مخازن IP تمیز

ما سه تا مخزن آی‌پی داریم که از هر کدوم ده تا آی‌پی fetch می‌کنه و برامون داخل کانفیگ‌ها قرار می‌ده، جمعاً سی تا کانفیگ در خروجی داریم.

مخزن اول

که داخل کد در لاین 932 با اسم dinamic1 نوشته شده درواقع آی‌پی‌تمیزهای کلادفلری هستن که اسکنر آی‌پی داخل گیت‌هاب خودمون هر سه چهارساعت یک‌بار اسکن و لیست می‌کنه، هارمونی‌هم میاد از همونجا یه مشت IPv4/IPv6 برمی‌داره داخل کانفیگ‌ها قرار میده هروقت که شما توی کلاینت روی گزینه آپدیت کلیک می‌کنید.

مخزن دوم

مخزن دوم زیر مخزن اول یعنی در لاین 933 نوشته شده با اسم dinamic2 که این‌هم باز دوباره واسه خودمونه، یه Api ساده برای فچ کردن آی‌پی کلادفلر از چند‌جای مختلف هستش.

مخزن سوم

در واقع آی‌پی‌هایی هستن که داخل کد hardcode شدن، با اسم staticIPs و نقش fallback رو دارن واسه مواقعی که اینترنتمون اونقدرا خوب نیست که بتونه از مخزن اول و دوم آی‌پی بگیره، از لاین 102 شروع میشن تا لاین 718 آی‌پی ورژن 6 هستن.

از ابتدای لاین 720 یه سری دامنه‌های پشت کلادفلر رو قرار دادم اونایی که عموما واسه همه خوب کار می‌کردن و پشت سر اوناهم یه چندتا آی‌پی ورژن 4 عادی نوشتم تااااا لاین 926. تمام آی‌پی‌ و دامنه‌های این مخزن و دوتای قبلی رو می‌تونید به دلخواه خودتون عوض کنید ولی پیشنهاد نمی‌کنم که مخزن یک و دو رو تغییر بدید، چون قطعا بهتر از اینا پیدا نمی‌کنید هیچ‌کجا.

2. Remark

کانفیگ‌ها ده تا ده تا نام‌گذاری میشن، از لاین 54 می‌تونید نام کانفیگ‌هایی که با آی‌پی‌های dinamic1 ساخته شدن رو تعیین کنید، پیش‌فرض هارمونی-1 هستن، و از لاین 68 کانفیگ‌های ساخته شده با آی‌پی‌های dinamic2 و از لاین 82 اسم اونایی که با آی‌پی‌های استاتیک داخل همین کد ساخته شدن رو می‌تونید Remark کنید.

3. alpn type

از لاین‌های 61 و 75 و 89 میشه نوع alpn رو تغییر داد برای هر دسته. من پیش‌فرض همه رو http/1.1 قرار دادم چون ما از کانفیگ‌های نوع vless-ws-tls داخل هارمونی اسنفاده می‌کنیم و این پروتکل وب‌سوکت تنها همین رو ساپورت می‌کنه، استفاده کرردن از h2 و h3 عملا بی‌فایده‌است.

4. Path & Max early data

از لاین 57 و 71 و [85] مقدار path قابل تغییره، هر اسمی، هر کلمه‌ای، جمله‌ای که خواستی بدون فاصله با حروف بزرگ و کوچیک می‌تونید قرار بدید، از یک الی 64 کاراکتر ممکنه. من پیشفرض تعیین کردم کاراکترهای رندوم ایجاد بشه.

لاین 37 از کد Max Early Data headers & Name توضیحش یکم سخته فقط اینو بگم که بذارید همین 2560 بمونه، می‌تونید به هر عددب نزدیک به ابن هم تغییرش بدید ولی بهتره که نکنید.

5. Fingerprints

لاین‌های 62 و 76 و 90 مربوط به fingerprints هستن، موقتا فقط chrome روی کانفیگ‌های وورکری کار می‌کنه واسه همینم به این یدونه محدودش کردم، در آینده‌ که این مشکل برطرف شده بود لیست کامل‌تری از فینگرپرینت‌های دلخواهتون بنویسید مثل:

fp: ["chrome", "randomized", "firefox", "safari", "edge", "example"],

6. Ports

لاین‌های 60 و 74 و 88 از کد، پورت‌های پیش‌فرض کلادفلر رو مشخص می‌کنن، شما می‌تونید هرکدوم از پورت‌های دیگه رو تعیین کنید نسبت به نوع کانفیگ خودتون، اگه کانفیگتون ساخته شده با pages باشه فقط میشه از پورت‌های HTTPS یا همون TLS استفاده کنید ولی اگه کانفیگتون ساخته شده با workers باشه می‌تونید هم از پورت‌های TLS و هم TCP استفاده کنید.

Tip

TLS:. 
ports: ["443", "8443", "2053", "2083", "2087", "2096"],
TCP:
ports: ["80", "8080", "8880", "2052", "2082", "2086", "2095"],

7. uniqueIPs.size >= 10

سه تا مخزن آی‌پی داشتیم که از هرکدوم ده تا کانفیگ می‌ساخت و بهمون تحویل می‌داد در مجموع سی تا کانفیگ، کی تعیین کرد سی تارو؟ خودمون :) از لاین 35 تعداد کانفیگ‌های ساخته شده در هر دسته رو میشه تعیین کرد،

8. Merging

و آخرین نکته، گفتم که سه تا دسته 10 تایی کانفیگ داریم تو خروجی این کد، می‌تونمید واسه هر دسته یه کانفیگ متفاوت قرار بدید، مثلا واسه دسته اول Host و SNI از کانفیگی که با کد BPB ساختید واسه دسته دوم هاست و sni کانفیگی که با کد فرضا Edtunnel ساختید رو قرار بدید و واسه دسته سوم هر هاست‌نیم و sni کانفیگ دیگه ای رو، ولی به یک شرط، به شرطی که واسه همه‌ی این سه تا از یک UUID استفاده کرده باشید، UUID همشون باید مشترک باشه و همونم تو لاین 32 کد قرار داشته باشه.

کنجکاو باشید. 🩶🪐

Footnotes

  1. Harmony.js

  2. Get Notepad++

  3. Get MT Manager

About

vless to sub - Built a subscription link with the ability to automatically add CF clean IPs to VLESS configurations

Topics

Resources

License

Stars

Watchers

Forks