31℃
精品资源分享

新浪微博图库图床恢复大法:利用mysql命令 批量修改图库外链图片url链接

免费的是最贵的  记住这句话  

新浪图库挂了半年了  但是还有补救的方法  我也是最近才悟出的  方法不变  懒得编写  所以随意找了一篇 写的很详细  就搬过来

以下原文:

 

使用数据库SQL批量改写网址临时解决新浪微博图床外链图片不显示的问题

五一前几天,国内最大的免费图床——新浪微博终于还是启用了防盗链机制,一时间那些大量引用其做为外链图片的站点变得“惨白”一片(使用浏览器打开网页敲 F12,所有上传在微博上的图片全部403),这是不让人好好过节的节奏…还是想让人劳动节好好劳动劳动…

 

↑↑↑ 原本新浪微博外链图片所在位置一片空白 ↑↑↑

那么,这个问题该如何解决呢?首先,据我所知,这个防盗链机制是有一个白名单的,白名单上的网址来源是不会被限制的,不然你想那些引用新浪微博图片的大型站点或应用不在少数,难不成要让它们全挂掉?所以,如果你的站点是正规的,而且有了一定的规模,应该不会受影响;如果万一受影响了,联系下新浪,应该还是乐意帮你解决的。

至于小站点们也不要慌,首先微博相册上的图片是没有被删掉也不可能没经过你的同意就删掉的,只是不让外链了而已。所以根本的解决方案当然是放弃新浪微博图床,或者说直接放弃图床网站(有人说可以将图片转移到其他的图床网站上,可是你想连新浪微博这么大体量的站点说拜就拜了,其他站点又有什么保障呢?),将引用的图片转移回自己的服务器上保存!

可是那成千上万的图片要转移回目前容量紧张兮兮的服务器上,想想都够呛,于是酷睿暂时没有采取这个方案。那有什么临时的解决方案吗?酷睿研究了一下,发现新浪微博外链图片的网址域名前缀有多种,其中 wx1/2/3/4ww1/2/3/4 与 ws1/2/3/4 为前缀的节点目前都被限制了,而 tva1/2/3/4 为前缀的节点目前仍可顺利打开(这个前缀知道的人貌似不多~)。那么只要把网址前缀中的 wx、ww 与 ws 都改成 tva 应该就可以暂时继续使用微博图床的外链图片了

那么具体该如何操作呢?如果站点上使用的图片链接不多,那一条条手工改一下是没有什么问题,可如果有成千上万条链接需要修改,手工操作就不好玩了,而且还容易遗漏…那有什么办法来批量完成该操作吗?有的!这里我们使用数据库技术,写几条 SQL 语句即可完成所有操作!参考步骤如下——

1. 关闭站点,备份数据库。这点非常重要!备份数据库是防止我们误操作时吃的“后悔药”,而暂时关闭站点是为了防止修改数据库期间仍有用户在访问,这就有可能产生新的数据,造成数据遗漏。以后只要是手工执行数据库操作时,最好都要记得这一步!

2. 找出需要修改的链接所在的数据库表格及列。如酷睿所要修改的是 Discuz! 搭建的论坛中的帖子所包含的链接,其位于 pre_forum_post 表中的 message 列;而使用 WordPress 搭建的博客中的文章所包含的链接则位于 wp_posts 表中的 post_content 列中。

3. 执行 SQL 语句批量修改链接。格式如下:

UPDATE 表名 SET 列名 = REPLACE(列名, 'wx1.sinaimg.cn', 'tva1.sinaimg.cn');

例如:

