惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
V
V2EX
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
小众软件
小众软件
Vercel News
Vercel News
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
J
Java Code Geeks
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog
B
Blog
美团技术团队
量子位

他说

只因一次笔误:一次笔误让我误以为他是女生,好感竟成了困局 表哥家在装修:Win10 金彩色系统,搭配 Minecraft 光线追踪 服务器的长途跋涉:我的世界服务器探索,飞到世界尽头建领地 一场作弊的高考:高考前重返学校,发现同学都在作弊改答案 后来如何了:辍学以后天天在家打游戏,母亲在超市笑着失落 那个外星女友的故事:我在平流层遇险,外星女友却失联两个月 论网恋的危害性:网恋女友身亡又复活,变声骗走老哥巨额钱财 知乎邀请函后续:面对知乎批量邀请,独立博客作者如何选择 被知乎的运营邀请:收到知乎官方邀请,我却选择坚守独立博客 博客宇宙后续:AI 把博客标题解析成两个域名,凌晨修复友链 貌似网站名字错了:博客宇宙友链出错,生造域名站名不显示 还有翻案环节:Dash to Dock 翻译之争,到看开源社区草台班子 吃药缓解一点了:感冒自己买药扛过来,想起当年学校中考跑步 如果有公共功能就好了:想约人打游戏很尴尬,应该有公告功能 暑假娱乐好无聊:信息茧房塌了,博客圈也全是 SEO 垃圾文 有时候运气真够透的:被抖音信息茧房反噬,过时技术推荐真烦 那篇文章的评论者:投影钟博文未发布,陌生访客已摸进局域网 大家要注意身体啊:楼下雪糕让我身体掏空,夏季食品安全需警惕 服务器开荒第三期:我的世界服务器遭遇强盗,黑暗森林生存法则 我和好朋友讨论龙骑:梦回校园重温特摄友情,却终究只是一场梦 记参加文字园活动:一篇有瑕疵的 Git 文章,入选文字园让我心虚 再审视 Windows 设计:从 Win11 的广告沼泽,逃向 UNIX 的清净世界 张雪和张雪峰的一字之差:张雪峰去世背后,就业选择与教育反思 被 A 社吓哭了:Claude Code 隐私检测,让我果断卸载并回归开源 服务器开荒第二期:给邻居送告示牌,扩建地下室发现蜘蛛刷怪笼 朋友邀请我玩服务器:我的世界服务器开荒,冰原遇险草原中安家 微信账单同步日历:使用 Python 脚本将支付记录导出到苹果日历 楼上装修真是烦死了:被楼上装修噪音追着跑,躲进音乐也逃不掉 为什么我喜欢巴巴爸爸:从漫画到动画,粉色棉花糖的奇遇记 他遇到的伤心事:诚哥的时空穿越奇遇,秘密与校园午后秘密誓言
部署 RSSHub:RSS 阅读器结合树莓派,订阅 B 站 UP 主实操
梁栋烨 · 2026-06-09 · via 他说

最近用 NetNewsWire 订阅真的用爽了。这款 macOS 上的 RSS 阅读器让我重新找回了阅读的掌控感——我可以自由订阅各种个人博客,无论是技术分享还是生活随笔,都能整齐地汇聚在一个界面里。最让我惊喜的是,它能针对峰哥、张洪、拾月这些特定订阅源单独设置系统通知,完全融入 macOS 的通知中心。早上睁开眼,拉开窗帘,坐在桌前打开电脑,那些我喜欢作者的最新文章就已经安静地躺在那里等我翻阅。

用 RSS 阅读就有一种独特的孤独感,但这种孤独并不让人难过。它不是你真的孤身一人,而是像小时候一个人坐在电视机前看电视那样——荧幕里的世界热热闹闹,你和外界却隔着一层玻璃。用 RSS 也是这样:你从自己的阅读器这“石头缝”里默默观察着整个互联网,看别人争论、看别人分享、看别人生活,而外面的人并不知道你在看什么,也干涉不了你看到的顺序和内容。最近社交媒体用多了,我越来越受不了“刷不到后续”的焦虑。

我知道一个叫 RSSHub 的服务,这个项目在开源社区里非常有名。简单来说,它能把几乎所有不支持 RSS 的网站统统转换成标准 RSS 订阅源。只要你把它部署在自己的服务器上,就可以订阅基本已知的任何媒体平台内容。这是我在以前折腾 Linux 系统时,从开源社区那里了解到的工具。现在手头正好有一台闲置的树莓派,虽然因为曾经流量问题,已经不敢跑网站服务了,但部署一个 RSSHub 还是绰绰有余的。

