Meli-Action: GitHub Actions-based Downloader & Web Archiver to Bypass Internet Filtering
مراجعه جامع به ملی اکشن — Meli-Action: ابزار مبتنی بر گیتهاب اکشن برای دسترسی به محتوای فیلترشده
مقدمه در جهانی که هر روز محدودیتهای دسترسی به محتوا گستردهتر میشود، ابزارهای مبتکرانه برای عبور از این فیلترها جایگاه ویژهای پیدا کردهاند. یکی از پروژههای جالب در این زمینه، ملی اکشن یا Meli-Action است. این ابزار به عنوان یک مجموعه گیتهابی اکشن (GitHub Actions) کار میکند که به صورت کلود-پایه اجرا میشود و هدف آن دانلود فایلها و ذخیرهٔ صفحات وب از رویدادهای مختلفی است: از مستقیمترین لینکها تا ویدیوها، موسیقیها و محتوای دیگر از پلتفرمهایی مانند YouTube، SoundCloud، Telegram و Google Play، و همچنین نگهداری آرشیو صفحات وب با استفاده از مرورگری بیسر (headless). نکتهٔ کلیدی این است که این عملیات بدون نیاز به نصب هر نرمافزاری در دستگاه شما انجام میشود و همه چیز در فضای ابری انجام میپذیرد. برای کاربر، نتیجهٔ نهایی یک فایل یا مجموعهٔ فایلهاست که میتواند مستقیم از گیتهاب دانلود شود، یا در مخزن شخصی شما توسط گیت پوش شود تا آرشیوها همواره در دسترس باشند.
چطور کار میکند؟ Meli-Action از قابلیتهای گیتهاب اکشن بهره میبرد تا فرآیند دانلودها و آرشیوها را در اجرایی مستقل از محدودیتهای محلی شما انجام دهد. این پروژه به روشی هوشمندانه از این ویژگی استفاده میکند تا بتواند با کمترین مداخلهٔ کاربر، محتوای مورد نظر را بازیابی کند و در مخزن کاربر ثبت کند. در ادامه به نحوهٔ عملکرد این ابزار به تفصیل میپردازیم.
اجرای گیتهاب اکشن روی سرورهای گیتهاب به واسطهٔ اجرا در سرورهای گیتهاب، عملیات دانلود و آرشیو از محیطی انجام میشود که معمولاً تحت محدودیتهای قوی فیلترینگ شبکهٔ ملی ایران قرار ندارد. این امر امکان دسترسی به منابعی را فراهم میکند که ممکن است در محیط کاربری محلی شما مسدود باشند. با این رویکرد، محتوای هدف بدون نیاز به نصب نرمافزار اضافی روی دستگاه شما، در فضای ابری دریافت میشود و به مخزن شما برمیگردد.
دانلود مستقیم با استفاده از wget برای دانلود فایلها از لینکهای مستقیم، از یک ورکفلو که از ابزار wget در runner گیتهاب استفاده میکند، بهره میبرد. پس از دانلود، به صورت مستقیم با استفاده از git push به ریپازیتوری شما اضافه میشود تا آمادهٔ دانلود معمولی از گیتهاب باشد. این فرایند برای کاربر ساده است و هر بار که ورودی معتبر ارائه شود، نتیجه در مخزن شما قابل دسترسی است.
آرشیو صفحات وب با مرورگر بیسر Chromium یکی از قابلیتهای جذاب، آرشیو صفحات وب فیلترشده است. در این حالت یک مرورگر بیسر Chromium به وسیلهٔ کتابخانهٔ pyppeteer راهاندازی میشود تا صفحهٔ هدف را کامل render کند. پس از rendering، صفحه با فرمت MHTML ذخیره میشود، سپس فایل آرشیو فشرده میشود و به مخزن شما پوش میگردد. این فرایند امکان بازدید دقیقتر از صفحات را در زمانهایی که ساختار یا منابع صفحه به صورت پویا بارگذاری میشوند فراهم میکند.
دانلودرهای تخصصی برای YouTube، Telegram، SoundCloud و Google Play برای هر پلتفرم، ورکفلوهای اختصاصی وجود دارند که از ابزارهای مخصوص آن پلتفرم استفاده میکنند. YouTube از yt-dlp بهره میبرد تا ویدیوها با کیفیت دلخواه دانلود شوند؛ همچنین برای جستجو و مرور از پروکسی V2Ray استفاده میشود (در قالب فایل google_service.json). لازم به ذکر است که با این پیکربندی صرفاً جستجو و تامبنیل لود میشود و پخش ویدیو بهطور مستقیم از طریق این کانفیگ انجام نمیشود. دانلودرهای دیگر مانند SoundCloud، Telegram و Google Play نیز با ابزارهای مخصوص خود فایلها را میآورند و در پوشهٔ downloads/ کامیت میشوند. این رویکرد امکان دسترسی به محتوای مختلف از فرصتهای مختلف را فراهم میکند بدون نیاز به نصب نرمافزارهای متعدد روی دستگاه کاربر.
مدیریت فایلهای بزرگ و تقسیمبندی در مورد دانلودهای مستقیم با اندازهٔ بزرگ، به خاطر محدودیتهای گیتهاب، فایلهای بالای ۹۹ مگابایت به تکههای ۹۵ مگابایتی تقسیم میشوند و هر تکه به صورت جداگانه به مخزن پوش میشود. این استراتژی باعث میشود که حجمهای بزرگ به سادگی توسط کاربران قابل دسترس باشند و محدودیتهای پلتفرم حفظ شوند.
قابلیتها: چه چیزهایی در Meli-Action وجود دارد؟ این پروژه طیف گستردهای از قابلیتها را در اختیار میگذارد تا کاربران بتوانند به سادگی و با کمترین دردسر به محتوای موردنظرشان دست یابند. در زیر به خلاصهای از امکانات کلیدی اشاره میکنیم:
دانلود از لینک مستقیم هر فایلی که از طریق یک URL مستقیم قابل دسترسی است، میتواند دانلود شود. برای فایلهای بزرگ، تقسیمبندی خودکار انجام میشود و هر تکه در مخزن ثبت میشود تا فرایند دانلود و مدیریت فایلها سادهتر باشد.
دانلودر YouTube ویدیوهای YouTube با کیفیت دلخواه کاربر دانلود میشوند. این قابلیت به کاربر امکان میدهد تا نسخهٔ مطلوب خود را دریافت کند و پس از دانلود، فایل به مخزن پروژه اضافه میشود.
دانلودر SoundCloud آهنگها و پلیلیستهای SoundCloud به صورت مستقیم قابل دانلود هستند. اگرچه برخی محدودیتهای حقوقی یا منابعهٔ خاص ممکن است وجود داشته باشد، این ابزار به کاربر امکان دسترسی به محتوای صوتی را فراهم میکند.
دانلودر Telegram فایلهای ضمیمهٔ پیامها از کانالهای عمومی Telegram قابل دانلود هستند. بدین ترتیب محتوا از کانالهایی که به صورت عمومی منتشر میشوند، به مخزن کاربر منتقل میشود.
دانلودر Google Play فایلهای APK از Google Play به وسیلهٔ خودکارسازی مربوط به Google Play استخراج میشوند. این قابلیت برای کاربرانی که نیازمند دسترسی به فایلهای نصبی هستند، میتواند مفید باشد.
آرشیو صفحات وب صفحات وبی که فیلتر شدهاند با استفاده از مرورگر بیسر به فرمت MHTML ذخیره میشوند و پس از آن فشردهسازی و ثبت در مخزن انجام میشود. این کار امکان بازتولید صفحات در هر زمان را با حفظ ساختار و منابع صفحه فراهم میکند.
دانلودر محتوای بزرگسالان پشتیبانی از یک پلتفرم مشهور بزرگسالان که لینک صفحه را کافی است بدهید تا دانلود انجام شود. ممکن است در برخی مواقع خطا بدهد؛ در این صورت میتوانید دوباره امتحان کنید. این قابلیت به کاربرانی که محتوای بزرگسالان را در دسترس دارند، امکان دسترسی سریعتر را میدهد، با این توضیح که مخاطرات حقوقی و قوانین سراسری هر کشور را باید مدنظر داشت.
شروع به کار: گامهایی ساده تا استفاده از Meli-Action اگر شما هم میخواهید از امکانات این ابزار استفاده کنید، مراحل راهاندازی به شکل زیر است:
گام ۱: فورک کنید در بالای صفحهٔ مخزن اصلی، دکمهٔ Fork را بزنید تا ریپازیتوری وارد حساب گیتهاب شما شود. این کار اجازه میدهد تا تغییرات و تنظیمات شما مستقل از مخزن اصلی باشند و به صورت شخصی مدیریت شوند.
گام ۲: مجوز نوشتن اکشنها را فعال کنید برای اینکه ورکفلوهای دانلود شما بتوانند فایلهای دانلودشده را به مخزن شما اضافه کنند، به مجوزهای اکشن نیاز است:
- وارد مخزن فورکشده شوید و به Settings بروید.
- از منوی سمت چپ، به Actions → General مراجعه کنید.
- زیر بخش "Workflow permissions" گزینهٔ "Read and write permissions" را انتخاب کنید.
- روی Save کلیک کنید.
- همچنین در بخش "Actions permissions" مطمئن شوید که "Allow all actions and reusable workflows" فعال است. نکتهٔ امنیتی: چون فورک متعلق به خودتان است، اعطای این مجوزها به ورکفلوهای خودتان امن است و به شما امکان مدیریت کامل را میدهد.
گام ۳: اجرای یک ورکفلو
- به تب Actions مخزن خود بروید.
- ورکفلو را که میخواهید اجرا کنید از لیست سمت چپ انتخاب کنید (مثلاً «دانلود از URL» یا «دانلودر YouTube»).
- روی دکمه Run workflow کلیک کنید و پارامترهای لازم مانند URL، کیفیت ویدیو یا پوشهٔ خروجی را وارد کنید.
- دوباره روی دکمهٔ سبز Run workflow کلیک کنید.
- پس از پایان اجرا، فایل دانلودشده در پوشهٔ مشخصشده در مخزن قابل مشاهده است و میتوانید از طریق گیتهاب آن را دانلود کنید.
ساختار ریپازیتوری: درک بهتر از محتوا و جایگاهها برای داشتن تصور روشن از معماری پروژه، ساختار ریپازیتوری به صورت درختی چنین است:
- Meli-Action/
- .github/
- workflows/
- download.yml — دانلودر لینک مستقیم
- youtube.yml — دانلودر YouTube
- telegram.yml — دانلودر تلگرام
- googleplay.yml — دانلودر گوگل پلی
- mhtml.yml — آرشیوکننده صفحات وب
- …
- downloads/ — پوشهٔ خروجی که فایلهای دانلود شده در آن نگهداری میشوند
- saveasmhtml.py — اسکریپت پایتون برای آرشیو صفحات با مرورگر بیسر
- google_service.json — کانفیگ v2ray برای مرور یوتیوب از طریق پروکسی
- README.md
این ساختار به کاربر اجازه میدهد تا به راحتی انواع ورکفلوها را شناسایی کرده و در صورت نیاز آنها را به مخزن خود اضافه یا تغییر دهد. هر فایل YAML مربوط به یک فرآیند دانلود یا آرشیو است و هر فایل مدخلهای مشخصی دارد که ورودیهای کاربر را مدیریت میکند: URL، کیفیت و خروجی.
جزئیات فنی: چگونه هر جزء کار میکند در این بخش به جنبههای فنی کلیدی و نحوهٔ کارکرد دقیق هر قابلیت میپردازیم تا دید بهتری از معماری و کاراییٔ پروژه به دست آید.
دانلودر لینک مستقیم با wget برای هر فایل مستقیم، wget در داخل runner گیتهاب اجرا میشود تا فایل را دریافت کند. اگر خروجی به اندازهٔ بیش از ۱۰۰ مگابایت برسد، به طور خودکار به تکههای حداکثر ۹۵ مگابایتی تقسیم میشود و هر تکه به مخزن پوش میشود. این رویکرد موجب حفظ محدودیتهای گیتهاب و حفظ یکپارچگی فایلها میشود.
آرشیو صفحات وب با saveasmhtml.py این اسکریپت با استفاده از pyppeteer (نسخهٔ پایتون Puppeteer) یک نمونهٔ Chromium بیسر را راهاندازی میکند و به URL مورد نظر میرود. پس از اینکه صفحه به طور کامل لود شد، صفحه به فرمت MHTML ذخیره میشود. سپس این آرشیو به صورت زیپ شده به مخزن پوش میشود تا قابل دانلود و بازبینی باشد.
دانلودر YouTube با yt-dlp و پروکسی استفاده از yt-dlp امکان انتخاب کیفیت ویدیو (مثلاً 720p، 1080p یا گزینههای صوتی تنها) را فراهم میکند. وجود فایل google_service.json امکان جستجو و مرور تامبنیلهای YouTube از طریق پروکسی v2ray را ممکن میکند. با این حال، این کانفیگ تنها برای جستجو و نمایش تامبنیل مناسب است و پخش مستقیم ویدیو از طریق این مسیر پشتیبانی نمیشود.
دانلودر Telegram برای کانالهای عمومی این قابلیت با بهرهگیری از API عمومی Telegram، فایلهای پیوستشده به پیامها در کانالهای عمومی را دانلود میکند. این امر برای کاربرانی که به محتوای عمومی کانالها دسترسی دارند، بسیار کاربردی است و میتواند نمایهای از منابع را به مخزن شما بیاورد.
دانلودر Google Play برای APKها با استفاده از ابزارهای اتوماسیون مخصوص Google Play، فایلهای APK از این فروشگاه دانلود میشوند. این فرایند به کاربر امکان دریافت فایلهای نصبی را میدهد که در برخی کاربردها لازم است.
آرشیو صفحات وب و محتوای بزرگسالان فرایند آرشیو یک صفحات وب مخصوص با حفظ فرمت و منابع در قالب MHTML انجام میشود و نهایتاً به مخزن پوش میشود. همچنین گزینهٔ دانلود محتوای بزرگسالان از یک پلتفرم معروف وجود دارد که به کاربر امکان دسترسی سریعتر به صفحهٔ هدف را میدهد؛ اما باید به محدودیتهای قانونی و رفتارهای پلتفرمها توجه کرد.
بهروزرسانیها و همگامسازی با مخزن اصلی برای حفظ همگامی با آخرین تغییرات پروژهٔ اصلی، ابزار “Sync fork” وجود دارد. با استفاده از این گزینه در صفحهٔ اصلی مخزن شما، میتوانید فورک خود را با آخرین نسخهٔ مخزن اصلی همگام کنید تا از هرگونه بهروزرسانی و اصلاح بهرهمند شوید. این فرایند ساده است اما اهمیت بالایی در حفظ هماهنگی با تغییرات اصلی دارد و شما را از نیاز به بازسازیٔ دستیٔ ورژنها بينیاز میکند.
مشارکت و توسعهٔ جامعه اگر شما ایدهای برای دانلودر جدید یا قابلیت جدید دارید، میتوانید از طریق Issue در مخزن اصلی پیشنهاد خود را مطرح کنید. ایجاد یک Issue شاید پیششرطی برای بررسیٔ قابلیت جدید باشد، اما جامعهٔ توسعهدهندگان میتواند با ارائهٔ بازخورد یا حتی مشارکت در کدنویسی، به توسعهٔ پروژه کمک کند. هر مشارکت در توسعهٔ ابزار با هدف بهبود تجربهٔ کاربر و افزایشٔ کارایی است و عموماً از طریق بازبینیهای کد و هماهنگی با تیم توسعهٔ اصلی به نتیجه میرسد.
سلب مسئولیت و اخلاق کاربردی این پروژه برای استفادهٔ شخصی، با هدف دسترسی به محتوای دارای محدودیت در محیطهای شبکهای طراحی شده است. کاربران مسئول رعایت قوانین و شرایط خدمات هر پلتفرمی هستند که با آنها تعامل دارند، و همچنین باید قوانین کشور خود را رعایت کنند. توجه به قوانین کپیرایت و سیاستهای استفاده از محتوا امری ضروری است و استفادهٔ ناخواسته یا خلاف قانون از هر ابزاری میتواند تبعات حقوقی و اخلاقی به دنبال داشته باشد.
حمایت و جامعهٔ کاربری اگر این ابزار برای شما مفید بوده است، با ستاره زدن به پروژه به توسعهدهندگان کمک کنید تا پروژهٔ دیگران راحتتر پیدا شود و در نتیجهٔ تعداد کاربران و بازخوردها افزایش یابد. وجود نمودار تاریخ ستارهها در صفحات پروژه میتواند نشاندهندهٔ پذیرش و رشد پروژه باشد:
تصویر تاریخچهٔ ستارهها
تصویر مشارکتکنندگان
این تصاویر، در کنار توضیحات، به درک بهتر کارایی و تاثیر پروژه بر جامعهٔ کاربران کمک میکند و به نمایش روند رشد پروژه میپردازد.
تصاویر و منابع در متن زیر میتوانید تصاویری که از Input استفاده شدهاند را مشاهده کنید. این تصاویر به عنوان بخشی از معرفی پروژه و نشان دادن جامعهٔ کاربران اضافه شدهاند:
- Star History Chart: https://api.star-history.com/svg?repos=Kurdeus/Meli-Action&type=Date
- Meli-Action contributors: https://contrib.rocks/image?repo=Kurdeus/Meli-Action
نتیجهگیری Meli-Action یک نمونهٔ نسبتاً منحصربهفرد از استفاده از پتانسیلهای گیتهاب اکشن برای عبور از محدودیتهای دسترسی به محتوا و حفظ آرشیوهای وب است. با ترکیب چندین ابزار و رویکرد متفاوت—از wget برای دانلودهای مستقیم تا pyppeteer برای آرشیو صفحات وب و yt-dlp برای محتوای چندرسانهای—این پروژه امکان دسترسی به منابع مختلف را به شیوهای امنتر و بهروزتر فراهم میکند. بدون نیاز به نصب نرمافزار بر روی دستگاه کاربر و با اجرای کامل در فضای ابری، کاربری که به دنبال ذخیرهٔ محتوا و ایجاد آرشیوهای شخصی از منابع مختلف است، میتواند با فرایندهای سادهٔ فورک، تنظیم مجوزها و اجرای ورکفلوها، به نتیجه برسد.
توصیهٔ نهایی اگر به هر دلیلی قصد دارید از این ابزار استفاده کنید، پیش از هر چیز به قوانین محتوای مرتبط با هر پلتفرم و همچنین قوانین کشور خودتان احترام بگذارید. از نظر فنی، مطمئن شوید که ورودیهایی مانند URLها، کیفیت و خروجیها به درستی تنظیم شدهاند و از لحاظ حقوقی نیز مطابقت دارند. همچنین به خاطر داشته باشید که بهروزرسانیهای مخزن اصلی را دنبال کنید و از قابلیت Sync fork برای همگامسازی استفاده کنید تا از هردم با آخرین اصلاحات و امکانات آشنا باشید.
و در پایان اگر این ابزار برای پروژهٔ شما مفید بود یا ایدهای برای بهبود آن دارید، دست به کار شوید و با مشارکت در این پروژه، به بهبود تجربهٔ کاربری برای جامعهٔ کاربران کمک کنید. جامعهٔ متنباز همواره با همکاری و بازخورد شما رشد میکند و ابزارهایی مانند Meli-Action میتوانند به عنوان کاتالیزوری برای دسترسی آگاهانهتر به محتوا عمل کنند—با رعایت اصول قانونی و اخلاقی در هر محیطی که در آن استفاده میشود.
Enjoying this project?
Discover more amazing open-source projects on TechLogHub. We curate the best developer tools and projects.
Repository:https://github.com/Kurdeus/Meli-Action
GitHub - Kurdeus/Meli-Action: Meli-Action: GitHub Actions-based Downloader & Web Archiver to Bypass Internet Filtering
مراجعه جامع به ملی اکشن — Meli-Action: ابزار مبتنی بر گیتهاب اکشن برای دسترسی به محتوای فیلترشده...
github - kurdeus/meli-action