原创|转载请注明来源

  • 本文将提出微博图床临时显示的办法,但很显然这个办法只是临时的肯定不能长时间使用。
  • 我还会给出几种目前迁移图片的解决办法。目前来看,放弃微博图床是个正确的选择。

目前微博图床全面限制,连之前一直幸存的ws3,ws4都凉了

一天中午闲来无事跑到社团看看博客,结果一打开……尼玛??
怎么什么都没有了??我的图呢??随即意识到,微博图床开始出手了。
打开F12刷新页面,果然所有上传在微博上的图片全部403,但是图片都还可以单独访问!也就是说图片都是可以下载的,为了先保住数据,赶紧写了一个爬虫把所有文章的图片爬下来
但是中午时间有限,我仅仅把图片保存后就回教室了。

PS:当时人都慌了,现在找的是百度快照的图,和当时我打开的情况差不多
百度快照

扯了这么多,下面正文!
免费的永远是最贵的。我从开始写博客也快一年了,一直用的微博图床,免费和无限量是它最大的优点。但你的图片永远掌握在别人的手上,它们的安全性无法保证,就像这次微博的403限制就已经警告我们。只有自己的才是安全的。


这次微博出手后也没有太多人敢再用微博图床了,趁还没有完全限制先把图片备份到本地

几个临时显示图片的解决方案

1.PHP代码防403

该方法来自左岸博客
思路比较简单,通过php文件传入图片链接,处理后输出就可以正常显示了。
操作前请先备份数据库,该操作涉及到数据库修改

使用方法(来自左岸博客)

一. 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;

二.修改图片链接
执行 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 用户替换语句中你的域名以及新浪的域名,其他建站系统请自行修改相应的表名及字段。

嫌麻烦的可以用左岸博客博主给我留言的链接直接用来替换

 https://www.zrahh.com/sina.php?url= 

2.修改<img>标签

来自V2EX
这个方法对Typecho不太友好,Typecho使用Markdown编写文章,数据库也是直接储存MD代码,MD解析是在前台的,所以img标签是不太好修改的。WordPress可以尝试一下

img 中添加参数<img src="" referrerPolicy="no-referrer">

3.添加head头

不可用
来自V2EX
现在测试了好像已经没用了
而且会导致无法评论
在head中加上<meta name="referrer" content="never" />


终极解决方案

终极解决方案?其实很简单——放弃微博图床
上面说到的方法其实都是各种临时补救的方法,让游客在这段时间里还能正常浏览。
但是这能坚持多久呢?所以把图片转移到一个更为安全、主动权更多的地方才是正道!

保存图片

对于备份图片不多讲,我们的目的其实不是备份,而是将图片转移到一个更好的地方

  • 自写爬虫
    每个人博客主题的标签和特征是不一样的,使用正则表达式的时候也是不一样的式子。所以这个需要有一定开发能力的人去折腾。
  • 手动下载
    这是个笨办法,适合于时间多文章少,没有开发能力的博主。

转移图片

这是针对打算弃用微博图床的同学的方法,如果还想用微博图床苟活这里可以不用看。
我会介绍一个新鲜出炉的Typecho的图片转移助手和图片存放的解决方案。

  • 友人C的图片转移助手

在微博图床挂了以后,群主第一时间写出了把博客所有图片都转为本地服务器的php文件,所有链接自动替换。
图片会自动迁移到typecho的 usr/uploads/sina目录下
还是要备份一下数据库的,万一替换完又后悔就麻烦了
这个不详细介绍,使用方法和注意点在Github项目里写得非常清楚了
文章链接:https://www.ihewro.com/archives/935/
项目地址:https://github.com/ihewro/PullSinaimgtoTypecho
我的忘记截图了,拿一下群主的图
结果截图(来自友人C)


如果放在自己服务器的访问速度还可以的话也可以放在自己服务器上,如果怕带宽不够可以继续往下看!

#### 免费图床介绍

此方法针对不想花钱的博主,但是经历过了微博图床这次限制,我对免费图床已经不太敢用了。

这里介绍几个常用的图床

  • 路过图床 (速度不快,API和插件支持较好)
  • SM.MS (速度还可以,有API支持)
  • Github图床 (看到有人用,放小图片应该还不错)

图床测速:

  • 路过图床(表现一般)
    306-luguo.png
  • SM.MS(表现良好)
    306-smms.png
  • Github图床(十分拖国内机子的后腿)
    306-github.jpg

总结:如果真的要用免费图床的话我只推荐sm.ms,然而SM.MS的表现也不太好,我之前用过,有时候很快有时候很慢。总之免费不可能非常好,能保证数据安全性就不错了。

#### 云存储介绍

国内几大IDC都有对象存储的服务,像阿里云有一定的免费额度,我博客早期的图片还放在上面,还产生一定的流量也没扣过钱。

  • 阿里云OSS
    这个我使用过的,但是最近在文档里的价格说明并没有看到免费额度的相关说明

以我目前的访问量来看,正常情况下一个月不超过一块钱,不过对于访问量大的人来说还是要花点钱的。阿里云是以流量计费的。
306-aliyun.png

  • 腾讯云
    腾讯云我没用过,因为早期先入坑阿里云,各种限制基本上转不了服务商。

腾讯云是有免费额度的,但是这个免费额度只有六个月时效,说的简单点只是体验一下而已,真的要用还是要付费,
腾讯云和阿里云的价格差不多,但是腾讯云是以请求次数计费的,这个自己把握。
306-tencent.jpg

  • 又拍云
    又拍云的收费策略是在CDN基础上的,我在考虑要不要用又拍云,如果使用,以后会写一个体验文章的。

306-upyun1.jpg
306-upyun2.jpg

  • 七牛云
    七牛云在这几大服务商里其实是非常不错的一家,七牛一开始就是专业做云存储服务的。

七牛云是有免费额度的而且是永久期限
306-qiniu.jpg

全文总结

这次微博图床的危机不妨为一个好事,我一直有转移图片或者备份的想法,却迟迟懒得开始,这次微博直接让我快速完成了这个任务。
聚合图床在微博图床挂了以后也宣布放弃微博图床。
尽管很多人觉得微博图床没事,我依旧推荐本地服务器存储或者云存储,这样的安全性是相对更高的。

参考文章

最后修改:2019 年 11 月 30 日 11 : 41 PM