- 新浪图床可以说是目前使用最广泛的图床之一,今日见群里各大博主纷纷吐槽,新浪图床疑似已经开始限制外链,网站内图片纷纷呈现403的惨状,于是这里给出一种PHP反防盗链的方法。
- 文章最后推荐了友人C老哥写的将新浪图床图片迁移至typecho的脚本,推荐想摆脱新浪图床的博主使用。
一. PHP代码
新建一个sina.php
文件放在根目录,然后将以下代码复制进去。
<?php
$url = $_GET["url"];
$dir = pathinfo($url);
$host = $dir['dirname'];
$refer = $host.'/';
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_REFERER, $refer);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//激活可修改页面,Activation can modify the page
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
$ext = strtolower(substr(strrchr($img,'.'),1,10));
$types = array(
'gif'=>'image/gif',
'jpeg'=>'image/jpeg',
'jpg'=>'image/jpeg',
'jpe'=>'image/jpeg',
'png'=>'image/png',
);
$type = $types[$ext] ? $types[$ext] : 'image/jpeg';
header("Content-type: ".$type);
echo $data;
二. 修改图片链接
由于文章基本都是存在于数据库中,这里提供的两种方法都是针对数据库的。
1. 执行SQL语句
UPDATE `typecho_contents` SET `text` = REPLACE(`text`, 'https://ws3.sinaimg.cn', 'https://你的域名/sina.php?url=https://ws3.sinaimg.cn') WHERE `text` LIKE '%https://ws3.sinaimg.cn%'
示例前缀是ws3,若有其他,自行修改即可。Typecho用户替换语句中你的域名
以及新浪的域名,其他建站系统请自行修改相应的表名及字段。
这里还可能不止一个表中存在新浪图床的图片,例如Links插件的
image
字段也有可能出现图片,具体情况,具体分析。
2. 编辑器替换
此方法简单实用,推荐使用这种方法。
首先将数据库导出,用编辑器打开.sql文件
,例如我这里使用Sublime Text 3,直接按图中替换即可。另外请多查找一下其他二级域名,避免漏网之鱼。

闲谈一下
不过再怎么说,这也只是一种折中的解决办法。目前新浪的做法已经相当于在警告我们了。新浪完全有权彻底限制外链,如果哪一天真的到来,恐怕又要哀声一片。。。所以我建议趁早撤离新浪图床,使用更专业的图床程序。
已备案推荐:
- 腾讯云COS
- 又拍云存储
- 阿里云OSS
- 七牛图床
国内的不用说,都快滴很。
未备案推荐:
- SM.MS图床
- OneDrive图床
- GitHub图床
- Coding Pages
- 路过图床
以上均为全国ping几次之后取的合适值,这里不推荐CodingPages和路过图床,一个经常崩,一个延迟高的离谱。。
使用专业的图床,既能省去担忧,又方便管理,我始终觉得,图片在自己手里才是最安心的!
在这里我再推荐一款免费高效图床管理工具:PicGo
新浪图床迁移至typecho助手
最后推荐一下友人C老哥刚写的一个PHP脚本。适用于想摆脱新浪图床的博主。
作用大概是将图片迁移至typecho的usr/upload下面的sina文件夹,并自动替换数据库中相应的地址。具体请看README。
目前免费方案建议使用PicGo+GitHub作为过渡,毕竟这样做原始数据不会丢失,以后如果需要迁移也会比较方便
快点给老子更!!!!!!!!@(滑稽)
楼主估计没怎么实际用过吧, 最慢的就是SM.MS, 看上去ping值很好, 但带宽明显不足, 导致图片无法加载. 其他任何一家都比这个好.
还是把图片放在自己的主机里面踏实
对的对的,至少自己备一份,不然丢了哪找去@(笑尿)
路过图床是认真嘛 ::quyin:hematemesis::
应该是认真的@(滑稽)
现在在用sm.ms这个图床,感觉挺好用。不过移动宽带貌似对这个图床的链接不太友好,加载很慢。
综合来讲SM.MS还是挺不错的,不过更推荐用国内的存储桶,腾讯的COS没备案也可以用,了解一下。还有感觉图片握在自己手里才是最舒服的#(脸红)
#(高兴)有个简单的方法,#(邪恶)只要在head里加入
<meta name="referrer" content="same-origin">
#(亲亲)OK,解决了...#(小眼睛)
(我从某大佬地方发现的一个方法(他会不会打我#(狂汗)#(狂汗)#(狂汗)???),感觉蛮实用的)
这个貌似可以哦,之前看到的加content="no-referrer"这种评论不了23333
@(滑稽)
超级良心的文章了,可惜我不用图床,哈哈!
哈哈,我用的七牛云的CDN,严格的说,也不能称之为图床了#(亲亲)
超赞的……::quyin:look::
嘿嘿::quyin:witty::
不备案可以用七牛、又拍之类的吗#(皱眉)
可以用腾讯的COS和阿里的OSS不过不备案只能用他们的域名,不能绑定自己的#(内伤)
问下博主的 vps 是哪家的@(太开心)
我用的阿里云的学生机@(吐舌)
阿里的好像不能用哈要用得用国外bucket,可以不备案
而七牛是选择国外bucket也要备案域名才可以使用
原来如此么,我只知道挺多平台会给一个测试域名,像是七牛的测试域名只能用30天之后必须绑定备案域名了#(不高兴)