关于新浪微博开始限制外链,以及聚合图床的本地化部署

2019-04-11 23:05:49 +08:00
 zkdfbb

最近这几天看到 V 站上有不少讨论说新浪微博开始限制外链了,感觉到处蹭免费图床的日子终究不太安心,250 天前做了一个聚合图床专门用来未雨绸缪解决这种问题的,当时还在 V 站上发了帖子

https://www.v2ex.com/t/477060#reply85

当时想解决的一个是一次上传,多次分发,然后提供一个跳转的链接来重定向,比如像下面这张图片:

https://www.superbed.cn/info/5caea03b3a213b041703f55a

对应一个跳转的链接:

https://pic.superbed.cn/item/5caea03b3a213b041703f55a

使用图片的时候直接用跳转链接就可以了,后台会检测上传到的三个图床如 微博,阿里,搜狐的链接的有效性,比如这个时候微博开始限制链接了,比如你的网站是 https://xxx.com, 后台会使用 referer: https://xxx.com 来检测,微博有效则直接重定向到微博的地址,如果检测的时候返回 403 了,则轮换到下一个。如果有一天这三个都失效了,后台会自动再上传,而你引用的地方完全不需要更新,对页面引用是透明的。

我自己的几个网站一直在用,很方便,终于可以统一管理所有的图片了,而且也不用担心存储空间什么的,什么图片都往上仍就好了。

当然还是有很多人担心我这个说不定哪天就倒闭了,第一是不敢直接用跳转链接,只把它当一个上传的图床,使用的还是微博或者阿里的链接,比较大厂会比较安心一点,即便我这个站不在了至少图片是没有问题的,当然这么用也是 OK 的,虽然我没有这个担心~~

既然有很多人担心,于是我花时间搞了一个 docker 镜像出来,用于部署。目前源码应该是不打算直接开源了,毕竟写代码都是有成本的,开源与否都是个人选择,打算长期维护的东西需要精力,各位应该也都理解,请勿喷,现在直接说一下怎么安装。

首先安装一下 docker 和 docker-compose,这个不会安装的直接在网上找一下好了。

然后写一个 docker-compose.yml

version: '3.3'
services:
  mongo:
    image: mongo
    volumes:
      - mongo_db:/data/db:rw
    restart: always
    privileged: true

  redis:
    image: redis
    volumes:
      - redis_db:/data:rw
    restart: always
    privileged: true

  rabbitmq:
    image: rabbitmq:management
    restart: always
    privileged: true

  superbed:
    depends_on:
      - mongo
      - redis
      - rabbitmq
    image: zkdfbb/superbed
    ports:
      - "8000:8000"
    volumes:
      - ./config.sh:/code/config.sh
      - ./images:/code/static/images
    restart: on-failure
    privileged: true

volumes:
  mongo_db:
  redis_db:

再提供一个配置文件 config.sh

export SUPERBED_TOKEN=
export SUPERBED_TONGJI=
export ADDRESS="http://192.168.1.1:8000"
export ENDPOINTS=alicdn,sohu,sogou
export ADMIN_USER=admin
export ADMIN_PWD=123456
export ADMIN_EMAIL=

export MONGO_HOST=mongo
export MQ_HOST=rabbitmq
export REDIS_HOST=redis
export EMAIL_SENDER=
export EMAIL_SMTP=
export EMAIL_USER=
export EMAIL_PWD=
export Z4A_USER=
export Z4A_PWD=

其中配置文件的说明如下:

SUPERBED_TOKEN: 用于授权的 token

SUPERBED_TONGJI:百度统计,就是 https://hm.baidu.com/hm.js? 后面跟着的那一串 32 个字符,用来安装百度统计的

ADDRESS:你的网站的地址,可以是域名或者 ip+端口都行

ENDPOINTS:默认上传的图床,用逗号分隔

ADMIN_USER:创建的管理员的账号

ADMIN_PWD:管理员密码

ADMIN_EMAIL:管理员的邮箱

EMAIL_SENDER:用户注册时,用来发送注册验证码的邮箱,后面几个 EMAIL_开头的分别是 smtp 地址,用户名和密码

