استخراج اطلاعات یوتیوب با Curl

سوال 

PHP

توسط masoud-fathi در 10 ماه پیش
4 31.9k 1 10 ماه پیش
masoud-fathi kingblogg reza-irdev digisys
0

من می خواهم اطلاعات سایتی مثل یوتیوب را با curl بکشم بیرون یا سایت https://www.pexels.com/ اما برای من صفحه خالی رو نمایش میده ایا امکانش هست خود یوتیوب دسترسی با curl رو غیر فعال کرده اگه راحی هست که اطلاعات اینجور سایتها رو بیرون بکشیم معرفی کنید و امکانش هس به دلیل فیلترینگ باشد اینم کد من: با لوکال می خواهم این کارو انجام بدم

$e="https://www.youtube.com";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$e);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_ENCODING ,"UTF-8");

$headers[] = "Content-type: text/xml;charset=\"utf-8\"";
//$headers[] = 'Content-length: 0';
 $headers[]="Cache-Control: no-cache";
            $headers[]="Pragma: no-cache";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$r=curl_exec($ch);
curl_close($ch);
echo $r;
آخرین ویرایش: 22-12-2018 ساعت 12:34، توسط Reza دلیل: لطفا عنوان مناسب انتخاب کنید تا در اینترنت قابل جست و جو باشد
سلام. سروری که ازش استفاده میکنید نباید تو ایران باشه – SkyTech 10 ماه پیش
من کدرو تست کردم مشکلی نداره. علتش فیلترینگه. سرورتون باید خارج از کشور باشه – SkyTech 10 ماه پیش
اگر لوکال باشه باید چکار کنیم – masoud-fathi 10 ماه پیش

پاسخ ها

1

سلام خوش اومدید. همونطورک ه دوست عزیز skytech اشاره کردن کد شما ظاهرا مشکلی نداره. curl داره درخواست میفرسته در صورتی که اون سایت از طریق ISP شما مسدود شده. پس درمرحله اول باید کامپیوتر شما دسترسی به اون سایت داشته باشه.

البته میتونید برای Curl پراکسی ست کنید مثلا:

$url = 'http://dynupdate.no-ip.com/ip.php';
$proxy = '127.0.0.1:8888';
//$proxyauth = 'user:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

echo $curl_scraped_page;

نمیدونم هدف شما چیه اما این کار شما احتمالا بی فایدست چون محتوای این سایت با جاوا اسکریپت رندر میشه. شاید PhantomJS بیشتر بتونه کمک کنه.

ویرایش

برای گرفتن پورت پراکسی میتونید به داکیومنت نرم افزار مورد نظر مراجعه کنید یا تو اینترنت سرچ کنید. مثلا proxydb.net

<hr>

در خصوص phantomjs تمام اطلاعاتی برای کار بهش احتیاج دارید تو داکیومنتش موجود هست. میتونید بررسی کنید. برای مثال تو قسمت page automation این مثال رو گذاشته که نحوه استخراج اطلاعات صفحه است:

http://phantomjs.org/page-automation.html

var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'SpecialAgent';
page.open('http://www.httpuseragent.org', function(status) {
  if (status !== 'success') {
    console.log('Unable to access network');
  } else {
    var ua = page.evaluate(function() {
      return document.getElementById('qua').textContent;
    });
    console.log(ua);
  }
  phantom.exit();
});
آخرین ویرایش: 23-12-2018 ساعت 09:38، توسط Reza
Reza@ با جاوا اسکریپت چطوری میشه این کارو انجام بدیم میشه بیشتر توضیح بدید – masoud-fathi 10 ماه پیش
portپراکسی رو از کجا بیارم – masoud-fathi 10 ماه پیش
تو اینترنت پراکسی سرچ کن هست پورت هم نوشته. برای سایفون هم فکر کنم 1080 باشه – Keyvan 10 ماه پیش
@masoud پست رو ویرایش کردم ببینید. – Reza 10 ماه پیش
الان کار این پراکسی ها چیست آیا به عنوان فیلتر شکن عمل میکنند من هر کدام از این ipها رو چک می کنم هیچ تغییری نمیکنه و سایت یوتیوب رو برای من باز نمیکنه – masoud-fathi 10 ماه پیش

این سوال حل نشده است!

این سوال هنوز حل نشده یا به پاسخ بهتری نیاز دارد. برای پاسخ به این سوال کافیست وارد حساب کاربری خود شوید.

لطفا ابتدا لاگین کنید