آموزش مخفی کردن لینک دانلود و تبدیل به غیرمستقیم در PHP

مسیح دیندار
مدیریت
عضو شده: 2021-04-12 14:23:35
2021-05-04 11:03:57

یکی از ویژگی های خیلی خاصی که PHP به ما میده، توانایی مخفی کردن لینک دانلود هستش! شما می تونید با این ویژگی لینک دانلود مستقیم فایل ها رو از هر سرور و سایتی که هستند، به لینک دانلود غیرمستقیم از طرف سایت خودتون تبدیل کنید! با اینکار می تونید لینک مستقیم هاست دانلود خودتون رو زیرمجموعه سایت خودتون نشون بدید تا کاربر نتونه لینک اصلی و منبع دانلود رو تشخیص بده!

در واقع هدف ما تبدیل https://cdn-talkina.ir/files/filename.zip به https://talkina.ir/download.php?id=filename.zip هست. که در صفحه دانلود و تاریخچه دانلودهای مرورگر اثری از لینک دانلود اصلی نیست اما رسما فایل ما از لینک اول دانلود میشه!

برای اینکار، باید اقدامات رو روی هاست اصلی خودمون (نه روی هاست دانلود) انجام بدیم. 

برای مرحله اول، باید ماژول fileinfo رو داخل هاست خودمون فعال کنیم. وارد سی پنل بشید، در بخش Select PHP Version و در بین لیست ماژول ها، گزینه fileinfo رو پیدا کنید و اون رو فعال کنید. در سی پنل های جدیدتر با تیک زدن این گزینه خود به خود فعال میشه. اگه چنین ماژولی ندارید، باید یه تیکت به هاستینگ بزنید و ازشون بخواهید این ماژول رو براتون فعال کنند. چون بدون این ماژول کاری که می خواهیم بکنیم کار نمی کنه و باعث بروز باگ هایی میشه که احتمال نفوذ به هاست خودمون هم هست. پس اولین کار فعال سازی همین ماژول هستش.

مرحله بعدی، ساختن فایل برای دانلود هست. وارد فایل منیجر بشید، در روت سایتتون، یک فایل به نام download.php بسازید. البته می تونید این فایل رو داخل پوشه بسازید. تفاوتی نداره. فقط آدرس نهایی لینک دانلود غیرمستقیم ما فرق می کنه! من در این آموزش ترجیح میدم توی روت سایت بسازم که لینک دانلودهام به صورت https://talkina.ir/download.php?id=filename.zip به نظر برسه. هم کوتاه تره و هم جذاب تر.

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

<?php
// Talkina.ir
$talkina = 'https://cdn-talkina.ir/files/uploads/'. $_GET['id'];

header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"" . basename($talkina) . "\""); 
readfile($talkina);

exit();
?>

بجای آدرس https://cdn-talkina.ir/files/uploads/ آدرس اصلی هاست دانلودتون رو وارد کنید. آدرس رو باید تا جایی وارد کنید که توی همه لینک های دانلود مستقیم یکسان باشه. فقط اون قسمتی رو حذف کنید که توی هر لینک تفاوت داره. من توی اینجا فرض کردم که همه ی فایل هام توی مسیر https://cdn-talkina.ir/files/uploads/ قراره آپلود بشن و فایل هام به صورت https://cdn-talkina.ir/files/uploads/myphoto.jpg یا https://cdn-talkina.ir/files/uploads/software.rar در دسترس هستند. پس فقط بخش ثابت رو داخل کد بالا وارد کنید.

 

کار تمومه! به همین سادگی. الان می تونید لینک های غیرمستقیم خودتون رو بسازید. فقط یادتون باشه اگه فایل هاتون توی هاست دانلود، داخل چند پوشه قرار داره، می تونید برای هر کدوم از مسیرها، یک فایل دانلود جدا بسازید. به نام های دلخواه. مثلا download1.php و download2.php که بتونیم یه بخش ثابت از لینک رو داشته باشیم.

مرحله آخر، ارائه لینک دانلود به کاربر هست. لینک های غیرمستقیم ما باید به این صورت داخل سایت ثبت بشن:

https://talkina.ir/download.php?id=FileName.zip

و به جای FileName.zip هم باید نام فایل و فرمت دقیق فایل رو جایگزین کنیم. طبق این آموزش، الان زمانی که کاربر روی لینک بالا کلیک کنه، فایلی در آدرس زیر براش دانلود میشه:

https://cdn-talkina.ir/files/uploads/FileName.zip

اما کاربر توی برنامه های دانلود یا تاریخچه دانلود مرورگر همون حالت اول لینک رو خواهد دید.

اگه مشکلی داشتید توی پاسخ همین تاپیک بپرسید.