Node.js png文件的无效幻数
我正在尝试验证一个链接是否是一个带有魔术数字的有效图像。大多数图像链接工作正常。但以下是特朗普网站上的一组图像,它们并没有生成正确的魔法数字,尽管它们在浏览器上运行良好。他们产生的神奇数字是3c21444f 以下是我的代码,如有任何帮助,将不胜感激:Node.js png文件的无效幻数,node.js,validation,image-processing,magic-numbers,Node.js,Validation,Image Processing,Magic Numbers,我正在尝试验证一个链接是否是一个带有魔术数字的有效图像。大多数图像链接工作正常。但以下是特朗普网站上的一组图像,它们并没有生成正确的魔法数字,尽管它们在浏览器上运行良好。他们产生的神奇数字是3c21444f 以下是我的代码,如有任何帮助,将不胜感激: var request = require('request'); var magic = { jpg: 'ffd8ffe0', jpg1: 'ffd8ffe1', png: '89504e47', gif: '47
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);
}
}
});
很明显,cloudflare阻止了我对图像的请求,这似乎是个问题。因此,我修复了使用UserAgent头请求这些图像的问题
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
};
这是
,看起来可能是一个doctype标记。当我从node.js脚本向服务器发出请求时,cloudflare似乎返回的是html页面而不是图像。可能是我需要添加适当的标题,以便在脚本中正确地获取图像。谢谢