如果經常逛獨立網站,可能會注意到,一些站點提供一種叫作 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