حل شده

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

بازدید 32.3k پست ها 1 آخرین فعالیت 2 سال پیش
0
4

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

1 پاسخ

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

سوال برنامه نویسی دارید؟

هیچ وقت در پرسیدن سوال شک نکنید

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.