jpg 图片被转换为 webp 格式,如何避免? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Get Google Chrome
Vimium 在 Chrome 里使用 vim 快捷键
microka
V2EX    Chrome

jpg 图片被转换为 webp 格式,如何避免?

  •  
  •   microka 2020-01-10 21:16:26 +08:00/span> 5534 次点击
    这是一个创建于 2183 天前的主题,其中的信息可能已经有所发展或是发生改变。
    发现有些图床,图片链接结尾是.jpg ,但在 chrome 里面就自动套用了 webp 格式,无论是拖拽到本地或右键另存为,都只能以 webp 格式保存,请问有什么办法能便捷获取原始的 jpg 格式图片?(重点是便捷,别说把链接扔进下载工具……)

    Save image as Type
    https://chrome.google.com/webstore/detail/gabfmnliflodkdafenbcpjdlppllnemd
    这个扩展我用过,但发现其保存的 jpg 图片是经过二次转换的,与原始的 jpg 图片不一致。

    示例图片链接
    https://i.loli.net/2020/01/04/EgavQRbD9jhoOlT.jpg

    求大佬支招,谢谢!
    13 条回复    2020-03-12 23:33:49 +08:00
    Austaras
        1
    Austaras  
       2020-01-10 21:36:31 +08:00
    1. 这和 chrome 无关
    2. 它只是名字是***.jpg ,里面是 webp,浏览器还没蠢到看名字认文件类型的地步,而是看 magic number
    3. 所以除了二次转换没有别的办法
    also24
        2
    also24  
       2020-01-10 21:37:51 +08:00   1
    首先,服务器之所以回复给你 webp,是因为你的 Request Header 里,Accept 里指明了自己支持 webp

    打开开发者工具看一下当前的 Accept 字段,我的是这样:
    text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9


    那么只需要找一个修改 header 的工具,例如
    https://chrome.google.com/webstore/detail/modheader/idgpnmonknjnojddfkpgkljpfnnfcklj

    注意:我也是第一次下载这个工具,未检查此扩展是否存在信息泄露等问题,请自己检查。

    用工具把 Accept 字段修改为:
    text/html,application/xhtml+xml,application/xml;q=0.9,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

    强制刷新图片页面,可以看到此时返回的已经是正常的 jpg 图片:
    microka
        3
    microka  
    OP
       2020-01-10 21:39:27 +08:00
    @Austaras 不是啊,直接把这个链接仍去下载器,就能获取原始 jpg 文件,我理解是图床存了一份 webp 格式的副本,当 chrome 这类支持 webp 格式的浏览器访问时就提供 webp 格式的图片。
    geelaw
        4
    geelaw  
       2020-01-10 21:47:43 +08:00   1
    @Austaras #1

    1. 这和 Chrome 有关。

    如果用 Edge/Chrome 分别右键本帖里的链接另存为,会得到同样 sha256 = 4151434305F6EED9B06892C6CB21526BD744A2BD1471ECE6964FED31B99C6F68 的 jpeg 图片。
    如果用 Edge/Chrome 分别打开链接并另存为图片,Edge 会得到和刚刚一样的图片,而 Chrome 会得到 webp 图片。
    如果用 Start-BitsTransfer 或者 Invoke-WebRequest 下载,则会得到 jpg 图片。

    具体原因是 Chrome 会在请求头里输入 Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

    于是 Cloudflare 会返回 image/webp。

    2. 浏览器通过 Content-Disposition 知道扩展名是 webp,Content-Type 知道文件 MIME 类型是 image/webp。当然,可能 Chrome 并不关心来的图片到底是什么格式,直接交给底层渲染器,底层渲染器可能会自动识别。通常来说,如果你把类型写成文本,Chrome 并不会把它看成图片,即使里面包含 magic number。

    3. 正确的方法就是右键点链接另存为。
    microka
       
    microka  
    OP
       2020-01-10 21:50:18 +08:00
    @also24 感谢大佬!成功了!另想请问一下您截图的这个能看 Request Header 信息的界面具体是在哪里?我在 chrome 里面按 F12 调出的界面没找到
    ![微信截图_20200110214903.png]( )
    also24
        6
    also24  
       2020-01-10 21:53:12 +08:00   1
    @microka #5
    Network 标签,然后点击具体的请求
    microka
        7
    microka  
    OP
       2020-01-10 21:57:36 +08:00
    @also24 看到了,谢谢!
    also24
        8
    also24  
       2020-01-10 22:10:29 +08:00
    @geelaw #4

    测试了一下右键另存为的方案,确实可行.
    抓请求看了一下,发现 Chrome 在右键另存为的请求里,没有指明任何特殊的 Accept 类型。




    这里有意思的一点是,如果先右键另存为形成请求缓存之后,再点击这张图会被 304,但是 header 里的 filename 字段还是 “xxx.webp”,此时在页面上另存为会得到一个 webp 后缀的 jpg 图片。

    crab
        9
    crab  
       2020-01-10 22:13:55 +08:00
    我都是把图片链接用 IE 浏览器打开另存为 jpg
    Austaras
        10
    Austaras  
       2020-01-10 22:58:33 +08:00
    @geelaw
    1. 只要支持 webp 格式的浏览器行为都是这样,当然和 chrome 无关
    2. Content-Disposition 只指示文件名,对浏览器渲染不起指导作用; content type 里有用只有 image,后面的具体格式并不重要。当然你说的改成 text/plain 那是会直接显示文本
    microka
        11
    microka  
    OP
       2020-03-12 22:14:08 +08:00
    @also24 大佬,求帮忙看看 https://hdchina.org/attachments/202003/202003072313578dd932ff2484839663addfa7ceb50637.jpg 这个链接,更改了 Accept 字段也不行,就算添加 "image/jpeg" 也不行。
    also24
        12
    also24  
       2020-03-12 23:14:07 +08:00
    @microka #11
    你有没有想过这其实就是一张写错了后缀的 webp ?
    microka
        13
    microka  
    OP
       2020-03-12 23:33:49 +08:00
    @also24 还真是!哈哈哈感谢!思维盲区了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     928 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 18:44 PVG 02:44 LAX 10:44 JFK 13:44
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86