file_get_contents не работает для некоторого URL-адреса

Я использую file_get_contents в PHP. В приведенном ниже коде в первом URL-адресе работает нормально, а второй не работает.

 $URL = "http://test6473.blogspot.com"; $domain = file_get_contents($URL); print_r($domain); $add_url= "http://adfoc.us/1575051"; $add_domain = file_get_contents($add_url); echo $add_domain; 

Любые предложения о том, почему второй не работает?

URL, который не извлекается файловым_компонентом, потому что их сервер проверяет, пришел ли запрос от браузера или любого сценария. Если они нашли запрос от скрипта, они просто отключили содержимое страницы.

Так что я должен сделать запрос, похожий на запрос браузера. Поэтому я использовал следующий код для получения второго содержимого URL-адреса. Это может быть разным для разных веб-серверов. Потому что они могут проводить разные проверки.

Хотя почему вы не пытаетесь использовать следующий код! Если вам повезет, это может сработать для вас!

 fopen("cookies.txt", "w"); $url="http://adfoc.us/1575051"; $ch = curl_init(); $header=array('GET /1575051 HTTP/1.1', 'Host: adfoc.us', 'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language:en-US,en;q=0.8', 'Cache-Control:max-age=0', 'Connection:keep-alive', 'Host:adfoc.us', 'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36', ); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,0); curl_setopt( $ch, CURLOPT_COOKIESESSION, true ); curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt'); curl_setopt($ch,CURLOPT_COOKIEJAR,'cookies.txt'); curl_setopt($ch,CURLOPT_HTTPHEADER,$header); $result=curl_exec($ch); curl_close($ch); 

Спасибо всем за руководство.

К сожалению, похоже, что второй сайт блокирует доступ из нераспознанных браузеров. Даже использование curl из командной строки не работает:

 curl -I http://adfoc.us/1575051 

дает:

 HTTP/1.1 200 OK Server: cloudflare-nginx Date: Fri, 28 Jun 2013 12:15:40 GMT Content-Type: text/html Connection: keep-alive X-Powered-By: PHP/5.5.0 Set-Cookie: __cfduid=d7cd1bf18c136a288cc2b36065a3b31f01372421740; expires=Mon, 23-Dec-2019 23:50:00 GMT; path=/; domain=.adfoc.us CF-RAY: 85a4dc6829e06d0 

но нет содержания. Обратите внимание, что он возвращает статус 200, поэтому, если вы проверите возвращенную строку для boolean === false, чтобы убедиться, что она не удалась, она будет выглядеть так, как если бы она сработала.

Если вам нужно подделать useragent (и, возможно, другие вещи), чтобы попытаться получить URL-адрес, чтобы принять ваш запрос, вам нужно сделать бросок с библиотеками завитка и попробовать различные комбинации, чтобы попытаться заставить его работать. Экспериментируя, чтобы увидеть, что работает с командной строкой curl, также было бы хорошим способом сократить время разработки при исследовании этого.

Вот кто-то, кто прошел через это раньше:

php curl: как я могу эмулировать запрос получения точно так же, как веб-браузер?

похоже, что второй URL-адрес слишком медленный, иногда может быть перенаправлен. попробуйте использовать завиток и установите более высокий тайм-аут. Кроме того,

 error_reporting(-1); ini_set('display_errors','On');