下载受热链接保护的图像

时间:2013-07-21 18:38:11

标签: curl

我想下载受热链接保护的图片。如何使用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_setoptcurl --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 ‘<‘ in /public_html/wp-content/plugins/insert-php/insert_php.php(48) : eval()’d code on line 8

1 个答案:

答案 0 :(得分: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代码。您必须使用PHP提供的curl_*函数。您的代码应如下所示:

$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);