RSS: 是什么？为什么？怎么用？

如果经常逛独立网站，可能会注意到，一些站点提供一种叫作 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