2012-01-18 104 views
0

有時我會遇到一個圖像,我不能刮,以便它可以保存。這方面的一個例子是:如何刮取沒有擴展名的圖像?

https://s3.amazonaws.com/plumdistrict.com-production/perks/12321/image/original.?1325898487

當我打從Internet Explorer我看到的圖像的URL,但是當我嘗試從代碼得到它下面,我得到了以下錯誤消息「System.Net.WebException遠程服務器返回錯誤:(403)禁止」錯誤與GetResponse的:

string url = "https://s3.amazonaws.com/plumdistrict.com-production/perks/12321/image/original.?1325898487"; 
WebRequest request = WebRequest.Create(url); 
WebResponse response = request.GetResponse(); 

如何得到這個圖像的任何想法?

編輯:

我能夠保存圖像,確實有擴展名。例如,我可以刮下面的圖片就好了:

https://s3.amazonaws.com/plumdistrict.com-production/perks/12659/image/original.jpg?1326828951

回答

0

那麼,它看起來像它正在從一個腳本(可能是從數據庫中檢索)生成。服務器應該發送一個文件/內容類型與...一起去,但它似乎不是,我認爲這是違反標準。

我的Linux系統盒知道這是一張JPEG圖像,因爲它檢查文件頭而不是依賴擴展名。也許有一種工具可以在Windows中執行相同的操作?

編輯:其實,在進一步的思考中,你會得到一個。也許服務器實際上阻止你以這種方式檢索文件。

1

儘管HTTP最初應該是無狀態的,但仍有很多實現依賴於它是無狀態的。我可以配置我的網絡服務器,只接受請求「http://mydomain.com/sexy_avatar.jpg」,如果你提供了一個證明你已經登錄的cookie。如果沒有,我發送給你一個重定向303到「http:// mydomain .COM/avatar_for_public_use.jpg」。

亞馬遜可能也會這樣做。嘗試使用Chrome加載網頁,然後查看開發者模式下的網絡視圖(CTRL + SHIFT + J)以查看提供給網站的所有標題。也許你甚至需要在同一個會話中進行完整的導航,然後才能看到圖像。在我開發的許多Web應用程序中,情況確實如此:-)

+0

+1有價值的答案 – mKorbel 2012-01-18 11:58:52

+0

讓我看看我是否正確理解你。我想你說的是,亞馬遜可能會要求我通過cookie來傳遞它的某些會話狀態,但是,我可以在不通過IE登錄的情況下獲取此圖像。 – 2012-01-18 21:45:46

+0

爲了驗證您的理論,我繼續通過cookie以編程方式提交圖片請求,但仍無法獲取此圖片。我仍然得到403錯誤。我知道會話狀態是正確的,因爲我可以訪問僅限會員的頁面。另外,我可以訪問並保存除此之外的所有圖像。我仍然好奇,如果這沒有exentsion可能是原因。 – 2012-01-18 21:53:38

相關問題