v2ex plus 用户们,你们知道你们的浏览器被用来跑分布式爬虫了吗

2023-05-12 13:50:20 +08:00
 Xianmua
首先承认标题夸张了点,但是事实确实如此。
看到有个 V2EX plus 插件,很多人都装了的,准备也安装来用用。插件功能不少,这个没错,有些方便的小功能。
进设置页面的时候,发现有个 vdaily 默认开启,比较有意思的是这句话“同时接受等量的爬取任务”。有点好奇接受任务这件事,于是看了看怎么回事。哦只要安装了插件,会不断地从服务器获取爬虫任务。
vdaily 作者的网站,有非常详细的请求统计和快速滚动的爬虫任务日志分析,想看的自己去看吧,都是公开的(在请求统计和日志那里)。这里有一堆截图,可以看看。
当然可以说作者做的一点毛病也没有,毕竟在插件设置内都写明了,开启 vdaily 会接受爬取的任务,至于爬取的数据,那就是 vdaily 的资产了对吧。分布式爬虫人家也没什么遮遮掩掩的,都是正大光明的,本篇帖子也没有有技术含量的分析。只是说我是不太喜欢这个 feature ,删了。提醒一下大家,不知道的或者是介意的,都知道知道。
图片合辑: https://imgur.com/a/shPfy8I













https://i.imgur.com/N4TK3FG.mp4
42431 次点击
所在节点    程序员
185 条回复
Xianmua
2023-05-13 23:47:54 +08:00
@pokon548 我看了看,他那个好像是弄了个 自动生成周报并发帖的功能。用 @vPlus 这个账号发布的
sciooga
2023-05-13 23:48:32 +08:00
不好意思,我不是在线不回复(目前在外,家里电脑安装了扩展会定时获取未读消息就会一直在线了),刚知道消息,还是朋友告知的,没想到发酵这么厉害,针对上面的一些疑惑逐一解答:

1. 无论是扩展还是后端的代码都是开源的,先看代码再说嘛,如果要做偷鸡摸头的事情,其实没必要把代码开源、日志开放是吧?也写过几年代码,没有这么笨,如果有什么不舒服地方石锤就好,然后删掉扩展进行投诉。

2. 做这个事情的初衷很简单,vDaily 并不是今年才做的项目,扩展也默默服务了很多年,至少一直有个重构的想法,今年才抽出时间维护了一下重构了,之前也收到一些朋友咨询建议恢复 vDaily 。