它的安装过程十分简单,只需要一个 Docker 和一双勤劳的手就能完成。所有需要的依赖镜像在 DockerHub 官方仓库上都有现成版本,你不需要自己编译源码或配置复杂的环境。你可以直接使用这份 Docker Compose 配置文件来部署,它来自 1Panel 面板,我把那三份 Docker Compsoe 模板用 AI 缝合、修改了一下。它的配置里面定义了三个服务,分别是无头浏览器、RSSHub、数据库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
networks:
1panel-network:
external: true

services:
browserless:
container_name: browserless
deploy:
resources:
limits:
cpus: 0
memory: 0
healthcheck:
interval: 30s
retries: 3
test:
- CMD
- curl
- -f
- http://localhost:3000/pressure
timeout: 10s
image: browserless/chrome
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- 3000:3000
restart: always
ulimits:
core:
hard: 0
soft: 0

rsshub:
container_name: rsshub
deploy:
resources:
limits:
cpus: 0
memory: 0
environment:
CACHE_TYPE: redis
NODE_ENV: production
PUPPETEER_WS_ENDPOINT: ws://browserless:3000/
REDIS_URL: redis://:redis_hZie7B@redis:6379/
healthcheck:
interval: 30s
retries: 3
test:
- CMD
- curl
- -f
- http://localhost:1200/healthz
timeout: 10s
image: diygod/rsshub:chromium-bundled-2026-04-19
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- 1200:1200
restart: always

redis:
command: redis-server /etc/redis/redis.conf --requirepass redis_hZie7B
container_name: redis
deploy:
resources:
limits:
cpus: 0
memory: 0
image: redis:8.8.0
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- 6379:6379
restart: always
volumes:
- ./data:/data
- ./conf/redis.conf:/etc/redis/redis.conf
- ./logs:/logs

其中 Redis 的密码需要改一改,因为这是你自己私人部署的实例,配置文件里的 redis_hZie7B 只是示例。安全起见,我强烈建议你在部署完成后,关闭除了 RSSHub 之外那两个服务的端口映射。端口映射把容器内部的服务暴露到你的电脑网络上,关掉它们意味着外部无法直接访问数据库和无头浏览器,只能通过 RSSHub 内部网络调用。这样一来,底层修改权就只保留在静态文件里,可攻击的突破口大大减少,你的 RSSHub 实例会更加安全。

我平时就乐意看 B 站的视频,要订阅 B 站 UP 主,就需要提取 B 站登录后的 Cookie 中的 SESSDATA 键值对——这是 B 站用来识别用户身份的凭证。我们可以通过开发者工具来获取:打开浏览器访问 B 站并登录,访问这个地址,打开开发者工具,切换到“网络”标签,刷新页面,找到任意一个请求,在请求头里找到 Cookie 字段。通常情况,复制 SESSDATA 的键值就可以了。

我假设你有一份 Cookie 已经被提取出来了,现在你需要找到其中 SESSDATA 那一节,把它和对应的值(比如 12345678)提取出来,放到 Docker Compose 模板的 RSSHub 环境变量里边。同时还需要加上你要订阅的 UP 主的 UID。配置格式如下方的代码所展示的,注意 RSSHub 官方文档种的环境变量名的特殊结构(BILIBILI_COOKIE_ 需要后面跟上 UP 主的 UID):

1
2
3
4
5
6
environment:
BILIBILI_COOKIE_3494372658121066: SESSDATA=12345678
CACHE_TYPE: redis
NODE_ENV: production
PUPPETEER_WS_ENDPOINT: ws://browserless:3000/
REDIS_URL: redis://:redis_hZie7B@redis:6379/

配置好环境变量、重启容器后,访问实例的路径 /bilibili/user/video/:uid(替换为自己想看博主的 UID),即可获得该 UP 主近期视频的 RSS 订阅源。比如我想订阅“极客湾”的科技评测,就把极客湾的 UID 配置进去;还想看“影视飓风”的摄影大片?那就再添加一个变量,把影视飓风的 UID 也写上。每个 UP 主会生成独立的订阅链接,统一添加到 NetNewsWire 或者其它阅读器里,非常方便。

第一次访问这个 RSS 链接时通常会正常返回内容,但是后续访问却提示 412 状态码,这又是什么意思呢?412 表示“前提条件失败”——简单来说,哔哩哔哩的服务器拒绝了你的访问。这通常是因为你配置文件的 Cookie 不完整:RSSHub 默认只需要 SESSDATA。解决方案也不复杂:将你在开发者工具里复制出来的那串完整 Cookie 原封不动地塞到环境变量里,完整的 Cookie 包含了浏览器指纹、登录时间戳、令牌等多种信息。