新浪微博图床失效403的解决办法总结
近日,新浪图床开启了防盗链,不少依托于新浪图床的网站图片都无法访问了,看到了网上很多的方法,结合小东自身经验,总结一下新浪图床
403
(失效)的解决办法。
新浪图床是一个非常好的图床,虽然新浪到处被喷,但是在图片外链上一直没采取防盗链措施,近日才开启了防盗链措施。众所周知,图片的加载是需要流量的,但如果服务器的带宽不够大,那么网站的加载速度明显降低,用户的体验就不好,所以不少的小网站站长,会将图片以外链的方式存到新浪图床中。
0x01 什么是防盗链
新浪的防盗链是Referer 防盗链,这种类型的防盗链方式,非常常见也很简单
Referer
在HTTP
协议里有特殊的用途,当浏览器向服务器发送请求时,一般会带上Referer
头,告知服务器该请求是从哪个页面链接过来的。Referer
经常被用于页面访问统计、图片防盗链等。
当一个HTTP
请求发送到CDN
服务器后,CDN
服务器检查客户URL
中所携带的Referer
字段的信息,禁止或者允许符合特定规则(支持正则匹配)
常见CDN
服务就会提供此类型的防盗链功能,典型特征是:不能通过其他网站访问,但是直接访问图片资源的URL
是可以下载、查看。
- *
0x02 解决办法
因为很多站长目前的图片都存在新浪的服务器中,结合
Referer
防盗链的特征,小东搜集总结有如下的解决办法。
2.1 META标签
在网站的<head>
标签内添加一行声明referrer
的规则
<meta name="referrer" content="same-origin">
<meta name="referrer" content="no-referrer" />
这样就可以继续使用新浪图床,但是可能会有一些网站基于referrer
规则的功能会异常
- *
2.2 IMG标签
既然是图片资源,那么在
HTML5
中的img
标签有一个referrerpolicy
的属性,可以显示声明referrer
规则,所以在图片标签中加入一个属性即可
<img src="https://wx4.sinaimg.cn/large/006WvzUFly4g2fbc9ojcbj30j60auq3j.jpg" referrerpolicy="no-referrer">
- *
2.3 未开启防盗链的域名前缀
大家都知道新浪图片的域名前缀很多,其中有的域名前缀并没有和谐,所以可尝试替换域名前缀
ww1
,ww2
,ww3
,tva1
,wx4
的域名前缀并未开启防盗链
如果各位还有什么未开启防盗链的域名,请评论或留言告知
- *
2.4 Nginx反向代理
反向代理就是一种,代理请求的方式,相当于是,自己的服务器去访问图片,然后将图片转发给用户
如果您使用的是宝塔服务器面板,那么可以如下配置:
同时记得开启缓存,时间越大越好(避免频繁请求)
- *
2.5 更换图床
这里小东就不推荐什么了,小东自建的天云图床其实很不错,平时一直在维护中,确保资源不出问题。
- *
2.6 图片本地化
图片存放在别人的服务器上,总觉得不踏实,那么就可以将之前存放在新浪服务器上的图片,下载到自己的服务器上。
如果觉得本地化后网站访问速度慢,那么可以购买 CDN
服务,同时网上还有一些免费的 CDN
服务,比如 360
、安全宝
、百度
的免费 CDN
,站长朋友可以尝试使用,不懂的可以留言评论。
如果是emlog
博客 CMS
的站长,可以下载安装小东写的" 图片本地化插件 ",能够快速下载远程图片到服务器,并且替换文章中的远程图片,一键操作。
下载地址:https://blog.dyboy.cn/develop/88.html
- *
0x03 其他解决方法
小东博客之前部分文章是使用的新浪图床的图片外链,我直接选择更换图床,写了一个 python
脚本,直接将新浪的图片下载下来,然后上传到另一个图床,并且替换文章内容中的图片链接,也是很方便的,有相关技术的朋友可以弄一弄。如果需要此类帮助的,可以付费联系小东。
其他的方法,应该是还有一些,如果各位还有什么比较好的方式,欢迎留言,互相交流图床失效解决办法的相关技术
> 此篇文章【新浪微博图床失效403的解决办法总结】,均来自于网络,贫小子仅作分享