Я использую функцию file_get_contents для получения содержимого с веб-страницы. Некоторые веб-сайты работают хорошо, но большинство из них дают мне эту ошибку
failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable
Вот мой простой код
echo file_get_contents("url");
Когда я запускаю этот URL-адрес в браузере, он отлично работает. Что может быть проблемой?
503 означает, что функции работают, и вы получаете ответ от удаленного сервера, отрицающего вас. Если вы когда-либо пытались выполнить CURL-результаты Google, то происходит то же самое, потому что они могут обнаружить пользовательский агент, используемый файловыми_компонентами и cURL, и в результате блокируют эти пользовательские агенты. Также возможно, что сервер, к которому вы обращаетесь, также имеет свой IP-адрес, защищенный для таких методов.
Главным образом три общие причины, по которым команды не будут работать так же, как браузер в удаленной ситуации.
1) The default USER-AGENT has been blocked. 2) Your server's IP block has been blocked. 3) Remote host has a proxy detection.
С помощью этого сценария все веб-сайты считают, что вы браузер:
<?php $url='http://mywebsite.com' $ch = curl_init(); $user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0'; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_AUTOREFERER, false); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSLVERSION,CURL_SSLVERSION_DEFAULT); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $webcontent= curl_exec ($ch); $error = curl_error($ch); curl_close ($ch); ?>