如何在 Firefox 81 中保存或获取页面上图像的二进制文件数组而无需重新下载?

如何在 Firefox 81 中保存或获取页面上图像的二进制文件数组而无需重新下载?

我正在使用 Firefox 81(以及 82 开发版),并且我希望能够保存已完成加载的页面上的图像,而无需发送另一个 GET 请求。这是因为:

  1. 我不想在网速很慢的情况下等待再次下载,这很烦人,
  2. 由于页面的过度保护编码(一次性 URL 令牌),可能无法使用相同的 URL 再次下载,
  3. 由于安全措施过于严格,该网站可能会暂时禁止我使用。这些是内部业务网站。

制作页面截图不是一个好选择,因为图像通常比屏幕大,需要放大才能查看全部内容(如巨型甘特图和瀑布图)。

无论出于什么原因,页面上的某些图像可以通过“查看页面信息 > 媒体选项卡”查看,但即使我想要保存的图像就在那里显示,它也会显示其大小为“未知(未缓存)”。当我尝试通过按“另存为...”保存它时,下载选项卡显示文件下载失败或长度为 0 字节(就像正常右键单击图像并“将图像另存为”),如果我检查 GET 响应,似乎 Firefox 并未尝试从内存或缓存中保存它,而是尝试再次获取它,有时它不起作用。

由于旧方法和扩展/插件与现代 Firefox 版本不兼容,因此我要求一种现代方法来保存已下载并显示在页面上的图像。菜单中是否有此按钮?是否有纯 javascript 函数?或者可能是用户脚本 GM_something 方法?或者可能是在 Firefox 81 中起作用的仅插件函数?

我可以使用直接的“保存到文件”按钮或返回原始文件的二进制数组或 base64 字符串的函数。我知道一种使用画布的方法,但由于 CSP/CORS,通常无法发送生成的画布字节,即使它可以工作,文件通常也会更大,因为它不是原始文件而是画布重新绘制的版本,如果可能的话,我想获取原始文件。

相关内容