file_get_contents показывает ошибку на определенном домене - PullRequest
0 голосов
/ 15 ноября 2018

Я использую file_get_contents() для извлечения содержимого со страницы. Он работал отлично, но внезапно перестал работать и начал показывать ошибку ниже:

"Предупреждение: file_get_contents (https://uae.souq.com/ae-en/apple-iphone-x-with-facetime-256gb-4g-lte-silver-24051446/i/): не удалось открыть поток: сбой HTTP-запроса! В /home/xxx/xxxx/xxx/index.php в строке 6.

Так что я попробовал тот же код на локальном сервере, он работал отлично. Затем я попробовал на другом сервере, и он тоже отлично работал там. Поэтому я связался с хостинг-провайдером, они сказали, что проблема с URL, который может препятствовать доступу. Поэтому я попробовал другой URL (https://www.w3schools.com/), и он получает содержимое без ошибок.

Теперь я действительно запутался, в чем проблема. Если проблема с сервером, другие URL не должны были работать. И если проблема связана с URL-адресом, он не должен работать на втором сервере и локальном сервере.

Вот код теста:

<?php
$html= file_get_contents("https://uae.souq.com/ae-en/apple-iphone-x-with-facetime-256gb-4g-lte-silver-24051446/i/");
echo $html;
?>

В чем здесь проблема? Даже если проблема связана с URL-адресом или сервером, почему он работал безупречно раньше?

1 Ответ

0 голосов
/ 15 ноября 2018

Похоже, этот сайт (souq.com) заблокировал ваш сервер. Блок может быть временным или постоянным. Это могло произойти из-за того, что вы сделали слишком много запросов за короткое время или сделали что-то еще, что выглядело «подозрительно», что вызвало механизм, который предотвращает неэффективную работу роботов со страницей.

Вы можете повторить попытку через некоторое время. Еще вы можете попробовать задать заголовок запроса User-Agent для олицетворения браузера. Вы можете найти, как это сделать здесь: PHP file_get_contents () и настройка заголовков запросов

Если вы хотите сделать робота с хорошим поведением, вам следует установить в заголовке User-Agent что-то, что идентифицирует запрос как поступивший от бота, и следовать правилам , которые сайт указывает в своем robots.txt.

...