-1

ホットリンクで保護された画像をダウンロードしたいと考えています。リファラーが独自のサーバーから来ていることを示すために、CURL で HTTP ヘッダーを偽造するにはどうすればよいですか?

このコマンドを試してみましたが、失敗します。私は PHP に詳しくないので、助けていただければ幸いです。

curl -A "Mozilla/5.0" -L -b /tmp/c -c /tmp/c -s 'http://remote-site.com/image.jpg' > image.jpg

オプションはCURLOPT_REFERER, curl_setoptorcurl --refererのようですが、正しい構文については不明です。


編集2:

curl_setopt() はパラメーター 2 が長いと想定しているというエラーが表示されました。MUTE オプションを削除すると、エラーはなくなりました。

画像を表示するために、このコードを試しましたが、ページは空白のままです。

$image = curl_exec($ch);
curl_close($ch);
fclose($fp);
print '<img src="'.$image.'"/>';

編集1:

Wordpress の投稿に入力したコード (プラグインInsert PHPを使用)

[insert_php]

curl --referer http://www.DOMAIN.com/ -A "Mozilla/5.0" -L -b /tmp -c /tmp -s 'http://www.DOMAIN.com/image.png' > image.png

[/insert_php]

ページを読み込んだときに発生したエラー:

Parse error: syntax error, unexpected ‘&lt;‘ in /public_html/wp-content/plugins/insert-php/insert_php.php(48) : eval()’d code on line 8
4

1 に答える 1

1

curl次のように、リファラーをオプションとして指定できるはずです。

curl --referer http://remote-site.com/ -A "Mozilla/5.0" -L -b /tmp/c -c /tmp/c -s 'http://remote-site.com/image.jpg' > image.jpg

curl の構文は次のとおりです。

curl [options...] <url>

注意: でサイレント モードを指定したため、パラメータ-sで出力ファイルを指定する必要があり--output <file>ます。オプションを使用すると、そもそも-s出力がないため、出力リダイレクト ( ) を使用できません> image.jpg

アップデート:

[insert_php][/insert_php]タグの間に PHP コードを挿入する必要があります。現在表示されている文字列は有効な PHP コードではありません。curl_*PHP が提供する関数を使用する必要があります。コードは次のようになります。

$ch = curl_init();
$fp = fopen("image.jpg", "w");
curl_setopt($ch, CURLOPT_URL, "http://remote-site.com/image.jpg");
curl_setopt($ch, CURLOPT_MUTE, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/c");
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/c");
curl_setopt($ch, CURLOPT_REFERER, "http://remote-site.com/");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0");
curl_exec($ch);
curl_close($ch);
fclose($fp);
于 2013-07-21T18:49:23.600 に答える