2013-07-21 68 views
-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_REFERERcurl_setopt,或curl --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

你s HOULD能夠指定引薦作爲一個選項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 [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);