3. 活跃度的进度条容易变黑是否和 vDaily 功能有关系?有一定的关系,但是主要的原因在于每几分钟查看一次未读消息,每次访问都会记录一点点活跃度,vDaily 获取的信息主要是当前浏览的主题基本内容(不含 cookie ,不含任何与用户相关的信息欢迎查看源码以及解压线上任何一个版本的扩展来质疑)获取完当前后可能会随机爬取几个主题,概率为 30%( https://github.com/sciooga/v2ex-plus-backend/blob/master/fastapi/tools.py#L68 )。

4. 是否会操作用户 cookie ?#140 举例的地方看得懂 python 的同学可以看看源码,是周报机器人自动登录后保存周报机器人需要的 cookie 为未来每周发帖使用的,无法操作前端,再次强调一下哈,前端没有操作任何 cookie 的地方,无法翻页的问题以及 502 的问题,大概率不是扩展导致的,也有很多没安装扩展的同学遇到了翻页 502 ,早两天还和站长沟通了这个情况 https://www.v2ex.com/t/937337

5. vDaily 加入扩展是 2.0.3 版本的时候,我看了下确实没有通知到大家这个功能是默认开启的,实在不好意思,但是通过上面的解释应该能明白这个功能只能爬取 v 站帖子的基础信息(没办法爬取站外的信息),同时也没有操作 cookie (需要操作 cookie 扩展就可以完成不需要后端支持),而且当时主要的目的是侧栏增加最近热门及高赞帖子的随机列表。对应的通知: https://github.com/sciooga/v2ex-plus/commit/2936025bf45b7b4b64a890a2e39443140b103f9a

6. goAccess 的访问是否是我们删除的?没有,这个服务确实不是很稳定时不时还需要手动启动用过的小伙伴应该知道,不想给大家看,连地址都不需要展示出来,欢迎监督。

7. 有小伙伴提到扩展是否允许自动化行为?这个也不好意思哈,开发这个扩展的时候我还在读书当时没注意这些功能是否违反规定,自动化的功能主要有:签到、检查新回复、检查关注者新主题(上了 cf ,2.0 无法实现,移除了),爬虫的工能是在浏览的时候提交当前页面的信息以及获取几个超过一定时间未更新的主题爬取更新( 30% 以内的概率)

目前在外地哈,后面会多留意消息,有什么疑问还可以 @ 我,我尽快回复,最后有朋友提到吃饭的问题,其实这个项目除了六年前有过几个月捐助二维码收入了几百块钱给了我很大的鼓励之外再也没有收入了,vDaily 的服务器也是热心朋友赞助的,我正在创业,时间似乎更加需要投入到非盈利的事情上,所以更新慢了很多,今年才抽出时间迭代,所以一切看源码不用质疑太多。
sciooga
2023-05-13 23:52:57 +08:00
@HFX3389 @ljsh093 @lran9527

@Xianmua 感觉帖子内关系的用户还是不少的,如果 OP 愿意 append 一下我回复的楼层那可能更好,谢谢了。
Xianmua
2023-05-13 23:56:26 +08:00
这位插件作者, 应该就是想要 v 站全站的数据,n 年前的数据都会爬取,貌似会遍历帖子 id 依次爬,这功能推出这么长时间了,v 站早被爬光了。刚看见这个功能的时候还犹豫了一下,多亏犹豫了一下,我也差点中招,这么多用户居然没人曝出来
Xianmua
2023-05-13 23:58:08 +08:00
@sciooga 你另开一帖吧,正式说下
sciooga
2023-05-14 00:03:57 +08:00
@Livid 实在不好意思,我在做这个功能之前也有考虑过会不会增加 V 站的压力,活跃度这块由于定时检查签到、未读消息每天已经固定有一定量的访问了(活跃度黑得很快),所以最开始我们向 sov2ex 的作者要了一份他爬取的存量数据,但是由于通过接口获取的数据没有主题和回复的数据信息( up 、点击量、收藏数、感谢数等)所以还是需要通过爬虫爬取 HTML 解析,由于我们扩展的用户量似乎不是很大 1W+ 所以在爬完历史数据后,我们不断的下调了爬取的任务数,感觉对 V 站的用户应该不会造成很大的影响,爬取的任务是浏览主题时第 1 、2 、3 分钟的时候如果标签页还打开时,每次会有 30% 的概率额外爬取一个信息,也就是浏览一个主题,最多会额外增加 3 个 get 请求。

很早以前煎蛋的站长也吐槽过很多新人拿煎蛋网练手造成了额外的压力,我们做这个小站点的初心很简单,平时比较忙又不想错过一些精彩的内容,所以爬爬主题做做排行,如果站长觉得这样确实不妥,我们也可以下线此站,谢谢。
pokon548
2023-05-14 00:06:03 +08:00
@Xianmua 刚刚仔细看了一下,确实是我误判了代码逻辑,@sciooga 抱歉带来错误的结论判断。
sciooga
2023-05-14 00:07:13 +08:00
@Xianmua #145 如果你是想把事情弄清楚,这个帖子热度很高 append 其实是很好的解决方案,也节约很多大家的时间,谢谢。
明天早上有空的话,我也会在周报内再次说明一下。
Xianmua
2023-05-14 00:09:42 +08:00
@sciooga 先不说爬虫对不对了,做周报有必要爬历史数据吗? n 年前的数据也会爬,想好了跟大家解释,不用回复我。
看我帖子里这张截图,那是 19 年的帖子,原链接在这,https://www.v2ex.com/t/589681 ,你爬这个是为了做周报??
sciooga
2023-05-14 00:13:45 +08:00
@Xianmua #149 因为不单单有周报,还有全站的排行,历史数据会随机提取一些到推荐内,所以历史数据更新会比较慢,最近的数据更新会快一些。
看你的语气倒是有不少怨气,大可不必,代码是开源的、项目也没有任何盈利,好好沟通可以把误会说清楚。
Xianmua
2023-05-14 00:15:03 +08:00
@sciooga 先别扣帽子,把干的事儿跟大家说清楚,别跟我交待
Xianmua
2023-05-14 00:43:56 +08:00
关于这个事儿我再说最后一段话,这个问题是这位作者的爬虫引起的,从来都不是我发的这篇帖引起的,不要把火往我身上引。
这个帖子已经很多层楼了,我也已经 append 了两次,图片很多内容很长,已经不便于阅读,我已经建议这位作者重新发一贴说明清楚,而不是按他说的,让我 append 他的话。

至于这位作者说的这句话,“这个帖子热度很高 append 其实是很好的解决方案,也节约很多大家的时间,谢谢”

我认为如果不存在分布式爬虫的功能,这个问题不可能存在,自然也就用不着什么解决方案。这个事情最后走向会怎样,永远不是我不“append”他的话导致的,不是我不“配合”他导致的,是他的分布式爬虫导致的,谢谢。
exhades
2023-05-14 00:47:39 +08:00
yxzblue
2023-05-14 01:26:39 +08:00
从不用这种第三方插件
sciooga
2023-05-14 01:28:08 +08:00
@Xianmua 好的,不早了早点休息吧。
分布式爬虫如果带来了什么问题,明天早上有时间我也会另外开贴说明的,谢谢你提出的问题,我认为开源项目有监督是在帮助项目做得更好。
Livid
2023-05-14 10:07:38 +08:00
@sciooga 所以,目前( 2023 年 5 月 14 日),插件的爬取行为依然还在继续,是吗?
Livid
2023-05-14 10:14:32 +08:00
@sciooga 如果这个插件确实会给 V2EX 的后端每天增加几十万次很可能没有命中缓存的请求(因为是历史内容),那对于网站性能是会有影响的。

如果你不打算解决这个问题的话,那我们只能想办法从后端来做防御了。你在给我增加我不想要的工作量。
Livid
2023-05-14 10:25:43 +08:00
谢谢大家,我需要大家的帮助:

https://www.v2ex.com/t/939839
sciooga
2023-05-14 10:31:45 +08:00
@Livid #157 因为我是今天凌晨才知道这个事,在半小时前(十点左右)已经停止了额外的请求。

扩展会获取当前浏览主题的信息(不会发起另外的请求),也会为了获取历史主题的信息发出额外请求( 30% 的情况),按扩展的活跃用户数量,之前每天估计有几万条请求在访问历史主题(现在已经停止)
Livid
2023-05-14 10:38:00 +08:00
@sciooga 所以,你可以通过你的服务器上的一个配置,来决定这个插件的用户是否跑抓取、及抓多少量?

你知道这听起来像是什么吗?

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

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

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

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

© 2021 V2EX