不知從什麼時候開始,我的生活就慢慢的被推薦算法淹沒,推薦視頻、猜你喜歡……,幾乎每天,我都或多或少的被他們所影響。我曾半開玩笑:「網速越快,其傳遞的信息就越少」,甚至有些一語成讖。這並不是互聯網能傳遞的信息變少了,而是越來越快的網速、越來越準的推薦算法養廢了我們,奪走了我們從網上獲取信息的能力與主動權。
RSS 已是信息獲取手段中的老古董了,但它的體驗真的一點都不老古董:相反,用它來獲取信息,體驗極佳——不光無廣告,還能讓那些分散在一個一個網頁上的信息自動跑到你面前,豈不美哉?我沒有經歷過那個時代,但聽聞當年的大家,人人都拿著 Google Reader(Google 打造的 RSS 閱讀器)讀他們想讀的內容,倒也真想回到那個年代體驗一番。
可惜 Google Reader 這一產品早就關停了,曾經大多數網站都提供的 RSS 訂閱源也悉數消失,想要重新拾起 RSS,就需要一點折騰了。
RSSHub:萬物皆可 RSS
這是 DIYDogDIYGod 大佬發起的項目,就和它的標語一樣,萬物皆可 RSS,這個項目能通過爬取網頁內容的方式生成 RSS 信息流,從而通過 RSS 訂閱本不支持 RSS 的網站。
由於是爬取,難免會受到目標網頁反爬取策略的影響,而有的目標網頁(比如大陸的政府網站)會屏蔽他國 IP 的訪問,亦或者屏蔽掉風險 IP。這些因素就比較考驗機房了,但只要不是被特別「照顧」的 IP,一般問題不大。出於這些原因,我在分別在洛杉磯和上海部署了 RSSHub。
Docker 部署 RSSHub 非常簡單,首先拉取已經寫好的docker-compose.yml:
| |
然後檢查有無需要修改的配置:
| |
我最終修改完成後,配置如下:
| |
為什麼要新建一個 Redis 鏡像?主要是懶得配置容器互聯,而 RSSHub 用 Redis 佔不了多少資源,遂直接寫進一個docker-compose.yml裡,省去容器互聯的麻煩。
啟動編排:
| |
隨後使用 Nginx 反代localhost:1200至域名,部署 SSL 證書,RSSHub 就全部搭建完成了。
反爬嚴格網站的部分解決
前面已經提到由於 RSSHub 的工作原理是爬取,其勢必會受到不同網站反爬策略的影響。以 B 站為例,如果僅僅部署 RSSHub 而不採取任何措施,當你訂閱時,大概率會出現「521 - 風控校驗失敗」的提示。
這時,先去查找 RSSHub 的文檔,看看相應的網站是否有 Cookie 可以被設置為容器的環境變量,對於大部分需求,只要環境變量配置正確,就可以有效緩解反爬問題。
還是以 B 站為例,查閱 RSSHub 文檔,可以發現有一些額外的環境變量需要配置。1

按照文檔,打開對應的網頁,按下 F12 打開開發者工具,轉到「網絡」面板,刷新網頁,就可以找到 dynamic*new 請求,複製整個 Cookie(或者 SESSDATA=xxx;字段),修改docker-compose.yml文件,將BILIBILI_COOKIE*你的B站UID: "SESSDATA=xxx"添加到environment部分,即可完成配置。
配置好的docker-compose.yml看起來像下面這樣:
| |
修改文件並保存,重啟編排:
| |
配置完成後,即可正常訂閱 B 站 Up 主投稿等相關路由。
RSS 閱讀器推薦
RSSHub 可以解決掉大多數訂閱源的問題,接下來推薦幾個 RSS 閱讀器,解決的是最後一步如何呈現到設備上的問題。
Windows
Fluent Reader
我目前在用的 RSS 閱讀器,開源小巧,遵循 Fluent Design,如果需要 Windows 上的免費 RSS 閱讀器,那麼大概率就是它了。需要注意的是,這是開源軟件,但在應用商店裡需要付費才能下載,不想付費則可以直接在 GitHub 上下載其安裝包安裝,當然,如果喜歡,鼓勵大家支持這個項目。
ThunderBird
這個不是 RSS 閱讀器,但也提供了 RSS 功能,比較適合打造郵件 RSS All in one。
ThunderBird 是由 Mozilla 基金會開發的一款開源郵件和新聞聚合客戶端,已經有快 20 年的歷史。
MacOS 和 iOS
NetNewsWire
開源,Swift UI 原生編寫,幾乎完美的 RSS 閱讀器,說實話我很驚訝這位作者維護這個項目的時間跨度。
NetNewsWire 是由 Brent Simmon 出於愛好和支持 RSS 發展開發的 RSS 閱讀器,遺憾的是,由於是 Swift UI 編寫,只支持 Mac OS 和 iOS。
Reeder
這個就是收費 App 了,但功能做的很不錯。作為「骨灰級」應用,Reeder 一度被人稱為 iOS 與 macOS 上最好用的 RSS 閱讀器。不光設計精緻,還支持如桌面小組件等各種 Mac OS 和 iOS 上原生的功能,如果你的預算充足,可以考慮。
Fluent Reader
又是之前提到的 Fluent Reader 也提供了 Mac 版本,實測在 Mac OS 上體驗也還不錯,在 iOS 上雖然看起來是原生 UI,但實際上是 React 寫的跨平臺版本,而且還需要收費,如果想要支持這個項目,可以考慮購買。
鏈接:
Linux
NewsFlash

