知乎保存头像时会用 canvas 截第一帧,动图秒变静态。但图床显示时只看内容不认后缀。把 toBlob 的返回值偷换成完整动图,知乎就会乖乖帮你存下它。选一张动图,这里帮你生成注入脚本,还能先在本页模拟器里验货。
同样点一次「保存」,有没有注入,走向完全不同。
关键在图床:知乎显示头像时直接加载文件,不看后缀。所以只要文件内容是动图,前端就能动起来。
最终必须是动态 webp。gif 直传会被知乎转成静态图,选 gif 后请先点「转成 webp」。也可以先用内置样例跑通流程。
点击选择,或把动图拖进来
动态 webp / gif,gif 会自动提示先转换
脚本已把你的动图以 base64 内嵌进去,粘贴即用。先别急着去知乎,第三步可以在本页先验证。
选好动图后,脚本会出现在这里。
下面两张卡模拟知乎的「保存头像」。左边走原生逻辑,右边先注入再保存。两张结果图放一起,差别一眼可见。
不注入,直接 canvas.toBlob。知乎每天都在这么干。
先把脚本注入到本页,再点保存。和知乎实战完全一致。
注入只对当前页面生效,刷新即失效。左边那张卡始终走原生逻辑,方便随时对比。
模拟器里看到动图之后,就可以动真格的了。
allow pasting。Invalid or unexpected token?脚本被截断了。回到第二步,用「复制脚本」按钮完整复制一遍。
not correctly encoded?base64 没复制全,同样重新完整复制一次。手动选中容易漏头漏尾。
不行。实测 gif 上传后还是静态的,知乎会把 gif 转成静态图。必须先转成动态 webp 再注入。
不是。页面把 gif 发到服务器,在服务端转成 webp,不占用你的浏览器算力。
算图床校验不严。仅供学习研究,别上传违规内容。