歲月留聲

新浪微博相册图片限制外链 403 图床不显示 临时解决方法

早在 2019 年 5 月,新浪微博图床开启防盗链,很多使用新浪微博图床的站点都沦陷,绝大部分网站的图片无法显示,返回 403 错误等。配合 Chrome / Firefox 扩展插件,新浪微博图床使用确实很方便,并且速度不赖。

「新浪微博相册图片限制外链 403 图床不显示 临时解决方法:https://0xo.net/1718」

新浪微博相册图片限制外链 403 图床不显示 临时解决方法 - 第1张图片

新浪微博相册图片限制外链 403 图床不显示 怎么解决?

彻底方法:弃用新浪微博相册图床,自建图床或使用七牛、阿里云、付费图床等。

新浪微博相册图片限制外链 403 图床不显示 临时解决方法

修改 referrer:在 header 中新增:

「新浪微博相册图片限制外链 403 图床不显示 临时解决方法:https://0xo.net/1718」
<meta name="referrer" content="no-referrer" />

不推荐此方法,对整站有影响(站点统计、收录等)

目前暂时比较可行方法:给 img 标签添加 referrerpolicy="no-referrer" 属性:

<img src="https://ws3.sinaimg.cn/thumb150/xxoo.jpg" referrerpolicy="no-referrer">

推荐此方法,只修改文章内容 img 标签,其它不受影响。

「新浪微博相册图片限制外链 403 图床不显示 临时解决方法:https://0xo.net/1718」

解决办法原理,以下面网址做说明:

<img src="http://wx3.sinaimg.cn/mw690/005Cikyoly1fy3yd869pfg30hs09yhe4.gif" />

这个图片在本站域名下用 img 标签不显示,修改一下就能正常显示:

<img src="http://wx3.sinaimg.cn/large/005Cikyoly1fy3yd869pfg30hs09yhe4.gif" referrerpolicy="no-referrer" />

实例 img 标签下有两处改动,将 mw690 替换为 large,img 标签属性添加 referrerpolicy="no-referrer" 。实际操作只需将原图片地址中 mw690 替换为 large,然后添加属性 referrerpolicy="no-referrer" 即可。

「新浪微博相册图片限制外链 403 图床不显示 临时解决方法:https://0xo.net/1718」

示例结构代码,实际应用需要根据网站作相应修改:

<div id="postlist">
<table></table>
<table></table>
<div>
<table>
<tbody>
<tr>
<td> 第一个 td</td>
<td>
<div></div>
<div class="pct">
<img src="https://user-images.githubusercontent.com/23384966/57830772-c0f4de00-77e5-11e9-8179-3495a36c25c4.gif">
<img src="http://www.gifdtm.com/data/attachment/forum/201806/13/211440j2fgmqgtg7ffy75p.jpg"/>
<p> 选择这个元素下的所有 img 标签</p>
<img src="http://wx3.sinaimg.cn/large/005Cikyoly1fy3yd869pfg30hs09yhe4.gif" />
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div></div>
<table></table>
</div>

下面是修改代码的步骤,参考:

<script src="jquery.js"></script>
<script>
//postlist 下面第一个 div 的 table 下面的 img 标签添加 referrerpolicy="no-referrer"属性

var imgs = $("#postlist .pct img");//选择 img 标签
imgs.attr("referrerpolicy","no-referrer");
imgs.attr("alt","alt 文字");

//console.log(typeof imgs.attr("src"));//返回的是一个 img 的 src
//console.log(typeof imgs);//返回 imgs 类型,object 类型

//声明空数组,等待接受元素
var arr = new Array();

//遍历 imgs 对象,以便取到 imgs 中的所有 img 标签
$.each(imgs,function(i,value){
//console.log(src + " " + value.src); //测试输出索引和值
str = value.src.replace(/\/mw690\//ig, "/large/"); //正则表达式替换字符串
//console.log(str); //测试输出字符串
arr.push(str); //将替换后字符串添加到 arr 数组
//console.log(arr);
$(this).attr("src",arr[i]); //将对应的当前第 i 个 img 标签的 src 属性设置为替换后字符串
});

</script>

原文:新浪微博相册图片外链限制,图床不显示解决方法总结!

退出移动版