質問: "pragma: "; // browsers keep this blank. curl_setopt( $ch, curlopt_url, $url ); curl_setopt( $ch, curlopt_useragent, 'googlebot/2.1 (+http://www.google.com/bot.html)'); curl_setopt( $ch, curlopt_httpheader, $header); curl_setopt( $ch, curlopt_referer, 'http://www.google.com'); curl_setopt( $ch, curlopt_header, true ); curl_setopt( $ch, curlopt_nobody, true ); curl_setopt( $ch, curlopt_returntransfer, true ); curl_setopt( $ch, curlopt_followlocation, true ); curl_setopt( $ch, curlopt_httpauth, curlauth_any ); curl_setopt( $ch, curlopt_timeout, 10 ); //timeout 10 seconds } 時々私は200okを受け取りますが、それ以外の場合は私も良いと思う301、302、307を受け取りますが、無効なurlを識別するはずの406、500、504として奇妙なステータスを受け取ることもありますが、ブラウザで開くとは大丈夫ですたとえば、スクリプトはhttp://www.awe.co.uk/ => http/1.1 406 not acceptable そしてwgetはwget http://www.awe.co.uk/ --2011-06-23 15:26:26-- http://www.awe.co.uk/ resolving www.awe.co.uk... 77.73.123.140 connecting to www.awe.co.uk|77.73.123.140|:80... connected. http request sent, awaiting response... 200 ok どのリクエストヘッダーが欠落しているか、過剰に追加されているかを誰かが知っていますか?
回答: 私の謙虚な意見では、あなたのスクリプトは大丈夫に見えます、そしてあなたは時々正しい結果を得ているのでそれはうまくいくはずです。あなたはhttp://www.awe.co.uk/の所有者ですか? 一部の環境に応じて何をするかを決定するスクリプトが実行されている可能性があります。たとえば、スクリプトでは、ユーザーエージェント「googlebot」としてこのサイトにアクセスしていますが、wgetユーザーエージェントは「wget」になります。ウェブサーバー上のスクリプトは、それがgoogleであるかどうかをチェックし、ブラウザに表示されるものとはまったく異なるコンテンツを配信する場合があります。同様に、webサーバーは異なる戻りコードを送信する場合があります。 この問題をテストするには、スクリプトを減らすか、wgetコマンドを拡張して同じリクエストを送信し、結果を比較することをお勧めします。私が想像できるもう1つのことは、スクリプトをどのくらいの頻度で実行したかということです。たぶん、webサーバーはスクリプトからの大量のトラフィックに気づき、誇張している場合は406(またはその他のもの)を送信します;-)