2012-03-29 42 views
-6

我刮站點刮自己的形象,尋找JPG格式下載。
颳去網站的HTML頁面正常工作。
但是,當我試着用CURL,copy(),fopen()等獲得JPG時,我得到了一個403 forbiden狀態。如何解決網站禁止我使用PHP

我知道這是因爲網站所有者不希望自己的圖片被刮掉,所以我明白一個好的回答會是就是不這樣做,因爲他們不希望你

好的,但是讓我們說這是確定的,我嘗試解決這個問題,如何實現這一目標?

如果我通過瀏覽器獲得相同的URL,我可以完美地打開圖像,這並不是說我的IP被禁止或任何其他內容,並且我一次測試一個文件,所以它不會阻止我,因爲我經常提出太多要求。

從我的理解,這可能是因爲無論是網站正在檢查一些餅乾是確認我使用的瀏覽器和瀏覽他們的網站之前,我下載一個JPG。
或者也許PHP正在使用某些用戶代理來處理服務器可以檢測和過濾的請求。

無論如何,有什麼想法?

+2

的問題是不是「我應該這樣做或不」,這是「如何** **可我做到這一點。」當人們迴避問題時,我真的很討厭它,因爲他們想要道德上正義。 @Petruza首先檢查HTTP Referrer欺騙。儘管如此,您可能希望完全模仿瀏覽器標題。 – Leigh 2012-03-29 07:15:04

+1

@Juhana:什麼時候刮網站變得違法? – Petruza 2012-03-29 07:59:19

+0

維基新聞和大多數英國。政府網站有一項公共政策,規定信息可以重複使用,但私下將其作爲一種自動化程序難以實施。 – Skizz 2012-03-29 17:27:38

回答

2

其實這很簡單。
正如@Leigh建議的那樣,它只是用選項CURLOPT_REFERER欺騙一個http referrer。
實際上,對於每一個請求,我只是提供了域名作爲引用,它的工作。

1

您是否可以通過瀏覽器查看頁面?不會簡單搜索頁面源代碼找到所有圖片?

` $findme = '.jpg'; 
$pos = strpos($html, $findme); 

if ($pos === false) { 
    echo "The string '$findme' was not found in the string '$html'"; 
} else { 
    echo "Images found.. 

    ///grab image location code 

} ` 
+0

它有成千上萬的圖像數千頁。 – Petruza 2012-03-30 01:45:44

1

基本圖像檢索:

使用的GD庫插件一般默認安裝了許多Web主機。這是一個醜陋的黑客,但有些人可能會發現它可以做到這一點有用的事實。

$remote_img = 'http://www.somwhere.com/images/image.jpg'; 
$img = imagecreatefromjpeg($remote_img); 
$path = 'images/'; 
imagejpeg($img, $path); 

經典捲曲圖像採集功能,當你已經提取位置從捐助頁面HTML的圖像的。

function save_image($img,$fullpath){ 
$ch = curl_init ($img); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); 
$rawdata=curl_exec($ch); 
curl_close ($ch); 
if(file_exists($fullpath)){ 
    unlink($fullpath); 
} 
$fp = fopen($fullpath,'x'); 
fwrite($fp, $rawdata); 
fclose($fp); 
} 

如果基本捲曲圖像採集功能失敗,則供體部位可能有到位某種形式的服務器端防禦系統,以防止檢索,因此您可能受進一步繼續違反服務條款。儘管很少有網站使用GD庫模塊「實時」創建圖像,但是看起來像鏈接到圖像的實際上是一個PHP腳本,可能會檢查cookie,引用者或會話值等事情是否被傳遞在圖像被創建和輸出之前對其進行處理。

+0

在我的問題中,我寫道CURL得到了403錯誤,以及打開和複製。我不太確定,但我想imagecreatefromjpeg()不會有太大的不同。 – Petruza 2012-03-30 01:47:11

+1

看看使用Firebug和一個好的Cookie管理器,整個網頁實際上在做什麼。 Curl可以模仿任何useragent(假裝爲網頁瀏覽器),並且可以發送和接收cookie。 – Skizz 2012-03-30 09:46:35

+0

謝謝,我剛剛使用Chrome,這是我使用的,但有一個內置工具就像螢火蟲。 – Petruza 2012-03-30 16:44:10

相關問題