NewsFlash is a program designed to complement an already existing web-based RSS reader account.
It combines all the advantages of web based services like syncing across all your devices with everything you expect from a modern desktop program: Desktop notifications, fast search and filtering, tagging, handy keyboard shortcuts and having access to all your articles for as long as you like.
這是一個很現代化的 RSS 閱讀器,一般用 flatpak 安裝,也有人為其製作了 Snap 封裝的版本,不過幾乎不怎麼更新維護。它的界面很好看,對在線服務2支持的很全,而且是原生運行,非常推薦。
Fluent Reader
又雙叒是 Fluent Reader,跨平臺這麼容易嗎。
有人給它製做了 Snap 封裝的 App,Ubuntu 可以直接去應用商店下載使用。官方倉庫裡提供了 AppImage 給其它分支使用。
安卓
Fluent Reader
又雙叒叕是 Fluent Reader,在安卓上,Fluent Reader 依然是貼合 iOS 的 UI,用起來有點牛頭人的感覺,若不在意這一點,體驗倒還不錯。
FeedMe
評論區網友的推薦,FeedMe 支持的服務繁多,功能齊全,界面也較為現代化,一樣支持 FreshRSS 等在線 API。
如果有其他好用的 RSS 閱讀器歡迎在評論區留言。
總感覺還缺點什麼?
理論上來說,解決了訂閱源的問題,還解決了呈現在設備上的問題,我們已經還原出 Google Reader 的體驗了,但我在實際使用中,總是覺得缺少了一些特性,體驗並不完整。
這個特性就是「同步」。我所希望的,是我在 A 設備上閱讀,閱讀進度可以同步到 B 設備上,在 A 設備上收藏的文章,打開 B 設備,能原封不動的呈現在我眼前。
同時,還有一個體驗上的要求:我希望我在拉取 Feed 時更加快速,不需要等待 RSSHub 抓取網頁。
於是,一個自託管的 RSS 聚合服務就很有必要了。
以 FreshRSS 完善體驗
FreshRSS 是一個免費,自託管的 RSS 聚合器,相似的項目還有 Tiny Tiny RSS(TTRSS),選擇 FreshRSS 是因為它提供兩種 API,和各個 RSS 客戶端配合的更好。
Github倉庫:https://github.com/FreshRSS/FreshRSS
部署
部署 FreshRSS 的過程也很輕鬆。
創建目錄:
| |
創建docker-compose.yml:
| |
docker-compose.yml如下:
| |
最後執行:
| |
隨後反代端口,部署 SSL 證書。初始設置時,數據庫選現有的數據庫類型,如果沒有部署數據庫,直接選 SQLite 即可。至此,FreshRSS 部署完成。
如果之前有訂閱源,將其以 OPML 格式導出,然後導入 FreshRSS 就可以獲得幾乎無縫的體驗。

如果有現成的 PHP 環境而不想用 Docker 部署,還可以像安裝 Wordpress 一樣安裝好 FreshRSS。
設置 FreshRSS
RSSHub 充當的是提供訂閱源的中心,而 FreshRSS 充當的是一個閱讀訂閱源的「Hub」,幫助我們集中管理訂閱源,同步各設備間的閱讀進度。現在訂閱源已經集中管理起來,同步個設備間的閱讀進度就需要 FreshRSS 提供的 API 了。
FreshRSS 提供 GReader 和 Fever 兩種 API,具體的啟用方法如下:
- 登入 FreshRSS 進入「設置」->「認證」開啟「允許API 訪問」
- 進入「賬戶」在頁面底部設置一個 API 密鑰
- 編輯
./freshrss/data/config.php中的base_url,改為你的域名根目錄地址,比如我的就需要改成https://rss.l3zc.com/ - 轉到
https://example.com/api/查看檢測是否通過


