当前位置: 首页 > 知识库问答 >
问题:

javascript - 其他网站的在线 blob 图片链接可以下载吗?

纪佐
2023-07-31

这是一个互动视频 H5 的 demo,我觉得很有创意,我在查看源码的时候 network 面板发现 图片是不可以预览的,但是页面上却能正常渲染

image.png

单独打开图片资源显示如下

image.png

这个防止别人扒图好像很厉害,
有没有懂得大佬讲讲原理,这种把图片 url 以blob:https格式的链接有什么优势?
有没有可以下载的方法?
感谢��

共有1个答案

颛孙哲
2023-07-31

其实这一点儿反爬措施都没有……

之所以在浏览器里你打开 Blob URL 看到的是一串乱码,只是因为 Blob URL 的响应标头没有 Content-Type 而已,浏览器不知道这是个什么类型的文件,所以只能默认按照纯文本去解析,所以得到了一串乱码。

但你可以直接抓个包把响应的字节流保存下来,自己写个程序转换一下就好了。

或者也可以直接在 DevTools 上右键 → 复制响应,就得到一个 Base64 后的响应信息了,随便找个 Base64 解码工具就好了。

比如:

image.png

然后我随便找了个在线图片 Base64 编解码的小工具(https://oktools.net/image2base64):

image.png

把刚刚得到的那坨 Base64 响应粘贴进去,然后删掉开头没有用的那部分(红圈里那些),就得到图片了,然后你想要保存图片直接右键就好了:

image.png

P.S. 因为它这些素材图都是透明的 PNG 图片,所以在白色背景下看起来比较费劲,所以我改了一下网页的背景色变成黑色。


至于为啥它这里用 Blob URL,我简单看了看,是因为它这个其实是个 Flash 小游戏。但现代浏览器都不再支持直接播放 swf 文件了,所以它自己实现了一个 Flash 解码器,把 swf 文件里的素材提取成了 ArrayBuffer,然后用 URL.createObjectURL 转成了 Blob URL,再通过 Canvas 绘制出来,就成了现在你看到的这样了。

而为啥作者不直接搞 H5 小游戏、而是费这么大劲绕这么大圈,这我就不知道了……可能是作者更熟悉 Flash?

 类似资料:
  • 本文向大家介绍javascript使用链接跨域下载图片,包括了javascript使用链接跨域下载图片的使用技巧和注意事项,需要的朋友参考一下 前言 图片是最常见的静态资源文件,可以从本地、外链获取图片,或者使用base64码展示。而canvas的toDataUrl() API可以将图片转base64码,然后模拟点击事件即可下载图片。 外链下载 在本地或者网站下载外链url图片时涉及到跨域,跨域会

  • 问题内容: 我在网络应用程序中生成普通链接,例如: 当我单击链接时,它将在新页面中显示图片。如果要保存图片,则需要右键单击它并选择“另存为” 我不希望这种行为,我想在单击链接时弹出一个下载框,这可能仅适用于html或javascript吗?怎么样? 如果不是,我想我将不得不编写一个download.php脚本,并以文件名作为参数将其调用到href中…? 问题答案:

  • 本文向大家介绍vbs结合wget 实现下载网站图片,包括了vbs结合wget 实现下载网站图片的使用技巧和注意事项,需要的朋友参考一下 vbs 函数过程: 1. 调用wget: 下载网站所有页面到本脚本目录 …… 2. 扫描本脚本目录中所有文件 …… 3. 读取本脚本目录中的所有网页,匹配图片 URL 地址 …… 4. 保存所有图片 URL 地址到 url-img.txt 文件 …… 5. 调用w

  • 我可以通过这些代码得到一个链接,它可以成功下载一个文件。

  • 本文向大家介绍Java爬虫抓取视频网站下载链接,包括了Java爬虫抓取视频网站下载链接的使用技巧和注意事项,需要的朋友参考一下 本篇文章抓取目标网站的链接的基础上,进一步提高难度,抓取目标页面上我们所需要的内容并保存在数据库中。这里的测试案例选用了一个我常用的电影下载网站(http://www.80s.la/)。本来是想抓取网站上的所有电影的下载链接,后来感觉需要的时间太长,因此改成了抓取2015

  • 问题内容: 现在我有一个,我想将其另存为PNG。我可以使用所有那些花哨的复杂文件系统API来做到这一点,但我真的不喜欢它们。 我知道上面是否有带有属性的链接: 如果用户单击该文件,它将下载文件。因此我想到了这个: 但是,它似乎不起作用。它是否必须由用户操作触发?否则为什么它不起作用? 问题答案: 问题在于jQuery不会触发元素的本机事件,因此不会发生导航(的正常行为),因此您需要手动执行操作。对