2013-06-12 19 views
5

Webページからコンテンツを取得するために関数file_get_contentsを使用しています。いくつかのウェブサイトがうまく 作業が、それらのほとんどが私にこのエラーここHTTPリクエストが失敗しました! HTTP/1.1 503サービスは一時的に利用できません

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

を与える私はそれがfine.whatが問題になる可能性が働くブラウザでこのURLを実行すると、私の単純なコード

echo file_get_contents("url"); 

がありますか?

+1

あなたは有効な応答を受け取るために必要なリクエストヘッダを持っていない可能性があります。 –

+0

それはどういう意味ですか?私は何をすることができますか?それらのサイトではできませんか? –

答えて

6

503は機能が動作していることを意味し、リモートサーバーからの応答を受け取っていることを意味します。あなたがfile_get_contentsとcURLで使用されているユーザエージェントを検出し、結果としてそれらのユーザエージェントをブロックすることができるので、同じことが起こると、cURL Google検索結果を試みたことがあります。また、あなたがアクセスしているサーバーにも、そのような慣行のためにIPアドレスがブラックボールで表示されている可能性があります。

リモートの状況のブラウザと同じようにコマンドが機能しない主な理由は主に3つあります。

このスクリプトでは
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

私もこれを試しました...私は何も得ることができません... –

+0

あなたはこれらのURLに手動でアクセスできますか? –

+0

はい...私はブラウザで実行すると実行されます... –

0

すべてのウェブサイトは、ブラウザだと思う:

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

あなたはあまりにも多くのリクエストをした場合、ブラウザのユーザーエージェント文字列を使ってもリクエストを拒否します。各cURLごとに異なる文字列の配列からランダムに選択しようとしましたが、それは遅すぎます。私は、一定時間後にリセットすることを願っています。 – TARKUS

関連する問題