看我这大晚上发帖,你们应该能想到我现在的心情,纯粹牢骚一下。也许你会说发牢骚干嘛不去 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 好像没区别啊?那我干嘛不去选其他在网络请求方面更适合人类的语言和工具
1
amlee 100 天前 6
架不住别人稳定运行很多年,用户多,会营销。
你自己写的项目会有几个人用呢?我记得还有人专门翻译了一个 rsshub 的 python 版本,也没几个 star 流量是一切,有时候需要放弃从技术角度思考 |
2
WildCat 100 天前 4
其实开源世界最有意思的规则是,你不爽他可以 fork 做个更好的。
等你做了就知道为什么一个「简陋的前端展示框架」就可以这么火了 |
3
kk2syc 100 天前
中文开源很喜欢造乌托邦项目,并且一群人还以此为荣
|
4
botman 100 天前
rsshub 宣传好,用户多,规则多,配套完善,本来就不是爬虫框架,采集功能弱很正常,不过不碍事,自己写框架,套娃解君愁 (doge
|
5
summerLast 100 天前
|
6
nielinjie 100 天前 1
有些东西叫框架,有些叫平台,有些叫生态,有些叫社区。这些方式都可以组织协同,都可以聚合起来完成一些事。但他们的层次是不同的,特点也不同。楼主可以思考一下这个角度。
|
7
BeautifulSoap OP |
8
BeautifulSoap OP @nielinjie 嗯嗯,你说得似乎有点道理,但你说的内容和我这帖子想说的内容似乎并没啥关系。。。。。。看我 7L
|
9
viWww0vvxmolvY5p 100 天前 2
@amlee 确实会营销,现在 rsshub 的作者又搞了个 rss 阅读器,给自媒体号发内测资格,我去哪都看到人推,属实有点烦了。
|
10
WildCat 100 天前
@BeautifulSoap 那可能是我理解有问题。
「结果在请求网页的时候,RSSHub 几乎没有提供任何工具。它让开发者直接用 ofetch 这个包跳过 RSSHub 直接去请求网页。网络请求的所有细节和繁杂工作全都要每个源作者自己去处理。」就这点来说,严格来讲他们的设计是对的。单一职责原则啊。 |
11
ztm0929 100 天前 via iPhone 1
有一说一,原作者大佬自己也在吐槽,我觉得你说的也在理。https://diygod.cc/6-year-of-rsshub
营销的感觉见仁见智吧。 我主要是想回答最后一段的问题,我的感受是它作为我这类非编程人员是一个很好的了解 RSS 以及爬虫的社区(当然也仅仅只是入门,精进还得靠自己) 非常期待像你们这样的开发者去完善更新 RSS 世界(不一定只是这个项目) |
12
kdwnil 100 天前 via Android
RSSHub 本身是没法针对每个源去优化处理请求的,这个问题确实只能由各个源作者自己解决,否则只会变成另一个耦合地狱甚至更糟(牵一发而动全身最后导致不能改了,还不如直接指定一个请求库让源作者自己去用),ofetch 也已经封装了一部分功能了干脆就直接用就好,虽然我也发现换到 fetch 写爬虫是真的坐牢。至于资源池问题,看之前他们 po 过的官方实例的架构图总给我一种力大砖飞的感觉……
想要专门针对某个网站直接写倒确实比写这源更省时省力省心 |
13
Rrrrrr 100 天前 2
rss 炒冷饭,真喜欢看,没有工具你也天天去看。不喜欢看的,放你前面你就点已阅
|
14
B4a1n 100 天前
所以我选择自己写想要网站的爬虫再自己聚合成 RSS
|
15
0o0O0o0O0o 100 天前 via iPhone
我主要是想用它的官方实例
|
16
magiclx 100 天前
一方面,我也遇到类似的问题,看了 RSSHub 的路由似乎满足,但由于我不喜欢 docker 部署,在手动部署 RSSHub 时就失败了,于是用 Python 和 PHP 自己搞定了,还灵活,转发 URL 在自己的 Client 中一订阅,效果非常好。
另一方面,说 RSSHub 项目,我认为非常有价值,我可以订阅我关注消息源的更新通知,比自己打开浏览器或 App ,逐个刷要高效。RSSHub 超越了标准化的 RSS ,适配很多非 RSS 源,让大家可以用别人的适配来阅读内容。打破那些靠控制内容传播来间接收费的商业大公司的内容笼。 你站在更高的层面思考问题,无论是 RSSHub 的路由,还是一段脚本,它提供的就是让内容可订阅的价值,在不考虑规模时,它们是等效的。 |
17
DIYgods 100 天前 24
我也觉得写路由挺麻烦的,所以我们正在做 ci 工具来简化这一过程,楼主如果这么闲,有时间发这么大段文字来吐槽,不如来真正参与我们的开源项目,你就知道靠下班后业余七年时间维护一个充满历史遗留问题的庞然大物不是你那么简单几句话就能概括得了的,到时候也还不会觉得一切都应该是美好和理所当然的了
正好我们几个维护者白天上班也挺忙的,毕竟也要赚钱吃饭,爱好不能当饭吃,没太多业余时间维护它,真诚邀请你来帮助我们 * 另外营销只是我曾经写过几篇博客,和每个月自费几千刀运行官方服务,没有时间和精力做其他的营销操作了 |
18
wangee 100 天前 via iPhone
的确欠缺对于速率的限制,对于反爬严重的网页,我是单独起了一个项目处理的
|
19
ztm0929 100 天前 via iPhone
@DIYgods 官方实例建议通过一些标准流程开始收费(先试点一些冷门实例,大家不喜欢再做调整或换回免费),类似于开源博客系统 Ghost 的模式,我感觉似乎有很大一部分用户没有编程基础又渴望良好的体验(一些群聊观察到的)
总感觉个人自费挺亏。 |
22
goodokgood1 100 天前
@mway 确实,号称是下一代的阅读器,我激活了一个试用了几天,相比较传统的 rss 阅读器没发现什么特别之处
|
23
Tink 100 天前
他这个不算是爬虫框架,这些活可以让 ai 帮忙干
|
24
BeautifulSoap OP @DIYgods 作者你好,我不太理解网络请求部分的复杂度该如何通过 ci 进行简化。如果可以的话你能提供相关讨论或构想的链接吗?
至于参与项目,说真的我不太确定 RSSHub 到底对项目变化的接受程度到底如何。 我虽然写第三方源(也就是 router )才一天不到,但已经发现了非常多缺失的功能,如经由 RSSHub 接管的网络请求接口,完全自动无感的 cookie 处理,对请求速率之类进行控制的池,cookie 的持久化,数据的持久化之类。这些功能并不是特别复杂的功能,但我不确定我真写了代码后这些改变能否被 RSSHub 接受 |
25
GrayXu 100 天前 1
@nielinjie #6 +1 ,社区是个更好的定义。而且实话不同开发者做的不同网站,你要给这些工具做一套抽象出来也挺难的,自己搓轮子其实是个更实际的方案。或者分层来做?
|
26
momocraft 100 天前
cookie 和反反爬都是体力劳动居多 你之前的人和你一样不想做 or 做不好而已
|
27
404www 100 天前
为什么有人一直说在营销呢?我感觉还好吧,要是不宣传(虽然我估计作者没怎么宣传过)早就消失在 404 里了,总不能什么东西火或者多人用就是营销吧?那微信的营销不是更厉害,怎么不见大规模弃用微信
|
28
bli22ard 100 天前 1
这么说的话,和这个比较像的项目,就是青龙面板,面板核心功能就是定时任务,它可以说连脚本开发文档都没有,但是热度同样很高。我之前发帖,https://www.v2ex.com/t/1016931
|
29
mark2025 100 天前
如果 RSSHub 提供了高级的反爬虫接口,你觉得不会被黑产的盯上?
|
30
jackmod 100 天前
N 年前码过几个路由,前几天发现有几个寄了好几个月了,没人修就是没人订阅,以后再说。
自用的实例是自建的,私有机器上搭配 freshrss 用。 |
31
BeautifulSoap OP @mark2025 有点搞笑,我头一次听说网络请求帮忙自动处理 cookie ,给个速率控制就能被黑产盯上的
|
32
mark2025 99 天前
@BeautifulSoap 这不是你原文吗?
========== 结果写到后来直接把我写得绷不住了,最大的问题:rsshub 作为专门将网页解析成 rss 的项目,实际上本质就是个大型的爬虫。而作为一个爬虫,请求各种网站的时候你肯定需要有一点反爬对策的。比如我期待就是 RSSHub 会提供一些网络请求的接口如 .get() .post() 来给我们调用,底层一些简单的杂活累活就由 RSSHub 来负责,我只需要提供相应请求信息之类的,然后对结果进行解析 or 处理更复杂的页面逻辑 or 反爬逻辑 =========== |
33
cabudon 99 天前
rsshub 啥用没有,我都不知道是干什么的,那个作者最近又搞了 follow ,玩饥饿营销。
rss 不都是自己搭服务器爬吗?然后选几个通用 rss 接口规则,rsshub 体现在哪,不是很懂 |
34
ztm0929 99 天前 via iPhone 1
@cabudon RSSHub 作为我这类技术小白理解并实践 RSS 非常有帮助。从名字就可以看出来它的愿景是社区驱动(虽然不会有 GitHub/P**nHub 那样的体量)。目前来看似乎并不适合你们这类技术大佬。
实际上我自己也弃用了(确实“不完美”),吐槽/讨厌某个项目也是每个人的自由,但是这样轻描淡写地评价还是挺伤人心的。 |
35
BeautifulSoap OP |
36
ztm0929 98 天前 via iPhone
@BeautifulSoap #2 #24 #17 “非常期待像你们这样的开发者去完善更新 RSS 世界(不一定只是这个项目)” 这是我所理解的开源世界。
作为开源学习者,我不认为我是只伸手不建设的 User… 作为爬虫学习者,我能感受到在这样“糟糕”的基础上施不开拳脚(几乎重复造轮子)的痛苦郁闷。 最后,如果这样吐槽能让你好受一点,也不错😄 |
37
mark2025 98 天前
@BeautifulSoap
======== rsshub ……本质是个爬虫 …… 反爬对策的……RSSHub 提供网接口如 .get() .post() 来给我们调用 =================== 我没用过 rsshub ,就上面的信息我可能不正确的理解: 1. rsshub 是个爬虫 2. 你期望 rsshub 能提供接口来,底层实现反爬策略 3. 如果 rsshub 实现这种接口,那么就有人会利用这些接口做不一定合法的事情。比如爬商品价格什么的 |