Z4A_USER/Z4A_PWD:几个使用 chevereto 搭建的图床的用户名和密码,目前支持

imgchr: https://imgchr.com

jpgdog: https://jpg.dog

aphoto: https://a.photo

imgbb: https://imgbb.com

z4a: https://www.z4a.net

miaosu: https://miao.su

moetu: https://moetu.org

photouploads: https://photouploads.com

biuu: https://pic.biuu.me

imgrpost: https://imgrpost.com

tryimg: http://tryimg.com

用户名和密码和 Z4A_USER 类似,就是前面的名称大写加上_USER 和_PWD

这样会上传到对应图床的自己的账号下面,如果不提供的话就相当于游客上传的

上传的图床目前支持:

weibo (需要自己配置微博账号密码,如果非常用地址会遇到验证码,不建议使用)

sogou

sohu

baidu

juejin

qihu

vimcn

uploadcc

catbox

以及上面说的那几个 chevereto 图床

这两个文件都写完之后,在当前目录使用 docker-compose up -d,等待安装完成,过几秒钟就可以直接用 ip+端口访问了,如果 ADDRESS 是域名,则需要自己配置 nginx 转发,转发的地址是 127.0.0.1:8000,如果 8000 端口已经被占用,则修改一下 docker-compose.yml:

    ports:
      - "8010:8000"  # 将 8000 端口换位 8010 端口

目前小范围测试,可以提供 5 个授权码,也就是 SUPERBED_TOKEN,先到先得 ~

7640 次点击
所在节点    分享创造
26 条回复
qwertyzzz
2019-04-11 23:13:27 +08:00
到!
kxh
2019-04-11 23:17:59 +08:00
第二到
zkdfbb
2019-04-11 23:25:25 +08:00
需要的提供一下邮箱吧
gzlock
2019-04-11 23:28:49 +08:00
“比如你的网站是 https://xxx.com, 后台会使用 referer: https://xxx.com 来检测”
都有后端做检测了,直接抹掉 referer 再向微博图床请求读图是不是更简单暴力呢
zkdfbb
2019-04-11 23:34:01 +08:00
@gzlock 如果有防盗链,可能就是不带 referer 返回 200,带 referer 返回 403
dongisking
2019-04-11 23:39:53 +08:00
支持,一直在用聚合图床,很好用!
longyongcai
2019-04-12 04:15:51 +08:00
支持
gzlock
2019-04-12 04:43:47 +08:00
@zkdfbb 我的意思是用直接用后端做图片的数据转发,算是耗流量但减少代码量的方案🤣
msg7086
2019-04-12 05:33:17 +08:00
@gzlock 耗流量还要用图床做什么,直接存本地读就行了。和带宽钱比,硬盘才几个钱……
JmmBite
2019-04-12 06:58:23 +08:00
bWFvamllbWluZ0BnbWFpbC5jb20=
gclm
2019-04-12 07:51:56 +08:00
1719982754#qq.com 如果还有吗的话麻烦大佬给我发一个
8hfq
2019-04-12 07:59:45 +08:00
支持一下。 想要个授权码 NTEwMTE2OTQ5QHFxLmNvbQ==
SingeeKing
2019-04-12 08:18:55 +08:00
好想来晚了……

singeeking#gmail.com
Orz
2019-04-12 08:25:30 +08:00
i#orz.li thx
slwl
2019-04-12 08:38:00 +08:00
不知道大佬还送不。起来晚了吗? slwl93#gmail.com
hhhfffhhh
2019-04-12 09:55:12 +08:00
yaoyige~
nanaw
2019-04-12 10:08:40 +08:00
用 referer 字段检测?日常禁用路过。不过这也是个想法,伪造原站的 referer 怎么样?
cszhiyue
2019-04-12 13:48:57 +08:00
测试一下
hahaba
2019-04-12 13:49:42 +08:00
终结!我问了微博消费者 BG 的同事,目前没有打算限制外链,因为历史原因,他们也没有办法进行全量限制,至少未来几年内是不会进行限制
hmzt
2019-04-12 14:28:05 +08:00
只用请求头限制跟没限制一样,大量的浏览器扩展可以伪造

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/554274

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX