2013-06-12 10 views
5

Używam funkcji file_get_contents do pobierania treści ze strony internetowej. Niektóre strona działa dobrze, ale większość z nich daje mi ten błądŻądanie HTTP nie powiodło się! HTTP/1.1 503 Usługa Tymczasowo niedostępna

failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable 

Oto mój prosty kod

echo file_get_contents("url"); 

Gdy ten adres URL w przeglądarce to działa fine.what może być problem?

+1

Nie może mieć wymagany nagłówek żądania, aby otrzymać poprawną odpowiedź. –

+0

co to znaczy? Co mogę zrobić? Nie można tego zrobić w tych witrynach? –

Odpowiedz

6

503 oznacza, że ​​funkcje działają i otrzymujesz odpowiedź od zdalnego serwera odmawiającego ci. Jeśli kiedykolwiek próbowałeś cURL wyników Google to samo dzieje się, ponieważ mogą wykryć użytkownika-agent używany przez file_get_contents i cURL, a w wyniku blokowania tych agentów użytkownika. Jest również możliwe, że serwer, z którego uzyskujesz dostęp, ma również swój adres IP, który jest zabroniony w przypadku takich praktyk.

Głównie trzy najczęstsze powody, dla których polecenia nie działałyby tak, jak przeglądarka w zdalnej sytuacji.

1) The default USER-AGENT has been blocked. 
2) Your server's IP block has been blocked. 
3) Remote host has a proxy detection. 
+0

Próbowałem tego również ... nie mogę uzyskać niczego ... –

+0

możesz uzyskać dostęp do adresu URL ręcznie, prawda? –

+0

tak ... kiedy uruchamiam w przeglądarce działa ... –

0

Z tego skryptu wszystkie strony, że jesteś Przeglądarka:

<?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); 
?> 
+1

Niezbyt głupi dowód. Google odrzuci żądanie, jeśli złożysz zbyt wiele próśb, nawet z ciągiem agenta użytkownika przeglądarki. próbowałem losowo wybierać z tablicy różnych ciągów na każdy cURL, ale jest już za późno, mam tylko nadzieję, że zresetuje się po pewnym czasie. – TARKUS

Powiązane problemy