前言
很多早期的站长基本使用新浪的图床, 新浪图床免费又稳定, 受到很多人的青睐, 我本人不怎么用新浪图床, 但是手上有一批素材, 引用的是新浪服务器中的图片, 目前这些图片无论是在浏览器还是在Markdown
编辑器中都无法显示
这已经不是简单的防盗链了 应该是新浪服务器做了某种屏蔽处理
检测服务器和链接是否正常
首先我们要确保新浪服务器中有该图片文件, 可以通过以下几种方式检测:
用
VScode
编辑器中打开文档 然后鼠标停留在图片链接上, 如果能显示图片, 说明该链接有效用
PostMan
或者ApiPost
进行请求访问
使用下载工具进行下载
值得庆幸的是 新浪服务器还没有挂 我们还有足够的时间来对图片进行转移和备份
防盗链临时解决方法
为了使图片迅速恢复访问, 我们可以使用第三方缓存服务来解决防盗链问题, 有以下四种方式可行:
WordPress
1
https://i0.wp.com/图片地址(图片地址要掉 https://)
Weserv.nl
1
https://images.weserv.nl/?url=图片地址
百度 1:
1
https://image.baidu.com/search/down?url=图片地址
百度 2
1
https://gimg2.baidu.com/image_search/&app=2020&src=图片地址(图片地址要去掉 https://)
使用百度的速度相对快一些
Wordpress批量替换
如果你的wordpress
博客大量的图片都在新浪中, 那么可以通过以下两种方式进行批量替换:
静态替换 修改数据库
修改数据库之前记得先备份数据库 以防止误操作无法还原
sql
命令如下:1
UPDATE wp_posts SET post_content = REPLACE( post_content, 'https://tvax1.sinaimg.cn/', 'https://image.baidu.com/search/down?url=https://tvax1.sinaimg.cn/' )
动态替换 修改主题代码
进入
wordpress
主题编辑器:将以下代码添加到主题页脚
foot.php
中:1
2
3
4
5
6
7<script>
let context = Array.prototype.map.call(document.images, (event) => {
event.src = event.src.replace("tvax1.sinaimg.cn/", "image.baidu.com/search/down?url=https://tvax1.sinaimg.cn/")
});
</script>
推荐使用动态的方式自动批量替换, 能将降低数据库操作风险, 又方便后期再次更改, 动态的方式唯一不足之处就是图片加载有延迟
如果你追求加载速度和用户体验, 那么建议采用静态替换的方式
图片批量备份
上面这种临时替换方式始终不是长久之计, 我们需要尽快对图片进行备份和迁移 防止新浪图床哪天不再提供服务了
我个人的做法是通过python
批量将图片下载到本地 然后进行图床更换, 核心代码如下:
1 | # -*- coding:utf-8 -*- |
本文为作者原创 转载时请注明出处 谢谢