UPDATE pre_forum_post SET message = REPLACE(message, 'wx1.sinaimg.cn', 'tva1.sinaimg.cn');
UPDATE pre_forum_post SET message = REPLACE(message, 'wx2.sinaimg.cn', 'tva2.sinaimg.cn');
UPDATE pre_forum_post SET message = REPLACE(message, 'wx3.sinaimg.cn', 'tva3.sinaimg.cn');
UPDATE pre_forum_post SET message = REPLACE(message, 'wx4.sinaimg.cn', 'tva4.sinaimg.cn');
UPDATE pre_forum_post SET message = REPLACE(message, 'ww1.sinaimg.cn', 'tva1.sinaimg.cn');
UPDATE pre_forum_post SET message = REPLACE(message, 'ww2.sinaimg.cn', 'tva2.sinaimg.cn');
UPDATE pre_forum_post SET message = REPLACE(message, 'ww3.sinaimg.cn', 'tva3.sinaimg.cn');
UPDATE pre_forum_post SET message = REPLACE(message, 'ww4.sinaimg.cn', 'tva4.sinaimg.cn');
UPDATE pre_forum_post SET message = REPLACE(message, 'ws1.sinaimg.cn', 'tva1.sinaimg.cn');
UPDATE pre_forum_post SET message = REPLACE(message, 'ws2.sinaimg.cn', 'tva2.sinaimg.cn');
UPDATE pre_forum_post SET message = REPLACE(message, 'ws3.sinaimg.cn', 'tva3.sinaimg.cn');
UPDATE pre_forum_post SET message = REPLACE(message, 'ws4.sinaimg.cn', 'tva4.sinaimg.cn');

4. SQL 执行完成后,使用网站管理员账号查看下图片是否已恢复正常显示,OK 的话就可以恢复站点访问了。如果还是无法显示,查看下你所引用的图片链接是不是使用了 https:// ,是的话再把它批量修改为 http:// 应该就没问题了,如:

UPDATE pre_forum_post SET message = REPLACE(message, 'https://tva1.sinaimg.cn', 'http://tva1.sinaimg.cn');

当然,本文分享的只是临时的应急方案,新浪微博随时可能把最后这些节点也关了不跟你玩了,所以还是尽快想办法把图片保存到自己的服务器上吧,这才是最好的容灾方式!

 

摘自  .kurui.me/sql-p-weibo.html

 

 

 

然而 还有一个招没测试

 

对于不少搭建有自己博客的用户来说,最近可能发生了一些事情让他们有些烦恼。那就是新浪微博图床在近期已经逐渐开启了防盗链,导致不少曾经依赖新浪微博图床的博客图片均无法显示。

此前,对于大多数个人博客维护者而言,免费的图床即使节省成本,也能够提升页面访问速度的最佳手段,而新浪微博图床则成了首选。

新浪微博由于本身体量大,其图床免费无限容量,只需要有一个微博账号就可使用。同时具备全网 CDN 加速,支持 HTTPS,无论是国内还是国外网络访问,速度都很不错,而且新浪如此企业,不会像其他个人或者团队经营的免费图床一样随时可能会关掉。

基于这些优势,不少人会优先选择新浪微博图床作为网站提供图片服务。毕竟直接挂CDN或者自建图床的话,也是一个持久的付费维护。甚至一旦被CC攻击,更是造成费用暴增。

而最近开始,奇客君发现自己网站内的新浪微博图片链接已经全部失效了,了解之后,才发现并非个例。

你会发现,在文章页插入的图片均无法正常显示,而单独访问图片链接却是可以看到图片的。显然,新浪微博图床已经开启了防盗链。

为了让图片能够继续访问,奇客派提供一个简单的方法,阻止浏览器发送 Referer 头进而暂时绕过防盗链检测。

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

即在网站头部代码中添加一行上图标注的代码,保存之后就能够正常访问微博图床的图片了。但肯定不是长久之计,建议尽快迁移图片。

微博图床开启防盗链,个人博客对于新浪图床的依赖时代基本要告别了,虽然有其他免费图床可以使用,但稳定性和可持续性上显然无法与大企业维护的图床相比。

为了网站内容稳定考虑,还是建议大家逐渐把图片迁移到其他云存储空间,或者直接在本地开启CDN静态加速。

免费图床时代基本宣告结束。

不过你觉得博客搭建只是玩玩而已,并不必要持续建设下去,处于成本考虑依然可以尝试其他免费图床。

赞(0)
未经允许不得转载:三十一度 » 新浪微博图库图床恢复大法:利用mysql命令 批量修改图库外链图片url链接

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址