Yunfi

Yunfi

tg_channel
github
email

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 文件,更新頻率太高誰都受不了

有用的鏈接#

也可以去我的 Hexo 博客查看本文:RSS: 是什麼?為什麼?怎麼用?| Yunfi's Blog

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。