設置各設備上的客戶端
NetNewsWire
部署完成後,在手機上和電腦上支持的應用裡使用設置好的用戶名和 API 密鑰登陸,就可以享受到全程絲滑的 RSS 體驗了,下面以 NetNewsWire 為例:

打開NetNewsWire添加賬號的選項卡,NetNewsWire貼心的集成了FreshRSS,可以很方便的添加賬號:

NetNewsWire 要求 Greader 的 API,直接在 /api 上覆制就可以了。

FluentReader
在設置中選擇 Google Reader API:

然後填入相關信息:
- API端點直接從
/api網頁上覆制 Google Reader API 的 API 端點即可 - 用戶名填寫安裝 FreshRSS 時設置的用戶名
- 密碼是前文設置的 API 秘鑰
即可設置完成。
其他的客戶端設置大同小異,無外乎上面兩大類,可以參考上面的方法進行設置。
RSS 訂閱什麼呢
我們已經裝好了 RSSHub,這極大的方便了我們的訂閱以及豐富了我們的訂閱源。RSSHub 的官方文檔中維護著一份詳細的支持列表,支持的項目不可謂不繁多:媒體、博客……甚至大學通知,Twitter 更新都能覆蓋。
以訂閱「湖南省政府採購網」的「採購公告」為例,首先需要在 RSSHub 的文檔中找到「湖南省政府採購網」以獲取其訂閱的「路由」:

查詢文檔可知我們所需要的路由是/gov/hunan/notice/:type,其中:type是一個必選參數,我們需要獲取的是「採購公告」所以:type應該是cg,最終需要的路由就是/gov/hunan/notice/cg。將這個路由附加在我們部署(反代)RSSHub 的網址後,即可得到完整的訂閱地址,例如:部署rsshub的網址是https://rsshub.app,則最終的訂閱地址為:https://rsshub.app/gov/hunan/notice/cg,將其加入 FreshRSS 的訂閱即可。
需要注意的是,FreshRSS 似乎不支持自動轉換訂閱鏈接裡的非 ASCII 字符,如果你的訂閱鏈接裡含有這些字符,如https://rsshub.app/sspai/tag/派早報,則建議在瀏覽器內先訪問一下,再將轉換後的鏈接粘貼進 FreshRSS 以轉換鏈接中的非 ASCII 字符。
對於原本就有 RSS 的網站,推薦使用 RSSHub Radar,這是一款瀏覽器插件,可以實現 RSS 訂閱源的自動嗅探,而不必在網站上四處尋找。推薦它是因為,它不光可以嗅探 RSS 鏈接,如果目標網站可以用 RSSHub 訂閱,這個插件可以自動匹配支持的 RSSHub 路由。
最後……
經過了這一番折騰,基本體驗到了當時人人都用著 Google Reader 的樂趣。即便如此,屬於 Google Reader 的時代終究還是過去了,那個人人都可以從網上收穫純粹的知識與快樂的時代,也已然一去不復返。這些年來網速越來越快,但給我的上網體驗卻越來越差。大多數人都開始上網的時候,內容農場,推薦算法……只要有利可圖,互聯網精神,那個曾經作為互聯網基石的精神,就全被這些追逐利益的資本和官商勾結的政府拋在腦後。我甚至可以說:至少在中國,那個曾經「互聯網」的理想已死。
RSS 的沒落只是大環境的縮影,「技術」固然需要進步,但沒有與之相匹配的「人文」,這種進步就會成為一場災難。以我們現在的狀態來看,賽博朋克真的離我們不遠——技術進步,不但不能消除不平等,反而會加劇壓迫與控制。
即使大環境再怎麼黑暗,我們依然能看到一線生機,依然會有人去發揚幾乎被大環境拋在腦後但彌足珍貴的互聯網精神,散發光和熱,通過自己的方式捍衛互聯網的開放與自由。
感謝所有這些開源項目的貢獻者,也向所有熱愛分享的同路人致敬。
參考
以及這篇文章裡所有提到的鏈接。

評論已停用,直到您接受功能性 Cookie。