رفتن به مطلب
انجمن تخصصی پرسش و پاسخ
foremtehan

چطوری از یک وبسایت Mirror درست میکنن؟

پست های پیشنهاد شده

سلام خیلی دوست دارم بدونم با PHP چطوری از سایت های دیگه Mirror درست میکنند ؟ مثلا این سایت های زیرنویس ایرانی که از Subscene یک نمونه ش رو کپی میکنن با قالب های مختلف چطوری اینکارو میکنن ، مقاله ای هست واسه اینکار ؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در ۱ ساعت قبل، miladworkshop گفته است :

سلام

 

ساده ترین راه حل استفاده از CURL در PHP به عنوان Proxy هست

یعنی در واقع با هر درخواست ما باید محتوای سایت مبدا رو دانلود کنیم به کابر نشون بدیم مثله file_get_content ? کاش یه مثالی چیزی بود جایی

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

بله به همین شکل هست

 

نمونه کد :

 

<?php
$domain 		= "https://miladworkshop.ir";

$cookiedomain 	= str_replace("http://www.", "", $domain);
$cookiedomain 	= str_replace("https://www.","", $cookiedomain);
$cookiedomain 	= str_replace("www.", "", $cookiedomain);
$url 			= $domain . $_SERVER['REQUEST_URI'];

if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')
{
	$mydomain = 'https://'.$_SERVER['HTTP_HOST'];
} else {
	$mydomain = 'http://'.$_SERVER['HTTP_HOST'];
}

$curlSession = curl_init();

curl_setopt ($curlSession, CURLOPT_URL, $url);
curl_setopt ($curlSession, CURLOPT_HEADER, 1);

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
	curl_setopt ($curlSession, CURLOPT_POST, 1);
	curl_setopt ($curlSession, CURLOPT_POSTFIELDS, $_POST);
}

curl_setopt($curlSession, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curlSession, CURLOPT_TIMEOUT,30);
curl_setopt($curlSession, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curlSession, CURLOPT_SSL_VERIFYPEER, 0);

foreach($_COOKIE as $k=>$v)
{
	if(is_array($v))
	{
		$v = serialize($v);
	}

	curl_setopt($curlSession,CURLOPT_COOKIE,"{$k}={$v}; domain=.{$cookiedomain} ; path=/");
}

$response = curl_exec ($curlSession);

if (curl_error($curlSession))
{
	print curl_error($curlSession);
} else {
	$response 	= str_replace("HTTP/1.1 100 Continue\r\n\r\n","",$response);
	$ar 		= explode("\r\n\r\n", $response, 2); 
	$header 	= $ar[0];
	$body 		= $ar[1];
	$header_ar 	= split(chr(10),$header); 

	foreach($header_ar as $k=>$v)
	{
		if(!preg_match("/^Transfer-Encoding/",$v))
		{
			$v = str_replace($domain,$mydomain,$v);
			header(trim($v));
		}
	}

	$body = str_replace($domain, $mydomain, $body);

	print $body;
}

curl_close ($curlSession);
?>

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

@miladworkshop باورم نمیشه برام وقت گذاشتی و این کدها رو نوشتی خیلی اذت ممنون حتما کدها رو تست میکنم خیلی خوشحالم شدم امروز.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
ارسال شده در (ویرایش شده)

کد ها رو تست کردم ، گویا متد split منسخوخ شده بود سرچ کردم و بجاش explode رو استفاده کردم الان دو تا مشکل هست ، تست کردم css سایت مورد نظر لود نمیشه توی اسکریپت من و فقط html لود میشه و مشکل اصلی دیگه این هست که وقتی روی لینک های داخل سایت مورد نظر کلیک میکنم خطای 404 میگیرم و فکر کنم بخاطر اینکه route های سایت مورد نظر رو من توی اسکریتم ندارم ، الان چکار کنم که بتونم مثل سایت معمولی داخل سایت وبگردی کنم ؟

ویرایش شده توسط foremtehan

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در ۱۳۹۸/۸/۲۷ در 20:13، foremtehan گفته است :

کد ها رو تست کردم ، گویا متد split منسخوخ شده بود سرچ کردم و بجاش explode رو استفاده کردم الان دو تا مشکل هست ، تست کردم css سایت مورد نظر لود نمیشه توی اسکریپت من و فقط html لود میشه و مشکل اصلی دیگه این هست که وقتی روی لینک های داخل سایت مورد نظر کلیک میکنم خطای 404 میگیرم و فکر کنم بخاطر اینکه route های سایت مورد نظر رو من توی اسکریتم ندارم ، الان چکار کنم که بتونم مثل سایت معمولی داخل سایت وبگردی کنم ؟

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

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 5 ساعت قبل، miladworkshop گفته است :

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

یعنی برای هر وبسایت باید یک چیزه جدا نوشت ؟ مثلا همین وبسایت

miladworkshop.ir

 

برای من به این شکل لود میشه :

 

70pf_capture.png

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام

 

در کنار فایل index.php یک فایل Htaccess با محتوای زیر ایجاد و مجدداً برسی کنید :

 

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Join the conversation

You can post now and register later. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • جدید...