新浪图床可以说是目前使用最广泛的图床之一,今日见群里各大博主纷纷吐槽,新浪图床疑似已经开始限制外链,网站内图片纷纷呈现 403 的惨状,于是这里给出一种 php 反防盗链的方法。
一. php 代码
新建一个 sina.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,若有其他,自行修改即可。 用户替换语句中你的域名
以及新浪的域名,其他建站系统请自行修改相应的表名及字段。
这里还可能不止一个表中存在新浪图床的图片,例如 links 插件的
image
字段也有可能出现图片,具体情况,具体分析。
2. 编辑器替换
此方法简单实用,推荐使用这种方法。
首先将数据库导出,用编辑器打开.sql文件
,例如我这里使用 sublime text 3,直接按图中替换即可。另外请多查找一下其他二级域名,避免漏网之鱼。
什么?貌似文章刚发。。。。就恢复了呢。。那我岂不是白写了
(又发现 ww3 后缀的受害者了,没白写!)
闲谈一下
不过再怎么说,这也只是一种折中的解决办法。目前新浪的做法已经相当于在警告我们了。新浪完全有权彻底限制外链,如果哪一天真的到来,恐怕又要哀声一片。。。所以我建议趁早撤离新浪图床,使用更专业的图床程序。
历史上的今天:
- 2024: 微语录精选:这股市年纪轻轻的怎么一股跌味
- 2024: 网站推荐:方糖全栈路线图(帮助你完成「从螺丝钉到一人企业」的蜕变)
- 2024:
- 2024: epic 喜加一:《瘟疫传说:无罪》免费领,原价 158 元 / 支持中文
- 2024: 网站推荐:国家语言资源服务平台