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

如果经常逛独立网站,可能会注意到,一些站点提供一种叫作 RSS 的订阅方式。以本站为例,如果点开 https://yfi.moe/feed.xml 的链接,会得到一个 XML(或者 JSON)文件。这个链接有什么用呢?为什么很多网站提供这一订阅方式?如果阅读一个 RSS 源?

Note

2024-10-25:最近 Follow 大火,带动着我这篇文章阅读量又起来了。做了一些更新,集中在“为什么?”板块;更新了 软件推荐部分(包括 Follow)。

是什么?

来自 Wikipedia

RSS,是一种 消息来源 格式规范,用以聚合多个网站更新的内容并自动通知网站订阅者。使用 RSS 后,网站订阅者便无需再手动查看网站是否有新的内容,同时 RSS 可将多个网站更新的内容进行整合,以摘要的形式呈现,有助于订阅者快速获取重要信息,并选择性地点阅查看。

简单的讲,一个 RSS 就是一个给程序看的摘要,如果需要检查网页有没有更新,不需要请求整个网页然后解析 HTML,直接请求这个摘要就行了。

这里说的“更新”,可能是一个博客网站更新了新文章,也可能是论坛网站有了新帖子,甚至某些论坛还会给每个帖子一个 RSS 链接,可以查看这个帖子有没有新回复。

为什么不请求完整的 HTML,而是请求摘要呢?首先,每个网站的 HTML 结构不同,不像 RSS 有几乎统一的规范,用 RSS 可以方便地统一解析不同站点的更新;其次,现在很多网页的 dom 都是由 js 动态生成的了,在非浏览器环境基本没法获得内容;另外用 RSS 还能给双方都省点流量😄。

更具体的说,以本站为例,打开页脚中的 RSS 源的 链接,会发现 XML 中的项目是本站最近更新的文章,也就是说,追踪这一个 XML 文件,就可以追踪本站文章是否有更新,而不必每次抓取整个网页。

而常见的 RSS 阅读器都支持添加多个 RSS 源,所以通过 RSS 可以在同一个阅读器中,追踪并阅读你所关注的所有博客、新闻、以及任何可以制作出 RSS 源的东西!

为什么?

我认为,RSS 的作用在于:自动获取更新以及聚合阅读

举例来说,本人关注了约莫 20 个博客站。如何查看它们的更新呢?每天全部打开一次看一看?显然,我们需要一种自动化的方法。RSS 阅读器便解决了这一问题。它定期拉取

RSS 还有两个常被提到的特点:解决信息过载和逃离算法构建的信息茧房

RSS 只显示你订阅的源,在单位时间内向你展示的信息量是可以预估的,这样可以从“无限下滑”的信息过载中解脱出来;同时,你可以看到订阅源发布的所有消息,而不是只是算法推荐的一部分,可以说是逃离了一部分信息茧房。

但是,我认为这两点并不是 RSS 内禀的属性,而是使用 RSS 时可能可以得到的效果。如果贪多,订阅了太多的源,每天都有 1000+ 的新条目,连浏览一遍标题都做不到,那么 RSS 肯定没有做到解决信息过载。而信息茧房的说法就更是见仁见智了。如果和微信公章号对比,公众号的“算法推荐”会导致我读不到某些我顶月的公众号发布的文章,因此 RSS 在这方面是帮你做到了“打破信息茧房”;而另一方面,如果我订阅的都是符合自己口味的源,那么不就陷入了更深的信息茧房吗?


怎么用?

说完理论的,下面讲讲实践的。

可以发现,阅读 RSS 有两个阶段的问题:获得 RSS 源、阅读它。

获得源

教条地讲,这是不用用户操心的——源是由网站提供的。

一般来说,如果网站提供的了 RSS ,会在侧边栏或者页面底部提供 RSS 链接;如果没有,也可以用 RSS Radar 这个插件看看是不是写在了 HTML head 里但是没在页面上放链接。

