2017-02-23 7 views
0

Ich versuche zu überprüfen, ob eine Verknüpfung ein gültiges Bild mit einer magischen Zahl ist. Die meisten Bilder funktionieren gut. Aber hier sind eine Reihe von Bildern auf Trumps Website, die keine korrekten magischen Zahlen erzeugen, obwohl sie im Browser gut zu funktionieren scheinen. Die von ihnen produzierte magische Zahl ist 3c21444f.Ungültige magische Nummer einer PNG-Datei

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

Das ist ' polarysekt

+0

hmm scheint, dass cloudflare HTML-Seite anstelle von Bild zurückgibt, wenn ich Anfrage an diesen Server von node.js-Skript stelle. Möglicherweise muss ich richtige Header hinzufügen, um das Bild korrekt im Skript zu erhalten. Vielen Dank – Yalamber

Antwort

0

es also offenbar schien mit cloudflare blockiert meine Anfragen zu Bild zu sein Problem:

Unten ist mein Code, Jede mögliche Hilfe würde geschätzt. Also habe ich es mit UserAgent-Kopfzeilen behoben, um nach diesen Bildern zu fragen.

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 
};