2013-06-12 69 views
5

Tôi đang sử dụng hàm file_get_contents để nhận nội dung từ trang web. Một số trang web làm việc tốt nhưng hầu hết trong số họ cho tôi lỗi nàyYêu cầu HTTP không thành công! Dịch vụ HTTP/1.1 503 Tạm thời không khả dụng

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

Đây là mã đơn giản của tôi

echo file_get_contents("url"); 

Khi tôi chạy url này trong trình duyệt của nó hoạt động fine.what có thể vấn đề này?

+1

Bạn có thể không có một tiêu đề yêu cầu cần thiết để nhận được phản hồi có giá trị. –

+0

điều đó có nghĩa là gì? Tôi có thể làm gì? Là nó không thể làm cho các trang web đó? –

Trả lời

6

503 có nghĩa là các chức năng đang hoạt động và bạn nhận được phản hồi từ máy chủ từ xa từ chối bạn. Nếu bạn đã từng thử kết quả cURL google thì điều tương tự cũng xảy ra, vì chúng có thể phát hiện tác nhân người dùng được sử dụng bởi file_get_contents và cURL và kết quả là chặn các tác nhân người dùng đó. Cũng có thể máy chủ bạn đang truy cập từ đó cũng có địa chỉ IP bị chặn bởi các thực hành như vậy.

Chủ yếu là ba lý do phổ biến khiến các lệnh sẽ không hoạt động giống như trình duyệt trong tình huống từ xa.

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

tôi đã cố gắng này cũng ... tôi không thể có được bất cứ điều gì ... –

+0

bạn có thể truy cập các URL theo cách thủ công, phải không? –

+0

có ... khi tôi chạy trong trình duyệt nó chạy ... –

0

Với kịch bản này, tất cả website nghĩ rằng bạn là một trình duyệt:

<?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

Bằng chứng không thực sự lừa. Google sẽ từ chối yêu cầu nếu bạn đưa ra quá nhiều yêu cầu, ngay cả với chuỗi tác nhân người dùng trình duyệt. đã cố gắng chọn ngẫu nhiên từ một chuỗi các chuỗi khác nhau cho mỗi cURL, nhưng đã quá muộn. Tôi chỉ hy vọng rằng nó sẽ đặt lại sau một khoảng thời gian nhất định. – TARKUS

Các vấn đề liên quan