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

سوال 

PHP

توسط masoud-fathi در 6 ماه پیش
4 9.8k 1 6 ماه پیش
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 6 ماه پیش
من کدرو تست کردم مشکلی نداره. علتش فیلترینگه. سرورتون باید خارج از کشور باشه – SkyTech 6 ماه پیش
اگر لوکال باشه باید چکار کنیم – masoud-fathi 6 ماه پیش

پاسخ ها

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 6 ماه پیش
portپراکسی رو از کجا بیارم – masoud-fathi 6 ماه پیش
تو اینترنت پراکسی سرچ کن هست پورت هم نوشته. برای سایفون هم فکر کنم 1080 باشه – Mr.DIGIT 6 ماه پیش
@masoud پست رو ویرایش کردم ببینید. – Reza 6 ماه پیش
الان کار این پراکسی ها چیست آیا به عنوان فیلتر شکن عمل میکنند من هر کدام از این ipها رو چک می کنم هیچ تغییری نمیکنه و سایت یوتیوب رو برای من باز نمیکنه – masoud-fathi 6 ماه پیش

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

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

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