【亲测有效】wordpress主题文件function.php增加几行代码,完美解决新浪微博图床防盗链

新浪微博图床这几年说实话还是够良心的,让许多大小站长都白嫖了好长时间,图片CDN,全世界都是秒开,速度很理想。小白建站从2014年开始就在使用它了。现在好几个博客和一个论坛全是放在上面的。不过,做网站的基本上都知道了。微博图床在2019年4月24日突然就启用了防盗链机制。网站界一片哀鸿。图片全挂了。这真是一个悲惨的故事。

不过,技术大牛很快就提出了解决方法。
【亲测有效】wordpress主题文件function.php增加几行代码,完美解决新浪微博图床防盗链_图片 No.1

解决微博图床防盗链无非有下面几种:

1、在<head></head>标签里添加:

<meta name="referrer" content="no-referrer" />

这段代码小白之前一直在用,因为简单易上手,直接在wordpress的主题文件找到header.php,在<head></head>中间加入上述代码,全站的图片立马恢复本来面目。但是,缺点很明显:从你网站引导到其他网站的流量不显示来路,对于挂广告的站点来说,风险极大,容易被联盟封号。而且不利于分析网站的营销能力。所以,我果断放弃了。

2.有人说用nginx的反代。但我不懂这些高深的技术,也没有面向新手的教程。直接放弃。

3、修改微博图床生成的图片的服务器地址。比如,新浪几个常用的:wx1.sinaimg.cn,wx2.sinaimg.com,ws2.sinaimg.cn等,直接修改为:tva1.sinaimg.cn。这个方法现在是10月份了,还可以正常使用。但不知道能挺多久。

4、这是小白我自己摸索出来的一段代码。其实是第1种方法的变种。将”no-referrer”标签直接添加到文章中微博图片的img标签里。具体代码如下:

/** Auto-Generate referrerpolicy="no-referrer" to images **/
/** 解决新浪微博图床防盗链**/
/** by www.zixuekong.com**/
function image_referrerpolicy_tag($content){
    global $post;preg_match_all('/<img(.*?)sinaimg(.*?)\/>/', $content, $images);
    if(!is_null($images)) {foreach($images[1] as $index => $value)
    {
        $new_img = str_replace('<img', '<img referrerpolicy="no-referrer"', $images[0][$index]);
        $content = str_replace($images[0][$index], $new_img, $content);}}
    return $content;
}
add_filter('the_content', 'image_referrerpolicy_tag', 99999);

这段代码的作用是:正则查找文章中有出现*.sinaimg.cn的图片,将【img】替换成【img referrerpolicy=”no-referrer”】。而如果不是微博图床的图片,则不需要替换。这样就堪称完美了。

文章前台查看源代码,会出现如下:
【亲测有效】wordpress主题文件function.php增加几行代码,完美解决新浪微博图床防盗链_图片 No.2

这样做还是有一定的缺陷:那就是部分老旧的浏览器,不支持这个referrerpolicy标签。不过受影响应该不是不大。算是我认为目前最完美的方法了。至于为什么不换其他图床,一方面是要钱,一方面是微博图床的打开速度确实给力!

最后还是要提醒大家:如果不差钱,还是自建图片存储空间比较好。如果你网站流量够大,这笔费用还是不小的。因为,说不准微博图床会彻底开启防盗链,这些小方法到时根本没卵用。

未经允许不得转载:自学控 - 自己建站也轻松 » 【亲测有效】wordpress主题文件function.php增加几行代码,完美解决新浪微博图床防盗链

分享到: 更多 (0)
avatar
自己建站,一点一滴积累经验。

自学控[zixuekong.com]

关于本站
切换注册

登录

忘记密码 ?

切换登录

注册