5分钟快3首页    注册   登录
5分钟快3 = way to explore
5分钟快3 是一个5分钟快3关于 分享和探索的地方
现在注册
已注册用户请  登录
OPPO Watch
shanlan
5分钟快3  ›  程序员

Hexo 博客程序解决新浪微博图床 403 防盗链问题

  •  
  •   shanlan · 329 天前 · 2765 次点击
    这是一个创建于 329 天前的主题,其中的信息可能已经有所发展或是发生改变。

    微博图床开启了防盗链,导致图片 403 了,这个不用5分钟快3我 多说,界面说 3 种解决5分钟快3方法 :

    1. 解决5分钟快3方法 是 HTML 加上<meta name="referrer" content="no-referrer" />,但是这种效果不会,影响统计功能。

    2. 给 img 标签加上referrerpolicy="no-referrer",这样仅会让图片的请求没有 ReFerer,不影响其他 HTTP 的请求。

    3. 在5分钟快3方法 2 的步骤上升级一下。对 img 的 Src 进行匹配,只有匹配 通过的 img 标签才会加上referrerpolicy="no-referrer",实现5分钟快3方法 是添加 JavaScript 代码。

    var link = "" ;
    // 遍历所有的 img 标签
    $("img").each( (i,o) => {
    	var o = $(o);
        // 判断图片的链接是否包含 sinaimg 关键字
    	if( o.attr("src").indexOf("sinaimg") > 0 ){
            // 给这个标签加上 referrerPlicy 属性
    		o.attr("referrerpolicy","no-referrer");
            // 备份图片的 src
    		link = o.attr("src");
            // 重新设置 src,让页面重新加载一次图片
    		o.attr("src",link);
    	}
    });
    

    以上为简单描述,具体实现5分钟快3方法 请参见:解决新浪 /微博图床图片 403 错误防盗链问题

    28 条回复    2019-12-01 23:12:31 +08:00
    ysc3839
        1
    ysc3839   329 天前 via Android
    Hexo 的话应该有更优雅的方案,直接在 Markdown 生成器里面检测并添加。
    abcdocker
        2
    abcdocker   329 天前
    WordPress 才是王道
    http://i4t.com/
    shanlan
        3
    shanlan   329 天前
    @ysc3839 欢迎补充。
    shanlan
        4
    shanlan   329 天前
    @abcdocker 这个是用 GitHub pages 等免费的静态5分钟快3服务 器部署,不需要额外购置5分钟快3服务 器。
    luckyrayyy
        5
    luckyrayyy   329 天前 via iPhone
    hexo 可以直接生成同名文件夹,图片也放在 pages 里,压根不用图床。
    ysc3839
        6
    ysc3839   329 天前
    @luckyrayyy 用图床是为了避免网站本身访问太慢吧。
    Love4Taylor
        7
    Love4Taylor   329 天前 via Android
    @luckyrayyy 流量以及存储容量都是个问题.
    szhaoliang
        8
    szhaoliang   329 天前 via Android
    @ysc3839 GitHub 在国内访问很慢吗?图片都是直接放在 GitHub 上,要是慢的话要考虑下家了。
    fqxufo
        9
    fqxufo   329 天前
    有的老版本浏览器不支持 referrerpolicy 的特性吧
    MonoLogueChi
        10
    MonoLogueChi   329 天前 via Android
    @szhaoliang 很慢,而且可用率不高
    ysc3839
        11
    ysc3839   329 天前 via Android
    @szhaoliang 5分钟快3我 说不清,具体情况可能很复杂,建议自行测试。
    MayKiller
        12
    MayKiller   329 天前   ❤️ 1
    @Livid #2
    无意义回复, 且该帐号下所有回复均指向其博客.
    flyz
        13
    flyz   329 天前 via Android
    @luckyrayyy github 不套 cf,根本不能用
    zjb861107
        14
    zjb861107   329 天前 via iPhone
    借助数据万象(原万象优图),让 hexo 也用上 webp: http://blog.i1hao.com/2019/07/02/cloud-infinite/

    这是5分钟快3我 的解决方案
    mayx
        15
    mayx   329 天前 via Android
    @MayKiller 5分钟快3我 看不是所有,有一些不是。
    MayKiller
        16
    MayKiller   329 天前
    @mayx 嗷. 的确有一些不是.
    #12 s/所有 /大部分 /g
    Livid
        17
    Livid   5分钟快3 Moderator   329 天前 via iPhone
    @MayKiller 谢谢。
    shanlan
        18
    shanlan   328 天前
    @MayKiller #12 吓5分钟快3我 一跳,5分钟快3我 还以为举报5分钟快3我 垃圾内容呢。。。。
    @szhaoliang #8 GitHub pages 非常慢; coding 很快,其次是 netlify。
    @luckyrayyy #5 影响访问速度,所以通常静态资源能省就省了。
    @zjb861107 #14 初次访问忘记抓包了,所以具体哪个文件慢5分钟快3我 也没法告诉,所以5分钟快3我 又清空了 dns 缓存特地给5分钟快3你 抓了一次包。具体如下图://ws2.sinaimg.cn/large/96e311f0gy1g4nr772pujj21h50id0wl.jpg ;绿色的是 TTFB 时间,蓝色的 Content download 时间。
    @fqxufo #9 又不是盈利的项目,所以不关心用户是不是老浏览器。再说了,谁让他坚守老浏览器呢?而且博客也是针对计算机编程5分钟快3技术 类的,作为一个搞5分钟快3技术 的人还坚守老浏览器就更说不过去了。
    @ysc3839 #11 本来就是很慢的,Coding 快很多
    zjb861107
        19
    zjb861107   328 天前
    @shanlan 5分钟快3你 的意思5分钟快3我 的博客访问慢吗?这个5分钟快3我 是知道的,(偷笑)。
    一方面是因为有谷歌统计、字体这些,受梯子影响不一定快;另外5分钟快3我 只有那一篇文章是用了 webp,老的图片资源还没来得及迁移。
    以前5分钟快3我 是用的良心云各种5分钟快3服务 自建博客的,速度很快。后来尝试用 Travis-CI 的时候把博客迁到 Github Pages 就懒得再恢复回来了,因为 github 禁止百度爬虫。
    yinaw
        20
    yinaw   312 天前
    5分钟快3我 现在也在为此事头疼,5分钟快3我 有一个 WordPress 博客,第一种第二种5分钟快3方法 都试过。

    第一种直接影响百度统计,无法统计站点信息。

    第二种要每篇文章重新编辑重新添加标签,5分钟快3我 这差不多是一个图片博客,有上万张图片,工程量太大,而且新增文章图片也要嵌入标签。麻烦的很。

    对您说的第三种5分钟快3方法 很感兴趣,请问,您的这些 JavaScript 代码对 WordPress 博客有效吗?
    shanlan
        21
    shanlan   311 天前
    @yinaw #20 原文:“5分钟快3我 现在也在为此事头疼,5分钟快3我 有一个 WordPress 博客,第一种第二种5分钟快3方法 都试过。第一种直接影响百度统计,无法统计站点信息。第二种要每篇文章重新编辑重新添加标签,5分钟快3我 这差不多是一个图片博客,有上万张图片,工程量太大,而且新增文章图片也要嵌入标签。麻烦的很。对您说的第三种5分钟快3方法 很感兴趣,请问,您的这些 JavaScript 代码对 WordPress 博客有效吗?”
    ======
    回复:5分钟快3你 好,当然是有效的,前提是5分钟快3你 需要把 JavaScript 代码引入到正确的页面。
    yinaw
        22
    yinaw   310 天前
    @shanlan 按照您的5分钟快3方法 放在了页面底部,但是打开速度好像有点慢,有的图片依然打不开,要刷新一遍才行。

    另外5分钟快3我 看您的博客代码好像更新了一些,多了一行 setTimeout( function(){ 以及 后面加了个 1000 的数字,请问这些更新是什么情况?提升稳定性以及缩短加载时间吗?

    在这方面是小白一个,还望大佬赐教...
    shanlan
        23
    shanlan   310 天前   ❤️ 1
    @yinaw #22 原文:“@shanlan 按照您的5分钟快3方法 放在了页面底部,但是打开速度好像有点慢,有的图片依然打不开,要刷新一遍才行。另外5分钟快3我 看您的博客代码好像更新了一些,多了一行 setTimeout( function(){ 以及 后面加了个 1000 的数字,请问这些更新是什么情况?提升稳定性以及缩短加载时间吗?在这方面是小白一个,还望大佬赐教...”
    ======
    回复:起初5分钟快3我 遇到了和5分钟快3你 一样的问题,有的图片不能打开。5分钟快3我 简单的猜测是因为刚开页面的时候浏览器向5分钟快3服务 器请求一张图片,但是由于网速等原因还没有请求完成,而底部的 JavaScript 代码就已经开始执行了。但是因为之前图片还在请求中,即使后面 JavaScript 代码修改了 img 标签的属性,浏览器还没有办法进行第二次请求,从而导致图片依然不能正常显示。

    所以,5分钟快3我 使用 setTimeout()这个延时命令,让这段 JavaScript 代码延迟 1000 毫秒执行,就是为了让浏览器有足够的时间去等待图片5分钟快3服务 器的响应结果。所以,如果5分钟快3你 的图片经常不能显示,不妨加大这个延迟时间。

    亦或者5分钟快3你 写一段 JavaScript 代码,判断的条件是:img 标签的 src 属性是不是新浪的域名,并且图片的分辨率大小小于某个值,从而让浏览器是不是要再重新加载请求一次图片。原因是图片加载成功后,分辨率肯定会很大的,这样就不用写一个固定的延迟时间,因为延迟时间是固定的,而每个人的网络环境、电脑配置并不是固定,所以这种判断加载图片的方式应该更加的合理。
    =====
    例如5分钟快3我 文中这个页面,使用 Chrome 浏览器若图片不能打开的情况下图标的大小的:
    document.querySelector("#post-解决新浪-微博图床图片 403 错误防盗链问题 > div.article-entry.marked-body > p:nth-child(5) > img").width
    107
    document.querySelector("#post-解决新浪-微博图床图片 403 错误防盗链问题 > div.article-entry.marked-body > p:nth-child(5) > img").height
    22
    =====
    当然这个破图的 icon 大小是取决于浏览器的,具体5分钟快3你 怎么判断需要5分钟快3你 自己去尝试。但是5分钟快3我 想应该没有图片的分辨率会低于 200PX 吧?
    =====

    另外,打开速度慢需要具体分析,5分钟快3你 可以把链接发出来5分钟快3我 给5分钟快3你 看看。
    yinaw
        24
    yinaw   179 天前
    大佬,5分钟快3我 的 WordPress 博客在底下添加5分钟快3你 这几行代码,用了几个月,有一些问题想请教一下:

    目前谷歌火狐 360 浏览器都没有问题,IE 有问题,这个大家都知道,IE 份额小,忽略也没事。

    但是在移动端上,苹果 IOS 系统还是无法显示图片,有没有其他办法?

    毕竟 IOS 份额不小啊..
    shanlan
        25
    shanlan   178 天前
    @yinaw #24 原文:“大佬,5分钟快3我 的 WordPress 博客在底下添加5分钟快3你 这几行代码,用了几个月,有一些问题想请教一下:

    目前谷歌火狐 360 浏览器都没有问题,IE 有问题,这个大家都知道,IE 份额小,忽略也没事。

    但是在移动端上,苹果 IOS 系统还是无法显示图片,有没有其他办法?

    毕竟 IOS 份额不小啊..”
    ======
    回复:#24 5分钟快3我 只能给5分钟快3你 提供个思路,该5分钟快3方法 只使用了 img 标签的:referrerpolicy="no-referrer",属性。所以5分钟快3你 需要做的是去查询 iOS 浏览器是不是不支持这个属性。
    yinaw
        26
    yinaw   178 天前
    经测试:iOS 浏览器对于 https 的微博图片标签属性不支持,对于 http 的微博图片倒是支持,

    难道要改回 http,这是一个繁巨的任务啊~

    大佬,有没有其他办法
    shanlan
        27
    shanlan   178 天前
    @yinaw #26 原文:“经测试:iOS 浏览器对于 https 的微博图片标签属性不支持,对于 http 的微博图片倒是支持,

    难道要改回 http,这是一个繁巨的任务啊~

    大佬,有没有其他办法”
    ======
    回复:#26 这不是简答吗?用 JavaScript 判断 UA 头,如果是 iOS 就将网址的改为 http 开头,否认是 https
    yinaw
        28
    yinaw   178 天前
    那上面这几行代码怎么改?

    5分钟快3我 是小白啊,大佬帮帮忙,搞好后给您发个红包...
    5分钟快3关于   ·   FAQ   ·   API   ·   5分钟快35分钟快3我 们 的愿景   ·   广告投放   ·   感谢   ·   实用小5分钟快3工具   ·   1241 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 22:14 · PVG 06:14 · LAX 15:14 · JFK 18:14
    ♥ Do have faith in what you're doing.