file_get_contents не работает для некоторых доменов

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

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

пример

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

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

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

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

1 ответ

Решение

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

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

$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);
Другие вопросы по тегам