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

2019-07-03 21:09:06 +08:00
 shanlan

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

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

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

  3. 在方法 2 的步骤上升级一下。对 img 的 Src 进行匹配,只有匹配 通过的 img 标签才会加上referrerpolicy="no-referrer",实现方法是添加 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);
	}
});

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

4473 次点击
所在节点    程序员
28 条回复
ysc3839
2019-07-03 21:35:08 +08:00
Hexo 的话应该有更优雅的方案,直接在 Markdown 生成器里面检测并添加。
abcdocker
2019-07-03 22:03:20 +08:00
WordPress 才是王道
https://i4t.com/
shanlan
2019-07-03 22:03:55 +08:00
@ysc3839 欢迎补充。
shanlan
2019-07-03 22:05:05 +08:00
@abcdocker 这个是用 GitHub pages 等免费的静态服务器部署,不需要额外购置服务器。
luckyrayyy
2019-07-03 22:13:27 +08:00
hexo 可以直接生成同名文件夹,图片也放在 pages 里,压根不用图床。
ysc3839
2019-07-03 22:26:46 +08:00
@luckyrayyy 用图床是为了避免网站本身访问太慢吧。
Love4Taylor
2019-07-03 22:48:27 +08:00
@luckyrayyy 流量以及存储容量都是个问题.
szhaoliang
2019-07-03 22:57:23 +08:00
@ysc3839 GitHub 在国内访问很慢吗?图片都是直接放在 GitHub 上,要是慢的话要考虑下家了。
fqxufo
2019-07-03 22:57:46 +08:00
有的老版本浏览器不支持 referrerpolicy 的特性吧
MonoLogueChi
2019-07-03 23:01:02 +08:00
@szhaoliang 很慢,而且可用率不高
ysc3839
2019-07-03 23:05:59 +08:00
@szhaoliang 我说不清,具体情况可能很复杂,建议自行测试。
MayKiller
2019-07-03 23:11:21 +08:00
@Livid #2
无意义回复, 且该帐号下所有回复均指向其博客.
flyz
2019-07-03 23:41:09 +08:00
@luckyrayyy github 不套 cf,根本不能用
zjb861107
2019-07-04 00:13:11 +08:00
借助数据万象(原万象优图),让 hexo 也用上 webp: https://blog.i1hao.com/2019/07/02/cloud-infinite/

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

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

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

对您说的第三种方法很感兴趣,请问,您的这些 JavaScript 代码对 WordPress 博客有效吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/579771

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX