RSSWorker:一个运行在 Cloudflare Worker 上的 RSS 生成工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
v2yllhwa
0.01D
V2EX    分享创造

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

  •  4
     
  •   v2yllhwa
    yllhwa 2023-10-12 23:07:52 +08:00 14777 次点击
    这是一个创建于 729 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    路由支持

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

    • bilibili 动态 (/bilibili/user/dynamic/:uid)
    • telegram 频道 (/telegram/channel/:username)
    • weibo 用户 (/weibo/user/:uid)

    不过添加支持很简单,因为都是 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 环境比较特殊,基础设施还是好多没有建设好,好多地方要手搓。

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

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

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

    这两个是我自己的服务。。
    AboutRSS
        4
    AboutRSS  
       2023-10-13 10:49:37 +08:00
    谢谢分享创造! star 了。
    THESDZ
        5
    THESDZ  
       2023-10-13 11:00:51 +08:00   1
    项目 about 的地方可以设置一些 topic 增加被检索到的可能性
    glogo
        6
    glogo  
       2023-10-13 12:02:20 +08:00
    你们用什么 rss 阅读器?
    xygod
        7
    xygod  
       2023-10-16 11:42:05 +08:00
    我自己也搞了类似的解析网页生成 rss 的 worker ,不知道是因为免费的 cpu 时间太短了还是解析 html 太占内存,解析有些网站的时候有时候会超时失败
    v2yllhwa
        8
    v2yllhwa  
    OP
       2023-10-16 11:55:16 +08:00
    @xygod 我是付费的,因为还有其他项目跑在 worker 上面,顺便就做了这个。
    你是用 htmlrewriter 解析的 html 吗,用 cheerio 之类的可能会很慢
    xygod
        9
    xygod  
       2023-10-17 09:04:35 +08:00
    @v2yllhwa #8 cheerio ,我直接从我的其它项目里拿过来用的,我试试 htmlrewriter
    MoriEcho
        10
    MoriEcho  
       2023-10-17 23:47:43 +08:00
    感谢!
    平时我用的是 bilibili 的投稿,想补充进去,大致看了一眼发现好像不是简单地在 user 下新建一个 video.js 就能解决
    可能有时间再研究一下
    xygod
        11
    xygod  
       2023-10-20 09:10:01 +08:00
    @v2yllhwa #8 尝试换了 htmlrewriter ,效果拔群,执行消耗直接干掉了 99%。。。太感谢啦
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2857 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 00:26 PVG 08:26 LAX 17:26 JFK 20:26
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86