google chrome

为什么谷歌浏览器将JPG图片保存为WEBP而不是

我试图从Chrome浏览器中保存看似JPG的图片,但最终总是下载一个WEBP图片。

我在 macOS Catalina (10.15.4) 上使用 Chrome 版本 80.0.3987.163,我正在尝试从网站下载JPG 图像。即使图像 URL 明显具有 .jpg 扩展名,当我点击 CMD+S 或右键单击图像并选择 Save image as... 时,我会看到文件系统对话框以保存它,格式下拉菜单设置为 Google's WEBP 如下所示。

我的猜测是,他们在一张实际上是WEBP的图片上使用JPG扩展名,但这很容易引起误解。这有可能吗?有没有办法将图片下载成JPG格式?


文件扩展名与 HTTP 完全无关:如果服务器显示 Content-Type: image/webp ,那么它就是 WebP 图像,句号。(与大多数网站不再在其 URL 中使用 .html 相比,即使它们提供基于 HTML 的网页。)

上传到网站的原始图像是JPEG文件;但是,它是通过“内容交付网络”(在本例中为 Akamai)提供给您的。CDN 的工作是托管这些文件并减少网站真实服务器的负载,但许多 CDN 还提供各种优化功能来为客户端节省带宽——这通常包括重新压缩图像、缩小 JS/CSS 文件等。

Akamai 查看 HTTP 请求的User-Agent标头来猜测您的浏览器支持的最佳格式是什么(尽管奇怪的是,它忽略了Accept标头)并在需要时自动将图像转换为 WebP。URL 保持不变,但响应的Content-Type标头指示新格式。

除了安装“User Agent spoofer”扩展或尝试不同的浏览器之外,您还可以复制 URL 并通过终端使用 curlwget 工具来下载它(macOS 应该至少内置其中一个)。CDN 通常会从 webpification 功能中排除“非浏览器”工具。

curl -Of https://mosaic03.ztat.net/vgs/media/catalog-lg/NI/12/2O/0H/NQ/12/NI122O0HN-Q12.jpg



减少CDN数据流量

WebP是目前由 Google 开发的一种图像格式,基于购买 On2 Technologies 获得的技术。

如果您的HTTP(S) 请求标头中的 User-Agent 字段显示您使用的是最新浏览器,则内容交付网络 (CDN)服务器可能会以这种新的 WebP 格式提供原始 .jpg.png 图像以减少数据流量。尽管如此,这些提供的图像文件将保留其原始文件扩展名;什么是真正的误导和欺骗。

wgetcurl 命令下载原始图像文件。

一些 Google Chrome 扩展程序提供了一种以另一种图像格式保存作为 WebP 提供的图像的方法。但是,只有一个扩展是开源软件;即Save image as Type

不过,这个和所有其他类似的扩展都有一个烦人的缺点。在保存之间,这些扩展不会调用保存前一个图像的目录。这可能是由于谷歌关于扩展的沙盒政策,也可能不是。无论如何,我打开了一个关于它的GitHub 问题