RSSWorker:一个运行在 Cloudflare Worker 上的 RSS 生成工具

2023-10-12 23:07:52 +08:00
 v2yllhwa

RSSWorker:一个运行在 Cloudflare Worker 上的 RSS 生成工具

链接: https://github.com/yllhwa/RSSWorker

主要灵感来源是 RSSHub(非常齐全)。

我想每次刷新就拿到最新的内容(不要缓存),但是又不想折腾反爬问题,所以就在 Cloudflare Worker 上面跑一个。

路由支持

目前只支持了我自己用的几个:

不过添加支持很简单,因为都是 js ,格式也差不多,可以很轻松地从 RSSHub 的代码迁移过来(微博相关就是直接 copy 的 RSSHub )。

其他

我重度使用的是 bilibili 的路由,所以很 hack 地用 fetch api 手搓了一个 grpc 请求( bilibili 对 grpc 的反爬不严格)。

因为刚入坑 RSS ,所以可能很多细枝末节的东西没有考虑到,欢迎提 issue 和 pr 。

使用的一些工具

Cloudflare Worker 有打包 gzip 压缩后的文件大小限制(免费用户 1 MB ,付费用户 10MB ),所以需要尽量用 Cloudflare Worker 提供的接口,比如 HTML 解析使用 HTMLRewriter 等。

然后就是构造 bilibili 的 grpc 请求用了第三方的库@bufbuild/buf,因为官方的在 Worker 环境下面跑不起来。

路由框架使用的是 Hono , 模板引擎则使用 mustache ( Worker 环境好像不能使用带 eval 的库)

感想

Cloudflare 确实牛, 不过这个 Worker 环境比较特殊,基础设施还是好多没有建设好,好多地方要手搓。

13734 次点击
所在节点    分享创造
11 条回复
caomingjun
2023-10-13 01:25:23 +08:00
好东西,star 了
建议清理一下代码,bilibili 里面好像有不少用不到的代码
yuhangch
2023-10-13 08:59:06 +08:00
我也有类似的需求,技术力不足,我是跑一个 rsshub 实例,用 cf worker 反代,做一些路由的自定义和其他的处理。。
wdssmq
2023-10-13 08:59:41 +08:00
wdssmq/rsshub-cf: Cloudflare Worker 反代 RSSHub
https://github.com/wdssmq/rsshub-cf

我到是不要求即时性,阅读器多试几次最终能拿到就行,Worker 后边套了多个 RSSHub 站点,每次随机选一个抓取。。

"https://vercel.mizuno2023.xyz/",
"https://rsshub.mizuno2023.xyz/",

这两个是我自己的服务。。
AboutRSS
2023-10-13 10:49:37 +08:00
谢谢分享创造! star 了。
THESDZ
2023-10-13 11:00:51 +08:00
项目 about 的地方可以设置一些 topic 增加被检索到的可能性
glogo
2023-10-13 12:02:20 +08:00
你们用什么 rss 阅读器?
xygod
2023-10-16 11:42:05 +08:00
我自己也搞了类似的解析网页生成 rss 的 worker ,不知道是因为免费的 cpu 时间太短了还是解析 html 太占内存,解析有些网站的时候有时候会超时失败
v2yllhwa
2023-10-16 11:55:16 +08:00
@xygod 我是付费的,因为还有其他项目跑在 worker 上面,顺便就做了这个。
你是用 htmlrewriter 解析的 html 吗,用 cheerio 之类的可能会很慢
xygod
2023-10-17 09:04:35 +08:00
@v2yllhwa #8 cheerio ,我直接从我的其它项目里拿过来用的,我试试 htmlrewriter
MoriEcho
2023-10-17 23:47:43 +08:00
感谢!
平时我用的是 bilibili 的投稿,想补充进去,大致看了一眼发现好像不是简单地在 user 下新建一个 video.js 就能解决
可能有时间再研究一下
xygod
2023-10-20 09:10:01 +08:00
@v2yllhwa #8 尝试换了 htmlrewriter ,效果拔群,执行消耗直接干掉了 99%。。。太感谢啦

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/981490

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX