2017-02-23 4 views
0

J'essaie de vérifier si un lien est une image valide avec un nombre magique. La plupart des images lient bien le travail. Mais voici un ensemble d'images sur le site de Trump qui ne produisent pas de nombres magiques corrects, bien qu'ils semblent fonctionner correctement sur le navigateur. Le nombre magique qu'ils produisent est 3c21444f.Numéro magique invalide d'un fichier png

Ci-dessous mon code, Toute aide serait appréciée:

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

C'est ' polarysekt

+0

hmm semble que cloudflare renvoie la page html au lieu de l'image lorsque je fais une demande à ce serveur à partir du script node.js. Peut-être que j'ai besoin d'ajouter des en-têtes appropriés pour obtenir l'image correctement dans le script. Merci – Yalamber

Répondre

0

Donc, apparemment, il semblait être problème avec cloudflare bloquer mes demandes à l'image. Je l'ai donc corrigé à l'aide des en-têtes UserAgent pour demander ces images.

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