看我这大晚上发帖,你们应该能想到我现在的心情,纯粹牢骚一下。也许你会说发牢骚干嘛不去 RSSHub repo 下。额,主要还是因为我已经放弃了给它写源了,所以也不打算去 repo 下多引发争议。

事情经过:

有个喜欢的歌手的网站没有 rss ,rsshub 也没有相应的源,于是看了下 rsshub 的开发文档开始写源,想着写好了我也能提个 pr

结果写到后来直接把我写得绷不住了,最大的问题:rsshub 作为专门将网页解析成 rss 的项目,实际上本质就是个大型的爬虫。而作为一个爬虫,请求各种网站的时候你肯定需要有一点反爬对策的。比如我期待就是 RSSHub 会提供一些网络请求的接口如 .get() .post() 来给我们调用,底层一些简单的杂活累活就由 RSSHub 来负责,我只需要提供相应请求信息之类的,然后对结果进行解析 or 处理更复杂的页面逻辑 or 反爬逻辑


结果在请求网页的时候,RSSHub 几乎没有提供任何工具。它让开发者直接用 ofetch 这个包跳过 RSSHub 直接去请求网页。网络请求的所有细节和繁杂工作全都要每个源作者自己去处理。

最让我难受非 cookie 莫属。所有涉及到 cookie 的操作全都需要第三方源作者自己来处理。而很多网站反爬又很依赖 cookie 。ofetch 作为一个网络请求包并不具备任何 cookie 相关功能,一切都要你手动处理。你需要提取出返回头里的 Set-Cookie 信息,然后解析出来,然后手动放到下一次请求头里,下次如果返回值 Set-Cookie 你又要手动更新处理等等。关键是 js 里 cookie 解析,CookieJar 之类包又极其难用。体验极其坐牢

你也许会说,处理这么麻烦你不会写点 helper 函数?是的,其他源作者也是这么想的,所以导致现在 RSSHub 项目数不清的源里,非常多作者都各自独立造了 cookie 轮子或者单独用自己的方式在用 cookie

除此之外网络请求没有比较统一的资源池,要爬取一个列表中所有文章信息,官方文档直接让你 Promise.all([get(), get(), get()]) 暴力请求,也没有任何针对网站请求速率进行控制的相关工具。所有东西全要自己实现。我越是写到后来越觉得奇怪,我感觉 RSSHub 怎么看着就是个非常简陋的前端展示框架啊。整个系统中最麻烦复杂的网络请求部分全都一股脑地扔给了源开发者,RSSHub 本身地工作实际上就是调用源然后渲染成 rss 这么简单

那么这就有个问题了,RSSHub 写源花费的这功夫和我直接新建个项目起个简单服务器然后直接调用 http clinet 然后整形成 rss 好像没区别啊?那我干嘛不去选其他在网络请求方面更适合人类的语言和工具
举报· 225 次点击
登录 注册 站外分享
26 条回复  
amlee 小成 2024-9-21 03:02:07
架不住别人稳定运行很多年,用户多,会营销。

你自己写的项目会有几个人用呢?我记得还有人专门翻译了一个 rsshub 的 python 版本,也没几个 star

流量是一切,有时候需要放弃从技术角度思考
WildCat 小成 2024-9-21 04:30:05
其实开源世界最有意思的规则是,你不爽他可以 fork 做个更好的。
等你做了就知道为什么一个「简陋的前端展示框架」就可以这么火了
kk2syc 初学 2024-9-21 04:46:09
中文开源很喜欢造乌托邦项目,并且一群人还以此为荣
botman 小成 2024-9-21 09:49:17
rsshub 宣传好,用户多,规则多,配套完善,本来就不是爬虫框架,采集功能弱很正常,不过不碍事,自己写框架,套娃解君愁 (doge
summerLast 小成 2024-9-21 10:50:24
有可能一开始就是一个个人玩具项目,然后宣传不错,star 数目和技术难度不正向关

最近也写了一个玩 ,https://github.com/weekend-project-space/web2rss
nielinjie 小成 2024-9-21 10:55:11
有些东西叫框架,有些叫平台,有些叫生态,有些叫社区。这些方式都可以组织协同,都可以聚合起来完成一些事。但他们的层次是不同的,特点也不同。楼主可以思考一下这个角度。
mway 小成 2024-9-21 11:32:25
@amlee 确实会营销,现在 rsshub 的作者又搞了个 rss 阅读器,给自媒体号发内测资格,我去哪都看到人推,属实有点烦了。
ztm0929 小成 2024-9-21 11:46:49
有一说一,原作者大佬自己也在吐槽,我觉得你说的也在理。https://diygod.cc/6-year-of-rsshub

营销的感觉见仁见智吧。

我主要是想回答最后一段的问题,我的感受是它作为我这类非编程人员是一个很好的了解 RSS 以及爬虫的社区(当然也仅仅只是入门,精进还得靠自己)
非常期待像你们这样的开发者去完善更新 RSS 世界(不一定只是这个项目)
kdwnil 小成 2024-9-21 11:50:34
RSSHub 本身是没法针对每个源去优化处理请求的,这个问题确实只能由各个源作者自己解决,否则只会变成另一个耦合地狱甚至更糟(牵一发而动全身最后导致不能改了,还不如直接指定一个请求库让源作者自己去用),ofetch 也已经封装了一部分功能了干脆就直接用就好,虽然我也发现换到 fetch 写爬虫是真的坐牢。至于资源池问题,看之前他们 po 过的官方实例的架构图总给我一种力大砖飞的感觉……

想要专门针对某个网站直接写倒确实比写这源更省时省力省心
123下一页
返回顶部