如果经常逛独立网站,可能会注意到,一些站点提供一种叫作 RSS 的订阅方式。以本站为例,如果点开 https://blog.yfi.moe/feed.xml 的链接,会得到一个 XML(或者 JSON)文件。这个链接有什么用呢?为什么很多网站提供这一订阅方式?如果阅读一个 RSS 源?如果你觉得疑惑,不如接着往下看。
这是我想写的关于 RSS 的内容的一篇总览式的文章。
持续更新中,目前写的还不算满意。
是什么?为什么?#
来自 Wikipedia:
RSS,是一种 消息来源 格式规范,用以聚合多个网站更新的内容并自动通知网站订阅者。使用 RSS 后,网站订阅者便无需再手动查看网站是否有新的内容,同时 RSS 可将多个网站更新的内容进行整合,以摘要的形式呈现,有助于订阅者快速获取重要信息,并选择性地点阅查看。
还是以本站为例,打开侧栏中的 RSS 源的链接,会发现 XML 中的项目是本站最近更新的文章,也就是说,追踪这一个 XML 文件,就可以追踪本站文章是否有更新,而不必每次抓取整个网页。
而常见的 RSS 阅读器都支持添加多个 RSS 源,所以通过 RSS 可以在同一个阅读器中,追踪并阅读你所关注的所有博客、新闻、以及任何可以制作出 RSS 源的东西!
为什么使用 RSS?#
我认为,RSS 的作用在于:自动获取更新以及聚合阅读。
举例来说,本人关注了约莫 20 个博客站。如何查看它们的更新呢?每天全部打开一次看一看?显然,我们需要一种自动化的方法。当然,我们可以 GET 一下主页,从 HTML 中 提取我们需要的信息;然而,每个站点结构不同,这么干实在是有点费时费力。因此,RSS 诞生了:一种格式相对固定的 XML/JSON 文件,只要定时爬取它,就可以获取相关的信息。
同时,关注的信息散布在各个平台上,我一定需要打开每个平台阅读吗?RSS 提供了这样一种可能:抓取每个平台的信息,在同一个阅读器里呈现给读者。
RSS 怎么读?#
阅读 RSS 源可以很简单:选择一个喜欢的阅读器,添加源,即可;但是也可以很复杂,以获取更高的效率、更好的阅读体验。
回想之前的知识,可以发现,阅读 RSS 有三个阶段的问题:源层面、抓取层面、以及阅读层面。
源层面:#
从 RSS 的定义来讲,这是不用用户操心的 —— 源是由网站提供的。但是,现在大量的社交媒体或者其他网站并不提供 RSS;而你又想使用 RSS 订阅它们,怎么办呢?
RSSHub#
文档链接:介绍 | RSSHub
讲 RSS 时不得不提的一个项目,给不支持 RSS 的网站生成 RSS 源。
通过它的口号 “Everything is RSSible” 可以看出它的雄心壮志,而在社区的支持下,这一口号并没有成为空话:目前它支持数百个网站、共有数千个路由。
通过它,你可以用 RSS 订阅 B 站、抖音、微博、推特;绝大多数热门的网络服务,都有贡献者写了路由,让使用 RSS 订阅它们成为可能;同时,还有一些想不到的路由,比如 B 站的 up 主粉丝列表,可以追踪某 UP 主最近的新粉丝有哪些。
项目本身推荐自建,但也提供了一个 demo。对于这类需要爬虫的项目来说,我认为自建是极其必要的:大部分网站都有反爬策略,官方的实例早就被禁止访问了。
自建除了自己在服务器上建,也可以使用 Vercel 等服务,可以说是无成本的。
我之前写过在服务器上用 Docker 的自建教程:完整的 RSS 解决方案:自建 RSSHub 与 Miniflux | Yunfi's Blog
如果不想自建,可以试试使用我的实例:https://rsshub.yfi.moe
其他源生成服务#
例如 Huggin 和已经停止服务的 Feed43 等等。这类服务可以通过监测网页变化而生成 RSS 源,无须编写 RSSHub 规则。目前我知道的还有 Check 酱、RssEverything 之类。
抓取服务和阅读器#
通常来说,一个 RSS 阅读器,既可以抓取,也可阅读。但是,功能有侧重,我们可以分别使用不同的工具来抓取和阅读。
由于种类过多,不再一一举例。
为什么需要独立的抓取服务?#
因为如果一个 RSS 源提供了最新的十篇文章的链接。而从你上次刷新到这次刷新之间,它更新了 15 篇文章,那么中间的 5 篇文章,你就看不到了 —— 所以需要一个 24/7 在线的定时抓取的服务在运行,以不错过任何文章。
这些服务通常还提供更高级的设置,比如通过正则过滤文章、给文章打 tag 等。
可以选择平台,比如 Inoreader 或者 Feedly;也有自建的服务,比如 Tiny Tiny RSS, FreshRSS, Miniflux 等等。
这些服务其实都是阅读器,如果可以接受它们的界面和操作的话也可以直接使用它们阅读,而不必专门使用阅读器。
阅读器#
虽然这里提到的阅读器基本都可以直接添加源进行阅读,但是如果希望有更高级的设置,可以配合上文提到的抓取服务。
一般来说,阅读器通过 Fever API,Google Reader API,或者各个抓取服务的特有 API 与上级通信以同步。
- iOS/macOS 平台:可选的较多,举三个我推荐的例子
- Reeder 5:$4.99 付费买断下载,美观均衡之选,对 Fever API 支持欠佳
- Fiery Reader:免费下载,高级功能每年 $9.99,功能及其强大,自定义程度极其高,你想要的它都有
- Unread:在国区商店提供,高级功能略贵但普通版完全够用
- Windows 平台:其实在 Windows 上我推荐直接上浏览器看 Inoreader 或者自建服务的网页版,不用专门下阅读器。
- Fluent Reader:使用 Fluent Design 的阅读器,开源免费
- Android 平台:我不用安卓手机很多年了,以下是我看到的别人的推荐
- Read You:类似 Reeder 的 UI 风格,开源免费,还在开发中
- Feedme:功能完善且强大的阅读器。
如何选择适合的服务?#
我以 iOS 平台为例,其他平台的改一下最后的阅读器即可,上游都是互通的。
轻度用户 | 重度用户 | |
---|---|---|
不愿意折腾 | Reeder 5 | 自建 RSSHub + Inoreader + Fiery Reader |
愿意折腾 | 自建 Miniflux + Reeder 5 | 自建 RSSHub + 自建 Tiny Tiny RSS + Fiery Reader |
只是我的推荐,对于重度用户和愿意折腾的人来说完全可以自己一个个试一下,找到适合自己的组合。
RSS 的不当用法?#
RSS 并不是万能的。这里有一些我认为很不好的使用方法。
订阅太多的源#
有太多人的阅读器里有 999+ 的未读了。我认为很多源 —— 如果它的十篇更新里你只会看一两篇 —— 那这个源最好删掉。
设置太短的更新时间#
对于目标服务器的压力太大了,所以现在很多小站的 RSS 被迫不提供全文输出,只提供摘要了。
而且,RSS 本身就不是为了实时获取更新设计的 —— 每次都要加载一整个 XML 文件,更新频率太高谁都受不了
有用的链接#
- AboutRSS/ALL-about-RSS (github.com) 顾名思义
- 介绍 | RSSHub RSSHub 的文档
也可以去我的 Hexo 博客查看本文:RSS: 是什么?为什么?怎么用?| Yunfi's Blog