2013-03-21 14 views
5

URLを受信して​​ウェブからリッピングするように設計されたコードがあります。誰かがそれをこのURLを与えたまで、これまでのところ、それは、正常に動作されています:リモートファイルをCURLできません

http://www.aspensurgical.com/static/images/aspen_hill-rom_logo.png

私は私のブラウザからそれをヒットした場合、それだけで罰金を示しています。しかし、私はそれを下にカールしようとすると、私が取得:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>403 Forbidden</title> 
</head><body> 
<h1>Forbidden</h1> 
<p>You don't have permission to access /static/images/aspen_hill-rom_logo.png 
on this server.</p> 
<hr> 
<address> Server at www.aspensurgical.com Port 80</address> 
</body></html> 

私が使用しているCURLコードがある:彼らのサーバーは何とか

$ch = curl_init(str_replace(' ', '%20', $url)); 
$fh = fopen($local_file, "w"); 
curl_setopt($ch, CURLOPT_FILE, $fh); 
curl_exec($ch); 
curl_close($ch); 

私は通常のブラウザではないよ実現すると私をブートしています?

答えて

8

あなたが誰であるかを確認するユーザーエージェントチェックがあります。通常のブラウザのユーザーエージェントを追加してください。

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0"); 

ここでは、codepadの動作例を示します。

+2

あなた、先生は、巨大なクッキーに値します。ありがとう、トン! – Anthony

+1

あなたはuseragentについて説明することができますか、クローム、サファリ、および他のブラウザについては、なぜそれらを追加する必要がありますか? – Naeem

+0

@ Naeemすべてのブラウザは、自分自身を識別するために独自のユーザエージェント文字列を送信します。一般的な検索エンジンのボットは、ユーザーエージェントの文字列内でどの検索エンジンが動作するかを示します。だから、誰かがページをリクエストするのを見るために、この文字列を掘り下げるウェブサイトがあるのです。 – Ranty

1

不要なトラフィックをブロックするために、ブラウザからのダウンロードのみを許可するサーバーもあります。そのようなサーバーを欺くために、curlには--user-agentの追加オプションがあります。これはトリックです!

私はwindows7のPCからカールを使用し、gowをインストールしました。

curl --user-agent "Mozilla/4.0" http://www.example.com/archives/abc.txt --output pqr.txt 
関連する問題