如何检测.png链接后面的webp文件?

时间:2019-06-16 01:27:58

标签: image http png webp

我有一些棘手的链接:
https://www.pwc.com.tr/tr/sektorler/Perakende-T%C3%BCketici/kuresel-tuketicileri-tanima-arastirmasi/kuresel-tuketici-gorusleri-arastirmasi-info-5en.png

链接中的最后4个字符表示我们将以png格式获取图像,甚至对该链接的GET HTTP请求都将其内容类型为“ image / png”。 但是,如果您尝试将其保存在浏览器中,则最终将得到webp文件格式 Save image...

所以,问题是-如何通过只能使用http协议的程序检测出看起来确实像链接并在png文件下起作用的链接(隐藏标题!)后面的webp图像“隐藏”?

更新:我想指出的是,我确实从不同的环境http获取了请求,并在标头content-type中获取了'image / png'类型。例如使用node.js和axios https://youtu.be/KiRrAVl67uQ

1 个答案:

答案 0 :(得分:1)

更新:服务器将通过请求的User-Agent标头检测客户端类型,并相应地返回不同的Content-Type。这是有道理的,因为并非所有客户端都支持webp。

因此,要获取image/webp类型的资源,您可以发送自定义的User-Agent标头并模拟为Chrome等。例如,在Node.js和axios中:

const axios = require('axios');

axios.request({
  url: 'https://www.pwc.com.tr/tr/sektorler/Perakende-T%C3%BCketici/kuresel-tuketicileri-tanima-arastirmasi/kuresel-tuketici-gorusleri-arastirmasi-info-5en.png',
  method: 'get',
  headers: {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
  }
}).then(function(res) {
  console.log(res.headers); // content-type header is image/webp now.
}).catch(function(err) {
  console.log(err);
});

浏览器尝试将图片保存为.webp格式,因为:在HTTP响应标头中,Content-Type标头的值为image/webp

enter image description here

如何才能检测到它确实在链接看起来像png文件的链接后面隐藏了webp图像...?

您可以检查HTTP响应标头并找到Content-Type