PDA

View Full Version : مشکل کار نکردن file_get_contents و Curl برای یک سایت خاص



msh2010
دوشنبه 18 تیر 1397, 17:13 عصر
سلام

تابع file_get_contents و Curl برای این آدرس => http://codal360.ir/fa/search_statement_result کار نمی کنه. آیا از طرف سایت بسته شده؟ و چه راهکار دیگه ای براش وجود داره؟

plague
دوشنبه 18 تیر 1397, 19:14 عصر
برا من باز نمیشه آدرسی که دادی
ولی با curl میتونی بگیری سایت رو معمولا به شرطی که header ها رو ست کرده باشی اگه بدون هدر بفرستی درخواست رو سرور تشخصی میده که ربات هستی و میتونه اجازه نده
نکته دیگه که بعضی وقتا جواب میده اینکه follow redirect رو هم فعال کنی چون بعضی سایتا ریدایرکت میکنن کاربر رو به یه آدرس دیگه وقتی بازشون بکنی که کابر عادی متوجه نمیشه ولی وقتی با curl بفرستی درخواست رو چون ریدارکت رو دنبال نمیکنه چیزی نمیبینی

msh2010
سه شنبه 19 تیر 1397, 08:33 صبح
برا من باز نمیشه آدرسی که دادی
ولی با curl میتونی بگیری سایت رو معمولا به شرطی که header ها رو ست کرده باشی اگه بدون هدر بفرستی درخواست رو سرور تشخصی میده که ربات هستی و میتونه اجازه نده
نکته دیگه که بعضی وقتا جواب میده اینکه follow redirect رو هم فعال کنی چون بعضی سایتا ریدایرکت میکنن کاربر رو به یه آدرس دیگه وقتی بازشون بکنی که کابر عادی متوجه نمیشه ولی وقتی با curl بفرستی درخواست رو چون ریدارکت رو دنبال نمیکنه چیزی نمیبینی
مرسی

نمی دونم چرا باز نمیشه برا شما. واسه من مشکلی نداره این لینک http://codal360.ir/fa/search_statement_result یا این لینک http://codal360.ir/fa/search_statement_result/?page=1

یک تکست بصورت جیسون کد هست که میخوام دیکد کنم از اطلاعاتش استفاده کنم، با این کد:




header('Content-Type: text/html; charset=utf8', true);

$url="http://codal360.ir/fa/search_statement_result";
$ch = curl_init();curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,false);
$data = curl_exec($ch);
echo $data;

اما نشد
اینکه میفرمایید بدون ست کردن هدر درخواست نفرستم رو واقعیتش درست متوجه نشدم

plague
سه شنبه 19 تیر 1397, 14:13 عصر
هر درخواستی که به سروری فرستاده میشه یه سری هدر داره که مرورگر اینا رو ست میکنه .... مثلا نوع مرورگر یا user agent - کوکی - انکودینگ و .....

حالا شما وقتی با curl درخواست میفرستی دیگه مرورگری در کار نیستو این هدر ها ست نمیشه و با درخواست فرستاده نمیشه در نتیجه سرور میفهمه که شما با مرورگرت درخواست رو نفرستادی و ربات هستی

مهم ترینش هدر user-agent هستش که مشخص میکنه شما از چه مرورگری داری استفاده میکنی و اکثر سرور ها این رو چک میکنن
مثلا وقتی میخای curl بفرستی اینجور یمیتونی هدر user-agent رو اضافه کنی به درخواستت



curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');

msh2010
چهارشنبه 20 تیر 1397, 12:19 عصر
هر درخواستی که به سروری فرستاده میشه یه سری هدر داره که مرورگر اینا رو ست میکنه .... مثلا نوع مرورگر یا user agent - کوکی - انکودینگ و .....

حالا شما وقتی با curl درخواست میفرستی دیگه مرورگری در کار نیستو این هدر ها ست نمیشه و با درخواست فرستاده نمیشه در نتیجه سرور میفهمه که شما با مرورگرت درخواست رو نفرستادی و ربات هستی

مهم ترینش هدر user-agent هستش که مشخص میکنه شما از چه مرورگری داری استفاده میکنی و اکثر سرور ها این رو چک میکنن
مثلا وقتی میخای curl بفرستی اینجور یمیتونی هدر user-agent رو اضافه کنی به درخواستت



curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');


مرسی از پاسخگوئیتون. اینو اعمال کردم ولی باز با اون URL مورد نظرم کار نکرد متاسفانه. یکم عجیبه برام

web-design
چهارشنبه 20 تیر 1397, 17:18 عصر
شاید آی پی سرور شما رو بلاک کرده اون سرور

msh2010
چهارشنبه 20 تیر 1397, 20:59 عصر
شاید آی پی سرور شما رو بلاک کرده اون سرور
برای اولین بار بود که میخواستم از این سایت دیتا بگیرم