岚依 发表于 2020-5-18 10:16:07

有些帖子由于Referer的原因无法正确加载图片

本帖最后由 岚依 于 2020-5-18 10:18 编辑

我不知道是不是我打开的姿势不对,但有些帖子就是无法加载外链的图片,怎么说呢。。。看上去好像这是其他(储存了图片的)网站的防盗链措施,但是它们加载不出来还是挺影响阅读体验的{:09:}
比如说这样:
(帖子链接 https://bbs.nyasama.com/forum.php?mod=viewthread&tid=78092&page=6#pid813485 )

图片永远加载不出来,在控制台里可以发现加载失败了,原因大概是B站服务器通过Referer发现了这边在盗链(




帖子实际上应该是这样的:

所以,是不是可以考虑监听图片标签加载失败的事件,在加载失败后换别的referer / cors再试一遍,或者直接把图片标签的referer-policy设为no-referer,假如实在不行的话,直接上iframe {:12:}

PS: 我写了一个油猴脚本来暂时解决这个问题,也许能帮到有同样问题的人(
它应该能够监听所有“延迟加载”的图片,并在图片加载失败的时候自动重新尝试一遍
// ==UserScript==
// @name         Referer rescuer
// @namespace    http://tampermonkey.net/
// @version      0.1
// @descriptiontry to take over the world!
// @author       lanyi
// @match      https://bbs.nyasama.com/*
// @grant      none
// ==/UserScript==

(function() {
'use strict';
document.body.querySelectorAll(`img`).forEach(element => {
    console.log(`adding error handler for ${element.id}`);
    element.onerror = async () => {
      console.log(`rescuing ${element.id}`);
      const response = await fetch(element.getAttribute('src'), {
          "headers": {
          "accept": "*/*",
          "sec-fetch-dest": "empty",
          "sec-fetch-mode": "cors",
          "sec-fetch-site": "cross-site"
      },
      "referrerPolicy": "no-referrer",
      "mode": "cors",
      });
      element.setAttribute('src', URL.createObjectURL(await response.blob()));
    };
})
})();

PSS:为什么手机版(触屏版)直接就连<img>标签都消失了啊喂!




ooxoo 发表于 2020-5-19 02:01:37

……出现这个问题一般是因为发帖人用了不可以外链的图床 也就是说图片的存储网站不允许把图片发到别的地方比如这里来 重新尝试几遍也没用的(
……这不是喵玉想处理就可以处理的事情 而且喵玉也不该管这事 只能提醒发帖的人把图片换个允许外链的图床或者转存到喵玉再放(

岚依 发表于 2020-5-19 09:09:06

ooxoo 发表于 2020-5-19 02:01
……出现这个问题一般是因为发帖人用了不可以外链的图床 也就是说图片的存储网站不允许把图片发到别的地方 ...

嗯。。确实有道理orz
页: [1]
查看完整版本: 有些帖子由于Referer的原因无法正确加载图片