2017-02-23 61 views
0

我在嘗試驗證鏈接是否爲帶有幻數的有效圖像。大多數圖像鏈接工作正常。但是這裏有一些王牌網站上的圖片,雖然它們在瀏覽器上顯示效果不錯,但並不能產生正確的幻數。它們產生的幻數是3c21444f。PNG文件的無效幻數

下面是我的代碼,任何幫助,將不勝感激:

var request = require('request'); 
var magic = { 
    jpg: 'ffd8ffe0', 
    jpg1: 'ffd8ffe1', 
    png: '89504e47', 
    gif: '47494638' 
}; 
var options = { 
    method: 'GET', 
    url: 'https://assets.donaldjtrump.com/gallery/4749/screen_shot_2016-10-30_at_1.39.54_pm.png', 
    encoding: null // keeps the body as buffer 
}; 
request(options, function (error, response, body) { 
    if(!error) { 
    var magicNumberInBody = body.toString('hex', 0, 4); 
    if (magicNumberInBody == magic.jpg || 
     magicNumberInBody == magic.jpg1 || 
     magicNumberInBody == magic.png || 
     magicNumberInBody == magic.gif) { 
     console.log('Valid image'); 
    } else { 
     console.log('Invalid Image', magicNumberInBody); 
    } 
    } 
}); 
+0

這就是'<!DO',它似乎可能是一個doctype標籤。 – polarysekt

+0

hmm好像cloudflare正在返回html頁面而不是圖像,當我從node.js腳本向該服務器發出請求時。可能是我需要添加適當的標題來正確地在腳本中獲取圖像。謝謝 – Yalamber

回答

0

因此很明顯,這似乎是問題與CloudFlare的擋住了我的請求圖像。所以我使用UserAgent Headers修復它以請求這些圖像。

var options = { 
    method: 'GET', 
    url: 'https://assets.donaldjtrump.com/gallery/4749/screen_shot_2016-10-30_at_1.39.54_pm.png', 
    headers: { 
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36' 
    }, 
    encoding: null // keeps the body as buffer 
};