新浪微博图床失效403的解决办法

近日,新浪图床开启了防盗链,不少依托于新浪图床的网站图片都无法访问了,看到了网上很多的方法,结合小东自身经验,总结一下新浪图床 403(失效)的解决办法。

新浪图床是一个非常好的图床,虽然新浪到处被喷,但是在图片外链上一直没采取防盗链措施,近日才开启了防盗链措施。众所周知,图片的加载是需要流量的,但如果服务器的带宽不够大,那么网站的加载速度明显降低,用户的体验就不好,所以不少的小网站站长,会将图片以外链的方式存到新浪图床中。

新浪图床开启防盗链

0x01 什么是防盗链

新浪的防盗链是Referer 防盗链,这种类型的防盗链方式,非常常见也很简单

RefererHTTP协议里有特殊的用途,当浏览器向服务器发送请求时,一般会带上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 未开启防盗链的域名前缀

大家都知道新浪图片的域名前缀很多,其中有的域名前缀并没有和谐,所以可尝试替换域名前缀

ww1ww2ww3tva1wx4的域名前缀并未开启防盗链

如果各位还有什么未开启防盗链的域名,请评论或留言告知


2.4 Nginx反向代理

反向代理就是一种,代理请求的方式,相当于是,自己的服务器去访问图片,然后将图片转发给用户

如果您使用的是宝塔服务器面板,那么可以如下配置:

Nginx反向代理

同时记得开启缓存,时间越大越好(避免频繁请求)


2.5 更换图床

这里小东就不推荐什么了,小东自建的天云图床其实很不错,平时一直在维护中,确保资源不出问题。

天云图床

网址:http://img.top15.cn


2.6 图片本地化

图片存放在别人的服务器上,总觉得不踏实,那么就可以将之前存放在新浪服务器上的图片,下载到自己的服务器上。

如果觉得本地化后网站访问速度慢,那么可以购买 CDN 服务,同时网上还有一些免费的 CDN服务,比如 360安全宝百度的免费 CDN,站长朋友可以尝试使用,不懂的可以留言评论。

如果是emlog博客 CMS 的站长,可以下载安装小东写的“ 图片本地化插件 ”,能够快速下载远程图片到服务器,并且替换文章中的远程图片,一键操作。

下载地址:https://blog.dyboy.cn/develop/88.html


0x03 其他解决方法

小东博客之前部分文章是使用的新浪图床的图片外链,我直接选择更换图床,写了一个 python 脚本,直接将新浪的图片下载下来,然后上传到另一个图床,并且替换文章内容中的图片链接,也是很方便的,有相关技术的朋友可以弄一弄。如果需要此类帮助的,可以付费联系小东。

脚本批量

其他的方法,应该是还有一些,如果各位还有什么比较好的方式,欢迎留言,互相交流图床失效解决办法的相关技术

发表评论 / Comment

用心评论~

金玉良言 / Appraise
ru-chanLV 1
2019-06-23 20:57
香川県ルーちゃん餃子のフジフーヅはバイトにパワハラの末指切断の大けがを負わせた犯罪企業
DYBOY站长已认证
2019-05-05 20:49
补充:https://image.baidu.com/search/down?tn=download&url=图片URL
这是从思源博客看到的解决办法,这个和php读取远程图片到本地相同的原理
知识共享网LV 1
2019-05-05 18:00
谢谢东哥
头像
DYBOY站长已认证
2019-05-07 23:54
@知识共享网:No thanks~

Warning: Cannot modify header information - headers already sent by (output started at /www/wwwroot/blog.dyboy.cn/content/templates/dyblog/footer.php:56) in /www/wwwroot/blog.dyboy.cn/include/lib/view.php on line 23