MENU

解决新浪图床图片开始启用防盗链,即图片403的方法

April 24, 2019 • 资源教程

  • 新浪图床可以说是目前使用最广泛的图床之一,今日见群里各大博主纷纷吐槽,新浪图床疑似已经开始限制外链,网站内图片纷纷呈现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,直接按图中替换即可。另外请多查找一下其他二级域名,避免漏网之鱼。

什么?貌似文章刚发。。。。就恢复了呢。。那我岂不是白写了(又发现ww3后缀的受害者了,没白写!)

闲谈一下

不过再怎么说,这也只是一种折中的解决办法。目前新浪的做法已经相当于在警告我们了。新浪完全有权彻底限制外链,如果哪一天真的到来,恐怕又要哀声一片。。。所以我建议趁早撤离新浪图床,使用更专业的图床程序。

已备案推荐:

  • 腾讯云COS
  • 又拍云存储
  • 阿里云OSS
  • 七牛图床

国内的不用说,都快滴很。衰仔,请跟上哥的速度

未备案推荐:

  • SM.MS图床SM.MS.png
  • OneDrive图床OneDrive.png
  • GitHub图床GitHubPages.png
  • Coding PagesCodingPages.png
  • 路过图床路过图床.png
    以上均为全国ping几次之后取的合适值,这里不推荐CodingPages和路过图床,一个经常崩,一个延迟高的离谱。。

使用专业的图床,既能省去担忧,又方便管理,我始终觉得,图片在自己手里才是最安心的!
在这里我再推荐一款免费高效图床管理工具:PicGo

新浪图床迁移至typecho助手

最后推荐一下友人C老哥刚写的一个PHP脚本。适用于想摆脱新浪图床的博主。

作用大概是将图片迁移至typecho的usr/upload下面的sina文件夹,并自动替换数据库中相应的地址。具体请看README

项目地址:https://github.com/ihewro/PullSinaimgtoTypecho

Leave a Comment

45 Comments
  1. 王奥 王奥     MacOS /    Google Chrome

    目前免费方案建议使用PicGo+GitHub作为过渡,毕竟这样做原始数据不会丢失,以后如果需要迁移也会比较方便

  2. AdviseRed AdviseRed     Windows 10 /    Google Chrome

    快点给老子更!!!!!!!!@(滑稽)

  3. 米米 米米     MacOS /    Google Chrome

    楼主估计没怎么实际用过吧, 最慢的就是SM.MS, 看上去ping值很好, 但带宽明显不足, 导致图片无法加载. 其他任何一家都比这个好.

  4. 响石潭 响石潭     Windows 10 /    Google Chrome

    还是把图片放在自己的主机里面踏实

    1. 左岸 左岸     MacOS /    Google Chrome

      @响石潭对的对的,至少自己备一份,不然丢了哪找去@(笑尿)

  5. 刘大喵 刘大喵     Windows 10 /    FireFox

    路过图床是认真嘛 ::quyin:hematemesis::

    1. 左岸 左岸     MacOS /    Google Chrome

      @刘大喵应该是认真的@(滑稽)

  6. 发泡鲸 发泡鲸     Windows 7 /    Google Chrome

    现在在用sm.ms这个图床,感觉挺好用。不过移动宽带貌似对这个图床的链接不太友好,加载很慢。

    1. 左岸 左岸     Windows 10 /    Google Chrome

      @发泡鲸综合来讲SM.MS还是挺不错的,不过更推荐用国内的存储桶,腾讯的COS没备案也可以用,了解一下。
      还有感觉图片握在自己手里才是最舒服的#(脸红)

  7. 东方幻梦 东方幻梦     Windows 7 /    Google Chrome

    #(高兴)有个简单的方法,#(邪恶)只要在head里加入

    <meta name="referrer" content="same-origin">

    #(亲亲)OK,解决了...#(小眼睛)
    (我从某大佬地方发现的一个方法(他会不会打我#(狂汗)#(狂汗)#(狂汗)???),感觉蛮实用的)

    1. 左岸 左岸     Windows 10 /    Google Chrome

      @东方幻梦这个貌似可以哦,之前看到的加content="no-referrer"这种评论不了23333

    2. 东方幻梦 东方幻梦     Windows 7 /    Google Chrome

      @左岸@(滑稽)

  8. 林三 林三     Windows 7 /    Google Chrome

    超级良心的文章了,可惜我不用图床,哈哈!

    1. 左岸 左岸     MacOS /    Google Chrome

      @林三哈哈,我用的七牛云的CDN,严格的说,也不能称之为图床了#(亲亲)

  9. 梦魂 梦魂     Android /    Google Chrome

    超赞的……::quyin:look::

    1. 左岸 左岸     MacOS /    Google Chrome

      @梦魂嘿嘿::quyin:witty::

  10. 三尺雪 三尺雪     Windows 10 /    Google Chrome

    不备案可以用七牛、又拍之类的吗#(皱眉)

    1. 左岸 左岸     Android Pie /    Google Chrome

      @三尺雪可以用腾讯的COS和阿里的OSS不过不备案只能用他们的域名,不能绑定自己的#(内伤)

    2. 三尺雪 三尺雪     Windows 10 /    Google Chrome

      @左岸问下博主的 vps 是哪家的@(太开心)

    3. 左岸 左岸     Android Pie /    Google Chrome

      @三尺雪我用的阿里云的学生机@(吐舌)

    4. Oasis Lee Oasis Lee     Android Pie /    QQ浏览器

      @左岸阿里的好像不能用哈
      要用得用国外bucket,可以不备案
      而七牛是选择国外bucket也要备案域名才可以使用

    5. 左岸 左岸     MacOS /    Google Chrome

      @Oasis Lee原来如此么,我只知道挺多平台会给一个测试域名,像是七牛的测试域名只能用30天之后必须绑定备案域名了#(不高兴)