2015-01-27 1 views
0

В качестве части требования мне нужно выяснить, припаркован ли домен или нет. Поскольку нет эффективного способа узнать об этом, я собираюсь проверить DOM на фразы, такие как «Купить этот домен», «может быть продан» и т. Д.file_get_contents не работает для некоторых доменов

Я нашел несколько припаркованных доменов, которые могут быть доступ через браузер, но не может получить их с помощью file_get_contents.

Пример

$url = 'http://buythisdomain.com/' 
$get = file_get_contents($url); 

По указанным выше получили следующее сообщение на выходе.

Предупреждение: file_get_contents (http://buythisdomain.com/): не удалось открыть поток: запрос HTTP не удался!

Но можно получить доступ к тому же самому URL-адресу через браузер. Я попробовал метод fopen, но тот же результат. Есть ли способ достичь этого?

+0

На сайте, вероятно, блокирует запросы, которые не содержат какой-либо браузер подпись, возможно, потому, что они не хотят, чтобы вы к ним доступ из сценария –

+0

@MarkBaker о, хорошо. Благодарю. так есть ли способ достичь этого? –

+1

Да, создайте «контекст фильтра», как показано в ответе @ Brain –

ответ

5

Многие сайты, а не только припаркованные домены используют некоторый механизм для блокировки базовых запросов без действительных заголовков браузера.

Попробуйте использовать контекст потока, которые посылают, что необходимые заголовки, как браузер, как этот

$url = "http://buythisdomain.com/" 
$context = stream_context_create(array(
    'http' => array(
     'method' => "GET", 
     'header' => 
      "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" . 
      "Accept-Language: en-US,en;q=0.8\r\n". 
      "Keep-Alive: timeout=3, max=10\r\n", 
      "Connection: keep-alive", 
     'user_agent' => "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", 
     "ignore_errors" => true, 
     "timeout" => 3 
    ) 
)); 
file_get_contents($url, false, $context); 
+0

Awesome .. Большое спасибо. это работает как шарм! –

+0

Просто нужно небольшое подтверждение, оно * не * работает для некоторых доменов ex: 'http: // makeoffer.in' 'Получение ответа 404 не найдено в firebug. но он доступен напрямую через браузер. Есть идеи? –

+0

@ KrishnaMohan Я тоже тестировал этот домен, отлично работает. Если вы получаете 404 в браузере, чем это не из-за сценария, потому что у вас есть этот 404 в вашем браузере? Я немного смущен. –

 Смежные вопросы

  • Нет связанных вопросов^_^