我是 V2EX Plus 作者,关于扩展中 vDaily (分布式爬虫)功能的情况说明 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
sciooga
V2EX    程序员

我是 V2EX Plus 作者,关于扩展中 vDaily (分布式爬虫)功能的情况说明

  •  9
     
  •   sciooga
    sciooga 2023 年 5 月 14 日 15989 次点击
    这是一个创建于 997 天前的主题,其中的信息可能已经有所发展或是发生改变。

    凌晨的时候朋友告诉我 tg 有一些奇怪的消息,然后看到了主题 /t/939486 大概是对扩展爬取数据的一些疑问。

    针对疑问我整理一下:


    Q: 扩展的操作是否涉及灰产、黑产?

    A: 没有

    扩展的前后端代码都是开源的,同时一开始就把日志、请求分析、API 等各项内容开放,如果扩展有其他的偷鸡摸狗的行为欢迎石锤然后再投诉和删除。

    日志、API 、请求分析在 vDaily 最底部

    前端: https://github.com/sciooga/v2ex-plus

    后端: https://github.com/sciooga/v2ex-plus-backend

    目前扩展发布是 Github 配置的 CI 发布的,也欢迎解包线上代码对比是否和开源代码一致


    Q: 扩展是否能爬取 V 站之外的数据?

    A: 不能

    扩展有权限能访问的域名有三个: imgur 、v2ex 、weibo ,除此之外会触发跨域请求无法发出,可以看源码或者看浏览器内的扩展授权(部分 webkit 魔改浏览器可能会显示所有域名权限,可以解包查看对应代码)。


    Q: 是否会操作 Cookie ?

    A: 不会

    欢迎查看源码


    Q: 翻页 502 是否是扩展导致?

    A: 大概率不是

    因为没有操作 cookie ,同时也有非扩展用户遇到这种情况,早两天还也和站长沟通了这个情况 /t/937337


    Q: 是否会涉及到隐私?

    A: 不会

    扩展无论获取当前浏览还是历史主题,都只是获取主题公开信息然后提交,具体看源码,用户个人任何隐私数据都没有获取以及提交。 https://github.com/sciooga/v2ex-plus/blob/master/spider/index.js


    Q: 是否会导致活跃度快速到达黑条?

    A: 扩展会导致,但不只是 vDaily 功能

    扩展由于每几分钟会检查一次签到、未读消息,老版本还会检查关注的用户 /节点是否有新主题 /回复,这些才是导致活跃度增长的主要原因,vDaily 的工作逻辑是浏览一个主题可能(之前是 30% 目前是 0%)会附带 1-3 个请求历史帖子,这也会导致更多的活跃度增加


    Q: 为什么突然增加 vDaily 这个功能?

    A: 这也是 2.0 恢复的老功能

    vDaily 是一个很老的,大概五六年前的项目,之前的域名已经停止服务了,当时也是因为没有时间每天浏览 V 站,做了个爬虫爬取数据筛选精华方便看看错过的内容,后面由于没有维护停掉了几年,现在重写了加入了扩展侧栏做推荐。


    Q: 对用户、V 站造成什么额外的压力?

    A: 每个主题浏览都有可能附带 1-3 个额外的请求

    对于 V 站可能会产生一定量的未缓存的老主题请求,在站长的要求下已经关闭历史主题的抓取,对于用户会多消耗一些网络资源(仅加载 HTML ,图片、CSS 等不加载)


    Q: 为什么没有明确的告知?

    A: 是没有做好

    当时的通知过于简单 https://github.com/sciooga/v2ex-plus/blob/2936025bf45b7b4b64a890a2e39443140b103f9a/background.js#L28


    Q: 为什么默认开启?

    A: 我的错

    V 站用户需求还是很多的,扩展尽可能将大家的反馈都实现和改进,但是不少功能比较个性化,所以 2.0 大部分功能都有独立开关,至于是默认开启还是默认关闭,确实是由我决定的,这不好,以后的功能将默认都关闭。


    Q: 为什么要删除日志?

    A: 没有删除

    goAccess 的实时日志是由一个很脆弱的 websocket 实现的,昨天访问得多就挂掉了,这太正常了...然后今天早上我手动启动了之后就从启动时开始记录了,日志文件应该都在,有需要可以公布。


    目前扩展获取历史主题的功能也已经停掉了,项目仍然是开源的,前后端代码以及实时运行的日志、统计都是公开的,另外通过我们的 key 给我们发消息的朋友应该也明白这个功能并没有涉及到黑产灰产了吧?

    原图

    如果还有任何问题欢迎指正,开源项目得到大家的监督是很好的一件事,因为目前在外,看见消息会尽快回复。

    55 条回复    2023-05-15 19:08:49 +08:00
    iPhone11
        1
    iPhone11  
       2023 年 5 月 14 日
    貌似不是五次,很多次很快一页 不知道其他人的频率
    sciooga
        2
    sciooga  
    OP
       2023 年 5 月 14 日
    @iPhone11 #1 下面是源码,抱歉之前将 30 秒记错为 60 秒了,是你打开主题后会有最多额外 3 个请求,如果看了十秒就关闭,不会有额外请求,如果你停留超过 90 秒以上,最多可能会有 3 个额外请求
    https://github.com/sciooga/v2ex-plus/blob/master/spider/index.js#L160
    zyronon
        3
    zyronon  
       2023 年 5 月 14 日   3

    一直在请求。如图,7 分钟内请求了 23 次,差不多 20 秒请求一次

    默认设置,并不像你说的“A: 每个主题浏览都有可能附带 1-3 个额外的请求”
    sciooga
        4
    sciooga  
    OP
       2023 年 5 月 14 日
    @zyronon #3 因为你浏览了不止一个主题,每个主题的 tab 标签页还在的情况下会有额外的请求,但是你看的到的请求也不意味会爬取更多的数据(以前是 70% 以上返回空任务,现在是 100% 返回空任务),你看看会不会导致新的发向 V 站的请求就知道了
    chrawsl
        5
    chrawsl  
       2023 年 5 月 14 日   6
    V 站日常,情绪第一
    sciooga
        6
    sciooga  
    OP
       2023 年 5 月 14 日
    另外,vDaily 除了扩展内的推荐,还有机器人发送的周报比如这一期 t/939837 ,如果大家反感这样的行为,我们也会停止。
    ZeroClover
        7
    ZeroClover  
       2023 年 5 月 14 日   1
    开源不是给自己脱罪的理由,Ant Design 也是在开源的情况下引入了「彩蛋」,结果是什么?

    我只知道你的插件:
    1. 用用户的设备和网络干了远超最初描述之外的事情
    2. 可以远程下发命令
    goophy
        8
    goophy  
       2023 年 5 月 14 日
    v2ex-plus, version 2.10, 看起来从主题浏览开始,30 秒就 fetch 一个主题,页面不刷新会一直继续。
    附上开了插件和不开插件相同页面 10 分钟的记录

    <img src=https://imgur.com/FRsJInk>

    <img src=https://imgur.com/ygXpRlm>
    jas0n2k
        9
    jas0n2k  
       2023 年 5 月 14 日 via iPhone
    开源并不是为你干坏事开脱的借口
    goophy
        11
    goophy  
       2023 年 5 月 14 日
    我倒是一直用 v2ex-plus ,都挺好,除了最近看过的主题确实困扰了一下(很多都是我不关心也不会点开的),作者继续改进吧,我相信作者初衷倒也没啥坏心思。
    kingfalse
        12
    kingfalse  
       2023 年 5 月 14 日 via Android
    有权限能访问的域名有三个: imgur 、v2ex 、weibo ,
    那不就是可以抓微博了,
    sciooga
        13
    sciooga  
    OP
       2023 年 5 月 14 日
    @goophy #8 你好 pull_once 是 V 站自己的接口每隔一段时间访问一次,并不是扩展行为
    sciooga
        14
    sciooga  
    OP
       2023 年 5 月 14 日
    @ZeroClover #7 针对你反馈的亮点,我解释一下

    1. 远超最初描述之外的事情,这个我不清楚该这么定义,功能更新有通知(没告知默认开启是我们的问题),选项页有介绍以及单独的开关,后续的功能将默认关闭,按用户喜好开启。
    2. 远程下发命令(或者说主题 id 更明确)仅限于获取某个 v 站的主题数据,并非“肉鸡”概念,也做不到除了获取一个主题数据之外的操作。
    sciooga
        15
    sciooga  
    OP
       2023 年 5 月 14 日
    @kingfalse #12 你好,需要微博域名权限唯一做的是在 header 增加 referer ,因为微博已经开启了防盗链,只有加上 referer ,v 站内历史主题发布的微博图片才能正常显示。

    https://github.com/sciooga/v2ex-plus/blob/master/manifest.json#L65
    https://github.com/sciooga/v2ex-plus/blob/master/rules.json

    扩展是否可以爬取微博?项目内没有对应的代码,爬取微博的难度也比较大,在我看来真要爬取换个途径可能更简单
    ZeroClover
        16
    ZeroClover  
       2023 年 5 月 14 日
    @sciooga 既然你自己在主楼发了功能更新通知的代码,那我问问「增加 vDaily 推荐主题及评论,数据在不断完善,如需反馈欢迎 @sciooga 」这里面那个中文字可以解读出你加了个爬虫的意思?

    肉鸡不肉鸡不是你觉得,爬虫可以托管在你自己的服务器上,你用用户的网络来爬无非就是为了绕过 V2EX 的 IP 限制,你猜猜没通知站方并且采用绕过站方安全功能的行为可不可以送你进去?
    sciooga
        17
    sciooga  
    OP
       2023 年 5 月 14 日
    @ZeroClover #7
    @jas0n2k #9

    两位提到了开源是否让我脱“罪”的问题,也包括之前主题的 OP 也说到分布式爬虫存在的问题。

    我认为最大的问题在于没有明确告知用户该功能的开启,这个功能是参考 京价保 https://github.com/sunoj/jjb 的历史价格实现的(无意引火),用户浏览商品时会提交当前商品的价格和优惠信息,V2EX Plus 扩展内参考实现了这个功能,同时为了补全历史数据增加了爬取历史数据的功能。
    goophy
        18
    goophy  
       2023 年 5 月 14 日
    @sciooga 是的,pull_once 是不开启插件的 V2EX 自己发起的 i.imgur.com/FRsJInk.png

    第二个图是开启插件发起的 imgur.com/ygXpRlm.png
    sciooga
        19
    sciooga  
    OP
       2023 年 5 月 14 日
    @ZeroClover #16 爬虫不在我服务器上,用用户网络是因为维护爬虫的登录态比较麻烦(数年前 1.0 就是这样实现的),并不是绕过 IP 限制,V 站每天更新的主题数量并不多。
    Virexw
        20
    Virexw  
       2023 年 5 月 14 日 via iPhone
    早干嘛去了???事情没闹大就继续干呗
    Livid
        21
    Livid  
    MOD
    PRO
       2023 年 5 月 14 日   1
    关于翻页 502 。

    之前我们上了这样的一个功能,用 cookie 保存访问过的最后的页码。这样当你进入一个有多页的主题页面时,会直接进入到你最后访问过的页面。

    这个爬虫会让用户的这个 cookie 中增加大量用户没有访问过的页面的页码。

    至于是否是由于 cookie 尺寸过大造成的 502 ,因为我没有也不会去安装这个插件,所以我无法验证。

    这也是为什么遇到 502 问题的用户,清掉 cookie 之后就可以访问了。

    我们最近暂时把这个记住和跳转页码的功能下掉了。所以现在当你访问一个有多页的主题时,如果 URL 中没有指定 p=x 那么现在只会默认进入第一页。
    sciooga
        22
    sciooga  
    OP
       2023 年 5 月 14 日 via iPhone
    关于翻页 502 ,我补充一点,vDaily 功能上线是近期,之前我遇到时也查过 V 站以前的主题,一年以前就有反馈 /t/857753
    Xianmua
        23
    Xianmua  
       2023 年 5 月 14 日
    到现在为止,这个爬取历史主题的分布式爬虫 feature 还没有停掉,完全不像这个作者说的那样,“已经从服务器关闭下发任务了”
    我刚录了个屏,大家来看看吧。 @Livid ,也 @一下站长