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

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

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

    微博图床开启了防盗链,导致图片 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 错误防盗链问题

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

    这是5分钟快3我 的解决方案
        15
    mayx   109 天前 via Android
    @MayKiller 5分钟快3我 看不是所有,有一些不是。
        16
    MayKiller   109 天前
    @mayx 嗷. 的确有一些不是.
    #12 s/所有 /大部分 /g
        17
    Livid   5分钟快3 Moderator   109 天前 via iPhone
    @MayKiller 谢谢。
        18
    shanlan   109 天前
    @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 快很多
        19
    zjb861107   108 天前
    @shanlan 5分钟快3你 的意思5分钟快3我 的博客访问慢吗?这个5分钟快3我 是知道的,(偷笑)。
    一方面是因为有谷歌统计、字体这些,受梯子影响不一定快;另外5分钟快3我 只有那一篇文章是用了 webp,老的图片资源还没来得及迁移。
    以前5分钟快3我 是用的良心云各种5分钟快3服务 自建博客的,速度很快。后来尝试用 Travis-CI 的时候把博客迁到 Github Pages 就懒得再恢复回来了,因为 github 禁止百度爬虫。
        20
    yinaw   93 天前
    5分钟快3我 现在也在为此事头疼,5分钟快3我 有一个 WordPress 博客,第一种第二种5分钟快3方法 都试过。

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

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

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

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

    在这方面是小白一个,还望大佬赐教...
        23
    shanlan   90 天前   ♥ 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你 看看。
    5分钟快3关于   ·   FAQ   ·   API   ·   5分钟快35分钟快3我 们 的愿景   ·   广告投放   ·   感谢   ·   实用小5分钟快3工具   ·   4361 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 30ms · UTC 06:15 · PVG 14:15 · LAX 23:15 · JFK 02:15
    ♥ Do have faith in what you're doing.