关于我的RSS订阅系统

这是什么

我曾经写了若干篇关于RSS的思考和RSS的实践,在这几年间也一直在升级自己的RSS系统,用于抵抗平台算法和流量的浪潮。

如今自己的这套系统已经趋于稳定,已经没有曾经三天两头就要维护的状态了,想要为此做个总结,也希望为后来想要搭建RSS系统的人一些参考。本文不会讲基本的如何安装,只会说一些自己注意到的事项。

系统概述

系统的大致情况和几年前没有变化。一个RSS抓取器,一个RSS订阅存储器和一个RSS阅读器。

RSS抓取器我部署了一个RSSHub。RSSHub是DIYGOD一直维护的RSS生成系统,至今一直在维持更新。我用RSSHub来进行哔哩哔哩视频的抓取和微博一些活动信息源的抓取。

RSS订阅存储器我是用的是FreshRSS,部署在和RSSHub相同的服务器上面。FreshRSS本身就可以当作一个阅读器在电脑端进行阅读,同时它提供Fever api可以用在其他阅读器上面,比如我的移动端Reeder 5阅读器。这样可以保证信息源在多端的同步。我可以在日常间隙中简要阅读文章,把觉得可以细读的文章和关注的UP主新发的视频收藏起来当作Read Later,有充分休息时间或是面对电脑的时候就可以把收藏翻出来一个一个看。

RSSHub

RSSHub的配置总是充满各种坑。以前需要不定期手动更新各个网站的Cookie避免被网站反爬虫机制制裁,现在RSSHub使用了无头Chrome模拟真实浏览器访问,在访问哔哩哔哩的时候就不需要自己提供Cookie了。

然而代价是什么?代价是现在的RSSHub对于服务器内存的需求大幅增加。曾经我把wordpress和FreshRSS和RSSHub放在一个2c2g服务器里面,经常不到半天就把服务器炸了还得重启。而现在我安排了一个境外的2c2g服务器,专门用于RSS系统,把RSSHub和FreshRSS部署在上面,和博客分开管理了。

影响RSSHub使用内存大小的另一个因素是用户对RSSHub的访问请求量。有两个重要参数影响了访问请求量:访问频率和访问的基数。

在修改之前单个RSSHub的docker就可以把2g内存(虽然可用的是1.8g)占满。因为不仅我在用这个RSSHub,其他人搜索到了这个公开页面的时候也会使用我的RSSHub,这样访问基数就增加了,我也时常会在log中看到一些神奇网站的订阅。虽然我很乐意公开我的RSSHub给其他人提供帮助,但如果因此我自己都没办法使用RSSHub的话就得不偿失了。所以最后我还是选择把我的RSSHub仅作为个人使用,方法就是使用nginx或caddy等类似的软件将RSSHub仅对我FreshRSS所在的服务器IP公开。

FreshRSS

FreshRSS我基本使用了最基础默认的配置,打开了api提供我手机阅读器使用。Reeder和FreshRSS联动的好处是可以直接在Reeder上面将新的订阅添加到FreshRSS上面,这是我使用fluent reader无法做到的。

FreshRSS提供了各种功能的拓展,我推荐我使用的两个。

其一是FreshRSS FlareSolverr。一些网站虽然提供了RSS订阅,但是使用FreshRSS的时候会被cloudflare发送的验证挡住,比如我最喜欢的bedroomproducersblog,这个插件可以帮助解决cloudflare验证的问题。需要注意的是FlareSolverr解决cloudflare验证需要额外时间,所以可能要把对应的订阅超时时间调整大一些,40秒左右是够用的。

其二是AutoTTL,这个插件会把更新频率为“默认”的订阅通过30天内平均更新的频率来决定下一次抓取的时间。非常好用。

其三是Youlag插件,这个插件可以把FreshRSS的普通视图变成Youtube关注一样的贴片视图,如果是Youtube的订阅还可以直接模拟内嵌视频的油管网站,看上去颜值十分高。但是尝试了一次之后发现似乎会把我常用的快捷键给禁掉,所以我没有推荐这个拓展。

我们订阅的是时事吗

在AutoTTL之前,我的订阅都是默认刷新时间,默认刷新时间都是30分钟,这样我可以第一时间看到哪个UP主更新了视频哪个博主又发了什么新鲜的事情。但是这样做哔哩哔哩很快就对我进行了限制,微博也很快处于饼干冷却中。所以我不得不调整刷新的时间,同时从心理上说服自己调整刷新时间:我需要第一时间跟进这些事情吗?

我订阅的大多数是各种人文、二次元、各种音乐和音频技术,偶尔一些校园相关的事情如果和我有关系的话学校也会通过其他方式联系我而不是几乎没人使用的RSS。如果我第二天才发现车祸警示录前一天发了新视频我没有及时观看的话会不会对我有影响?如果Deco发了新歌我过了两天才发现,点进去已经播放量几百万了对我有影响吗?

真正的时事大多在各种通讯和邮件中,而不是RSS中。想通这个道理之后我开始思考每个订阅我应该多久访问一次。比如术力口周刊每周更新一次,那么我应该一周访问一次,且把它的访问更新时间放在周末,这样不会让我工作日分心。而bedroomproducersblog时常分享一些限时的免费物件,是货真价实的时事,我也会把它设置成6小时更新一次,这样不会出现信息尿不尽的情况,同时我的RSS服务器也稳定多了。

而现在有了AutoTTL之后大部分时间我订阅新的内容之后就不用手动去修改更新时间了,不过仍需要思考AutoTTL给的时间是否合理,比如说我订阅了Comiday的微博,这个是成都的一年两次同人展的官方,没有展的日子几个月都不发微博,有展的日子一天转几十个帖子。针对这种更新不规律但又十分重要的订阅,还是手动设置更新时间比如一天一次。