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

سوال 

PHP

توسط masoud-fathi در 1 سال پیش
4 31.9k 1 1 سال پیش
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 دلیل: لطفا عنوان مناسب انتخاب کنید تا در اینترنت قابل جست و جو باشد

پاسخ ها

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 1 سال پیش
portپراکسی رو از کجا بیارم – masoud-fathi 1 سال پیش
تو اینترنت پراکسی سرچ کن هست پورت هم نوشته. برای سایفون هم فکر کنم 1080 باشه – کیوان هستم 1 سال پیش
@masoud پست رو ویرایش کردم ببینید. – Reza 1 سال پیش
الان کار این پراکسی ها چیست آیا به عنوان فیلتر شکن عمل میکنند من هر کدام از این ipها رو چک می کنم هیچ تغییری نمیکنه و سایت یوتیوب رو برای من باز نمیکنه – masoud-fathi 1 سال پیش
الان من پراکسی ها رو روی کدم امتحان میکنم باز صفحه خالی میده مگه این پراکسی نقش فیلتر شکن رو بازی نمیکنه – masoud-fathi 1 سال پیش
بله پراکسی مثل فیلترشکن عمل میکنه. شما برای بازکردن سایت تو لوکال (چون یوتیوب فیلتره) نیاز به یه پراکسی https دارید. اول هم پراکسی رو تو مرورگر ست کنید وتست کنید که کار میکنه و مشکل اتصال به پراکسی ندارید. اگر اینطور باشه CURL هم مشکلی نداره. – Reza 1 سال پیش
من در ابونتو هر پراکسی رو میدم سایت یوتیوب رو باز نمیکنه اما با فیلتر شکن خودم وصل میشم یوتیوب باز میشه اما در هر دوصورت کد من یوتیوب رو باز نمیکنه – masoud-fathi 1 سال پیش

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

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

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