然而,现在大量的社交媒体或者其他网站并不提供 RSS;而你又想使用 RSS 订阅它们,怎么办呢?我们也有办法给没有 RSS 的网站生成 RSS 源,但是操作略显复杂。

RSSHub

文档链接:介绍 | RSSHub

在 Post-Google Reader 时代讲 RSS 时不得不提的一个项目,给不支持 RSS 的网站生成 RSS 源。

通过它的口号“Everything is RSSible”可以看出它的雄心壮志,而在社区的支持下,这一口号并没有成为空话:目前它支持数百个网站、共有数千个路由。

通过它,你可以用 RSS 订阅 B 站、抖音、微博、推特;绝大多数热门的网络服务,都有贡献者写了路由,让使用 RSS 订阅它们成为可能;同时,还有一些意想不到的路由,比如 B 站的 up 主粉丝列表,可以追踪某 UP 主最近的新粉丝有哪些。

项目本身推荐自建,但也提供了一个 demo。对于这类需要爬虫的项目来说,我认为自建是极其必要的:大部分网站都有反爬策略,官方的实例早就被禁止访问了。

自建除了自己在服务器上建,也可以使用 Vercel 等服务(2024-10-25 更新:目前似乎部署到 Vercel 功能的是坏的),可以说是无成本的。

我之前写过在服务器上用 Docker 的自建教程:完整的 RSS 解决方案:自建 RSSHub 与 Miniflux

其他源生成服务

例如 Huggin 和已经停止服务的 Feed43 等等。这类服务可以通过监测网页变化而生成 RSS 源,无须编写 RSSHub 规则。目前我知道的还有 Check 酱、RssEverything 之类。

阅读 RSS 源

如果你是轻度用户,那么你要做的的就是从下面一个标题中的推荐阅读器里选一个下载,然后把上一步里获得源都导入即可——就是这么简单。但是,我还是建议看一看下面的内容。

Tip

RSS 阅读器有不少可折腾的,相互之间的关系也很复杂,我在下面几段里会尽我所能把它讲明白😢

RSS 阅读器可以分为两大类——运行在服务器上的和运行在本地的。他们最大的区别就是爬取 RSS 的间隔:服务器类的会 24x7 地按照设定的更新间隔请求 RSS 来更新文章列表,而本地的 RSS 阅读器只能在打开的时候(或者非常有限的后台里)请求 RSS 源并更新文章列表。

这看起来区别似乎不大——但是如果回想一下 RSS 的工作原理,如果长时间没有请求 RSS 源,会发生这样的情况:一个提供最新十篇文章的链接的 RSS 源,如果你上次刷新到这次刷新之间,它更新了 15 篇文章,那么中间的 5 篇文章就不会出现在你的阅读器里。所以,本地的阅读器如果更新不及时(比如忘记打开了,手机后台又因为各种原因让它没有正常地后台抓取:这种情况还挺常见的),会有丢文章的问题。

同时,对于运行在服务器上的 RSS 阅读器,我们也可以不直接使用它来阅读,而是只把它当作抓取服务;然后用本地版的另一个 RSS 阅读器通过 API 与服务器上的 RSS 阅读器通讯来获得文章进行阅读。这里的 API 也是有统一标准的,一般是 Fever API 或者 Google Reader API。

下面放张图,希望可以帮助你理解。

RSS阅读器演示

除此之外,服务端的一般还有 RSS 过滤、打标签之类的高级操作,而本地阅读器大多数都没有。

阅读器举例

对于服务端阅读器,有一些是产品,有一些是自建服务。

对于本地阅读器,选择实在太多了,我列几个我比较喜欢的:

  • iOS/macOS 平台:可选的较多,举三个我推荐的例子
    • Reeder Classic:$4.99 付费买断下载,美观均衡之选,对 Fever API 支持欠佳。近近几个月发布了新 Reeder,但我还是建议使用 Classic 版本。
    • Fiery Reader:免费下载,高级功能每年 $9.99,功能及其强大,自定义程度极其高,你想要的它都有
    • Unread:在国区商店提供,高级功能略贵但普通版完全够用
  • Windows 平台:其实在 Windows 上我推荐直接上浏览器看 Inoreader 或者自建服务的网页版,不用专门下阅读器。
    • Fluent Reader:使用 Fluent Design 的阅读器,开源免费
  • Android 平台:我不用安卓手机很多年了,以下是我看到的别人的推荐
    • Read You: Material You 风格,开源免费。
    • Feedme:功能完善且强大的阅读器。

