文章目录
- Miniflux v2:9.2K Star,用 Go 写的 RSS 阅读器
- 1、基础功能一览
- 2、隐私保护的具体做法
- 3、解决那些不友好的网站
- 4、打通其他工具
- 5、怎么部署
Miniflux v2:9.2K Star,用 Go 写的 RSS 阅读器
Miniflux 在 GitHub 上拿到了 9.2K Star。
这件事的起点是作者 Frederic Guillot 对市面上 RSS 阅读器的判断:要么太臃肿,要么隐私做得不够。他自己动手,拿 Go 从头写了一个。结果就是一个单二进制文件,PostgreSQL 做存储,不用 ORM,不用任何框架。跑起来只占几 MB 内存,CPU 几乎不动,哪怕你订阅了几百个信息源。
1、基础功能一览
Atom、RSS 1.0/2.0、JSON Feed 这三种主流订阅格式全部支持。OPML 文件导入导出、URL 导入、分类整理、书签标记、全文搜索这些日常会用到的功能都内置了。目前提供了 20 种语言的界面,简体中文和繁体中文都在列表中。
一个不太常见的细节是它内置了 YouTube 播放能力。在 Miniflux 的页面里就能看视频,不需要跳转到外部网站。如果你更在意隐私,它还支持通过 Invidious 来播放 YouTube 内容。
2、隐私保护的具体做法
RSS 订阅这件事,隐私问题容易被忽略。你订阅的每一个源,对方的服务器都能知道你的 IP、客户端类型、访问时间。更不用说那些埋在文章里的追踪像素和 UTM 参数。
Miniflux 在这块的应对比较实在:
- 像素追踪器自动移除
- URL 中的追踪参数(utm_source、fbclid 等)全部剥离
- FeedBurner 托管的源会自动还原到原始链接
- 所有外部链接添加 noopener noreferrer 属性,防止 referrer 信息泄露
- HTTP 层面设置 Referrer-Policy: no-referrer
- 图片通过内置代理加载,同时解决 HTTPS 页面中 HTTP 图片的混合内容告警
- 外部 JavaScript 一律拦截,所有第三方内容先清洗再渲染
- 启用 CSP 和 Trusted Types 策略,只允许应用自身的脚本执行
3、解决那些不友好的网站
有些网站对 RSS 阅读器做了限制,正常的抓取请求会被拦截。Miniflux 为此准备的绕过手段:可以关闭 HTTP/2 以降低 TLS 指纹识别的风险,支持自定义 User-Agent 和 Cookie 来模拟浏览器行为,还可以配置上游代理来抓取内容。
拿到网页后,Miniflux 不会直接展示全文,而是通过本地的 Readability 解析器提取正文,把广告、推荐阅读、评论区这些无关内容全部去掉。如果你对某个网站的提取效果不满意,还可以用 CSS 选择器写出自己的抓取规则。正则表达式过滤器能进一步帮你筛选想看的内容。
4、打通其他工具
Miniflux 不是一个孤立的阅读器。它接入了超过 25 个第三方服务:想把文章存到 Notion 里、同步到 Readwise Reader、转发到 Telegram 或 Discord、保存到 Wallabag 或 Instapaper、通过 Ntfy 推送通知、在 Matrix 里分享,这些它都支持。
API 层面,它兼容 Fever API 和 Google Reader API 这两种被广泛使用的标准。所以市面上多数移动端 RSS 阅读 App(Reeder、NetNewsWire、Unread 等)都可以直接连接 Miniflux 作为后端服务。对于开发者,REST API 提供了 Go 和 Python 两种语言的客户端库,Webhook 机制也方便做自动化。
5、怎么部署
Miniflux 的部署选型比较灵活。Docker 镜像覆盖了 x86、ARM、RISC-V 三种 CPU 架构,官方还提供 Debian 和 RPM 包以及预编译的二进制文件。HTTPS 方面,Let’s Encrypt 可以自动配置证书,也支持挂载自定义 SSL 证书。项目遵循 Twelve-Factor App 方法论,如果你的服务器用 systemd 管理服务,它也支持 sd_notify 协议来做进程监控。
认证方式上,本地用户名密码是基础选项。此外还支持 Passkeys(WebAuthn)、Google OAuth2、OpenID Connect、反向代理认证。一个人用或者团队共享,都能找到对应的登录方式。
2、OpenID Connect、反向代理认证。一个人用或者团队共享,都能找到对应的登录方式。