我目前使用 Miniflux 配合 Reeder 5,它们之间使用 Google Reader API 通信。

关于 Follow

Note

本段信息写于 2024-10-25。Follow 仍在快速迭代中,如果你在更远的将来看到此段内容,不能保证准确性。

Follow 是 RSSHub 作者的新作品,最近开启了测试,火到它的邀请码“一码难求”。作为 RSSHub 的贡献者,我在测试刚开始的时候就拿到了邀请码。本文只讨论它在 RSS 生态中的“生态位”,具体功能可以看这篇文章:15 个邀请码后,聊聊我对 Follow 的深度体验感受 - cos

目前来看,Follow 自带一个服务端,且目前未提供任何服务端自建指南;所以它在定位上更像是 Inoreader,但是有更大的野心,加入了 Web3、轻社交、订阅源列表分享等功能。更多它带给 RSS 的创新待会在 新趋势 里说。

但是,Follow 目前还处在比较早期的阶段,只能在桌面端使用;由 Web 技术开发,桌面客户端是 electron 做的,动画、手感虽然处在第一梯队,但是和原生开发的 Reeder 等软件仍有不可忽略的差距。因此,各位大可不必一定要“尝到鲜”(更别说上某鱼买邀请码),等待它稳定下来之后再用也不迟。

如何选择适合的服务?

我以 iOS 平台为例,其他平台的改一下最后的阅读器即可,上游都是互通的。

轻度用户重度用户
不愿意折腾Reeder Classic自建 RSSHub + Inoreader + Reeder Classic
愿意折腾自建 Miniflux + Reeder Classic自建 RSSHub + 自建 Tiny Tiny RSS + Fiery Reader

只是我的推荐,对于重度用户和愿意折腾的人来说完全可以自己一个个试一下,找到适合自己的组合。

目前我的组合:自建 Miniflux + Reeder Classic

其他用法

我们常说的 RSS 是网站文章 RSS,上面所提的“怎么用”也主要聚焦于这类 RSS feed。但是,还有很多通知类或者其他类型的 RSS feed,比如 V2EX 提供了一个包含被回复通知 的 RSS feed。这样的条目和普通的文章混在同一个阅读器了总觉得怪怪的,所以我们也有一些很适合这些 Use Case 的 RSS 使用方法,比如使用 Telegram 机器人订阅这些 Feed。

总的来说,RSS 本身只是一种供程序抓取的统一规范,完全可以找到适合自己的方法进行阅读——在这方面,重要的是结果,而不是过程。

RSS 的不当用法?

RSS 并不是万能的。这里有一些我认为不妥的使用方法。

订阅太多的源

有太多人的阅读器里有 999+ 的未读了。我认为很多源——如果你连它的标题的不想看完——那这个源最好删掉。

设置太短的更新时间

对于目标服务器的压力太大了,所以现在很多小站(包括本站)的 RSS 被迫不提供全文输出,只提供摘要了。

而且,RSS 本身就不是为了实时获取更新设计的——每次都要加载一整个 XML 文件,更新频率太高谁都受不了。比如,即使现在本站只提供摘要,但是每月访问最多、消耗的流量最大的依旧是 RSS 源页面。

我认为设置 1 小时以下的更新时长都是不合理的。

有用的链接

本文使用“署名-非商业性使用-相同方式共享 4.0 国际(CC BY-NC-SA 4.0)”进行许可。

商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接。 如果您再混合、转换或者基于本作品进行创作,您必须基于相同的协议分发您贡献的作品。

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.3.2
2023-2024 Yunfi. | Source Code RSS | Site Map Powered by Astro. See all Credits.