b 站网页端也会开启 PCDN? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
LnTrx
V2EX    程序员

b 站网页端也会开启 PCDN?

  •  3
     
  •   LnTrx 2024-03-31 23:02:52 +08:00 14412 次点击
    这是一个创建于 562 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近浏览网页时经常发现风扇在呼呼转,用系统任务管理器发现是 Chrome 在占用,用 Chrome 任务管理器确定是一个已经暂停的 b 站视频页面在大量占用 CPU 。通过调试暂停和性能分析发现了两个显眼的 js:

    https://s1.hdslb.com/bfs/static/pcdn-loader/reward-pcdn-loader-0.1.3.min.js
    https://s1.hdslb.com/bfs/static/pcdn-seeder/reward-seeder-1.2.0.min.js

    从名称和内容来看似乎与 PCDN 有关。但由于本人在这方面不够专业,希望有人可以分析一下这些代码到底在干什么,为什么会占这么多 CPU 。

    大量占用 CPU 情况的出现似乎有一定概率性。我这边打开一些较多人在看的视频、暂停放在那里干别的事情,等一会儿( 5~10 分钟)听到风扇响起来多半就复现了。也想了解大家是否能复现。
    67 条回复    2024-08-06 00:50:34 +08:00
    yyzh
        1
    yyzh  
       2024-03-31 23:08:11 +08:00 via Android
    会啊,特别是直播,人家没钱买正规 cdn 就只能这样干.
    LnTrx
        2
    LnTrx  
    OP
       2024-03-31 23:11:39 +08:00
    @yyzh 我本以为早就有人讨论过了,但大多集中在作为客户端用了 PCDN 而不是网页版作为服务端开启 PCDN 且占 CPU ,根据文件名基本没搜到什么信息。
    kome
        3
    kome  
       2024-03-31 23:43:29 +08:00
    在我禁止 B 站的 webrtc 之前, 本站的直播会占用至少 10M 的带宽去上传, 禁了 webrtc 就不上传了. 看视频也会解析到一些 PCDN, MCDN, 找了个 ADH 的策略把 B 站的 mcdn 等全拉黑了.
    pingdog
        4
    pingdog  
       2024-04-01 00:22:14 +08:00
    抖阴也有跑 PCDN ,随手抓几个都在滥用用户设备

    upnp stun webrtc,只要能连通外面都会打洞
    abcdxe2v
        5
    abcdxe2v  
       2024-04-01 00:23:48 +08:00
    我也有这个现象,暂停的视频标签页,却占用很多 cpu 。不过我用 devtool 的 performance 分析了好几次,都分析不出来原因(总是 System 最多)。
    jr55475f112iz2tu
        6
    jr55475f112iz2tu  
       2024-04-01 00:48:18 +08:00   11
    既然有这个脚本在,我相信缘起就是发现了网页端也会 PCDN 所以才会做这个脚本来应对
    https://greasyfork.org/zh-CN/scripts/415714-make-bilibili-great-again

    另外 b 站自己公开承认 PCDN 《 B 站降本利器 PCDN 的运维实践》
    https://www.bilibili.com/read/cv18619927/
    geekvcn
        7
    geekvcn  
       2024-04-01 01:42:56 +08:00
    装个 webrtc 控制插件,禁用 webrtc
    6388xE5FRKTNUT9x
        8
    6388xE5FRKTNUT9x  
       2024-04-01 01:52:32 +08:00
    感谢提醒,随手打开一个 B 站视频,开控制台再刷新就能看到 LZ 说的两个 JS 。
    abcdxe2v
        9
    abcdxe2v  
       2024-04-01 02:10:48 +08:00
    @abcdxe2v 研究了下 performance 使用方法,确实是
    https://s1.hdslb.com/bfs/static/pcdn-seeder/reward-seeder-1.2.0.min.js 里面一个 a 函数
    xixiv5
        10
    xixiv5  
       2024-04-01 02:12:03 +08:00   1
    Chrome 在设置里直接把 WebRTC 相关的全部关掉就行了
    gzlock
        11
    gzlock  
       2024-04-01 06:53:53 +08:00
    内网宽带也会被开启 pcdn 吗?
    anonymouswll
        12
    anonymouswll  
       2024-04-01 08:36:45 +08:00   1
    油猴内:
    delete window.RTCPeerConnection
    delete window.mozRTCPeerConnection
    delete window.webkitRTCPeerConnection
    delete window.RTCDataChannel
    delete window.DataChannel
    可以禁止下。

    B 站网页版还有应该严重的问题。 在 Mac 上的 Safari 中,打开 https://www.bilibili.com 首页不动或者滚动到底后不动,Safari 会卡死。 至今没找到具体原因。希望有人能告知。
    hyperbin
        13
    hyperbin  
       2024-04-01 08:47:46 +08:00 via Android
    假设有的话,说明通过网页就能在浏览器上启动一个 tcp-server ,连 node 都省了,服务器上装个浏览器就能提供服务了,显然不可能
    hyperbin
        14
    hyperbin  
       2024-04-01 08:49:19 +08:00 via Android
    @hyperbin 好吧,忘了还有 WEB RTC
    rekulas
        15
    rekulas  
       2024-04-01 08:50:31 +08:00   5
    就冲 b 站没广告还有很多干货这点,我倒不介意它这样做,也就占用我点冗余带宽和 cpu 而已,反正我自己也用不完
    如果人人都去限制,可能以后就没有没广告的 b 站了..
    wangtian2020
        16
    wangtian2020  
       2024-04-01 08:56:27 +08:00
    安装插件 WebRTC Control
    ff521
        17
    ff521  
       2024-04-01 09:25:56 +08:00
    @rekulas 问题关键是:运营商可能因为你上传流量超限而封停你宽带
    aino
        18
    aino  
       2024-04-01 09:29:45 +08:00
    这个技术学习一下 好像挺有趣
    wolfydw
        19
    wolfydw  
       2024-04-01 09:48:42 +08:00   4
    @rekulas 我特意上来回你一句:B 站即便是大会员,依然会有广告!!!!!!!
    zekeluii
        20
    zekeluii  
       2024-04-01 09:50:03 +08:00
    B 站海外 app 和站是有任何告的,不管是不是。
    incubus
        21
    incubus  
       2024-04-01 10:04:32 +08:00
    之前用 b 站看 LOL 比赛的时候也发现了这点,会有 1M 多点的上传速度,当时搜的油猴插件屏蔽这个
    aogu555
        22
    aogu555  
       2024-04-01 10:20:49 +08:00   2
    @rekulas b 站现在除了视频开头贴片广告外,其他地方广告哪里少了?
    rb6221
        23
    rb6221  
       2024-04-01 10:25:12 +08:00   1
    直接把浏览器全局的 webrtc 禁了就可以了,基本上任何视频和直播网站都能解决
    uliah
        24
    uliah  
       2024-04-01 10:27:51 +08:00
    @rekulas #15 非常抵触厂商的这些行为, 无论什么情况, 超额使用用户设备都应该征求用户同意,否则和肉鸡有什么区别。
    (B 站可以设置接受 PCDN, 收获额外的硬币).
    Shanky
        25
    Shanky  
       2024-04-01 10:30:06 +08:00   1
    b 站现在看个视频都有恰饭广告,动态广告,首页广告....
    大会员没有去广告功能 一样得看
    afeiche
        26
    afeiche  
       2024-04-01 10:44:05 +08:00
    这么说起来,前几天我的 edge 爆卡难道是 b 站引起的。。
    yleoer
        27
    yleoer  
       2024-04-01 10:47:31 +08:00
    我之前就发现观看 B 站,斗鱼的直播会有 1M/s 的上传,B 站的通过油猴脚本屏蔽了,但斗鱼的屏蔽不了
    blackmirror
        28
    blackmirror  
       2024-04-01 10:53:17 +08:00
    @rekulas 说得好像 B 站没广告一样,能干这事,其他破事肯定也能干
    nothingistrue
        29
    nothingistrue  
       2024-04-01 11:09:24 +08:00
    https://github.com/MotooriKashin/Bilibili-Old 这个已经被干碎了(技术手段屏蔽,政治手段不好说):对照 youku 屏蔽广告,就不要再去想什么破解手段了,让 B 站像 youku 那样好好的成为历史吧。
    nothingistrue
        30
    nothingistrue  
       2024-04-01 11:11:30 +08:00
    youku 好歹还是垄断之后才搞手段的,B 站也不知道哪来的底气。
    wildlynx
        31
    wildlynx  
       2024-04-01 11:13:20 +08:00
    我记得 CCTV 的网页,也会 PCDN
    Mxinx
        32
    Mxinx  
       2024-04-01 11:14:57 +08:00
    @rekulas 现在很多和 B 站签约的 UP 主都有视频内插播广告的需求吧, 别广告都是 UP 主接的 ,其实是 B 站接了之后分发给 UP 主的。广告费那么多 ,猜 B 站会不会眼红?
    rekulas
        33
    rekulas  
       2024-04-01 12:07:13 +08:00
    楼上各位指正的对,b 站还是有广告的,不过至少目前而言,我觉得 b 站的广告还是非常少了(未开会员),比起 youtube 优酷这种满天飞的体验好太多
    abersheeran
        34
    abersheeran  
       2024-04-01 12:16:31 +08:00 via Android
    同意楼上,没有视频开头的强制广告,我觉得闲置的带宽它用一用也无妨。不过我觉得还是要告知用户会比较好,最好能做成一个开关,像我们这样同意的才开启 PCDN 。慷他人之慨不可取。
    tunggt
        35
    tunggt  
       2024-04-01 13:01:24 +08:00
    @rekulas b 站的话,建议去 google play 下载海外版。ios 在非国区也可以下载到。别用国内版就行
    realJamespond
        36
    realJamespond  
       2024-04-01 13:11:35 +08:00
    mac b 站缓存特多 1 ,2 个 g ,yt 才 30m ,我现在都用 safari 上 b 站了
    MYDB
        37
    MYDB  
       2024-04-01 13:19:05 +08:00 via iPhone
    禁用 webrtc 来禁止上传,自写 ad 元素规则,视频/直播播放器只保留观看、评论、弹幕,其他元素全部删除
    threadcoat
        38
    threadcoat  
       2024-04-01 16:57:38 +08:00   1
    @rekulas b 站不是没有广告,b 站是每个视频都是广告
    rahuahua
        39
    rahuahua  
       2024-04-01 19:16:31 +08:00
    @aogu555 长视频不加片头广告很良心了
    mxT52CRuqR6o5
        40
    mxT52CRuqR6o5  
       2024-04-01 19:19:24 +08:00
    油管免费用户强制看广告可比 B 站扰人多了
    LiYanHong
        41
    LiYanHong  
       2024-04-01 19:20:53 +08:00
    @rekulas #15 没广告?视频里突然就猝不及防,不像 youtube 里正片会利益相关提示
    MrKrabs
        42
    MrKrabs  
       2024-04-01 20:39:46 +08:00
    批站盗版资源一堆,现在还要偷用户流量,那不是只有硬盘是自己的了?
    lyc8503
        43
    lyc8503  
       2024-04-01 21:00:33 +08:00
    @rekulas B 站很多低质量软广

    偷跑 PCDN 对两头的用户都不友好,上传方被偷跑流量,下载方视频体验差(可能会莫名其妙卡)
    nicoljiang
        44
    nicoljiang  
    PRO
       2024-04-01 21:32:04 +08:00
    @rekulas 现在 b 站的广告跟 ytb 可以提前关闭的那种贴片广告相比已经不遑多让了。
    Fred0410
        45
    Fred0410  
       2024-04-01 21:39:08 +08:00
    无所谓,本来上传就那么一点
    goodryb
        46
    goodryb  
       2024-04-01 21:48:53 +08:00
    你甚至都不用自己看代码,让通义千问分析了下

    这段代码是 Bilibili ( B 站)使用的“奖励播种器”( Reward Seeder )客户端脚本的一个压缩版本,其主要功能与平台的点播视频分发技术有关,特别是通过 WebRTC ( Web Real-Time Communication )实现用户间的 P2P ( Peer-to-Peer )数据传输。


    https://tongyi.aliyun.com/qianwen/share?shareId=45c75ef0-efab-4a35-a75a-ec1d052f2163
    ratmond
        47
    ratmond  
       2024-04-02 00:50:53 +08:00
    @anonymouswll 你这个脚本用这个网站 https://browserleaks.com/webrtc 测还是会泄露 IP ,我让 ChatGPT 写了一个:
    ```
    // ==UserScript==
    // @name Disable WebRTC
    // @namespace http://tampermonkey.net/
    // @version 1.0
    // @description Disable WebRTC to improve privacy
    // @author You
    // @match *://*/*
    // @grant none
    // @run-at document-start
    // ==/UserScript==

    (function() {
    'use strict';

    // Disable RTCPeerConnection to prevent WebRTC leaks
    window.RTCPeerCOnnection= function() {
    return null;
    };
    window.webkitRTCPeerCOnnection= function() {
    return null;
    };

    // Other WebRTC related components that could be disabled
    // Not all of these may be present or necessary to disable depending on the browser
    window.RTCSessiOnDescription= function() {
    return null;
    };
    window.RTCIceCandidate = function() {
    return null;
    };

    // Disable navigator.mediaDevices.getUserMedia to prevent camera and microphone access
    if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
    navigator.mediaDevices.getUserMedia = function() {
    return Promise.reject(new Error("UserMedia is disabled for privacy reasons"));
    };
    }
    })();
    ```
    GenericT
        48
    GenericT  
       2024-04-02 03:03:47 +08:00   1
    有些人有反思起来了,youtube 有贴片广告就没有视频内广告了? lttstore.comcs.money 真没见过?
    lovelive1024
        49
    lovelive1024  
       2024-04-02 09:12:41 +08:00
    @rekulas #15 把广告装作普通视频,连大会员有有广告,也就白嫖的觉得好了
    630071099
        50
    630071099  
       2024-04-02 10:06:56 +08:00
    原来如此,装了个插件试试来关闭:WebRTC Control
    ztmzzz
        51
    ztmzzz  
       2024-04-02 10:28:40 +08:00 via iPhone
    @rekulas 还没广告呢,把拦截插件关了,首页 6 个还是 8 个的推荐视频栏位,1 个就是广告。视频底下还有大横幅广告
    leaflxh
        52
    leaflxh  
       2024-04-02 13:10:33 +08:00
    这就是国内的网络运营商环境,凑合着用吧
    PeneceaQwQ
        53
    PeneceaQwQ  
       2024-04-02 17:12:38 +08:00
    @MYDB
    推荐个脚本,完全满足需求
    https://github.com/the1812/Bilibili-Evolved
    MYDB
        54
    MYDB  
       2024-04-02 17:46:42 +08:00 via iPhone
    @PeneceaQwQ 回错人了?自写 ad 规则秒杀一切脚本
    AV1
        55
    AV1  
       2024-04-03 00:00:53 +08:00
    我不明白呀,按道理 PCDN 应该吃流量,而不是吃 CPU 算力的,不应该造成 CPU 跑满风扇狂转的。
    这种现象更像是挖矿。
    VwEI
        56
    VwEI  
       2024-04-03 10:37:30 +08:00
    @kome 能分享一下规则嘛
    kome
        57
    kome  
       2024-04-03 11:55:25 +08:00
    @VwEI 我是直接用 ADH 阻止解析域名了, 对直播的上传有没有用就不清楚了, 我直接禁用了 webrtc. 自定义规则:
    ```
    ! 哔哩哔哩
    ||v1d.szbdyd.com
    ||mcdn.bilivideo.cn
    ```
    kome
        58
    kome  
       2024-04-03 12:02:06 +08:00
    @VwEI bilibili 还有一个域名在我这 30 天解析了 50 万次, 被 CHN:anti-AD 规则拦截, 规则主页 anti-ad.net
    Levox
        59
    Levox  
       2024-04-03 15:45:04 +08:00
    B 站有时候还疯狂吃内存,一个页面 5 、6 个 G ,卡的页面等待十几秒才能动。出现只能关闭再重开页面。
    VwEI
        60
    VwEI  
       2024-04-08 15:10:13 +08:00
    @kome 是具体哪个呢,我之前把常用的全放行了- -
    S179276SP
        61
    S179276SP  
       2024-04-15 00:00:05 +08:00 via Android
    话说我才发现韩国最大的直播网站 afreecate 如果不下载他的电脑客户端,只能看 480p 的画质,估计也是用了 pcdn
    palemoky
        62
    palemoky  
       2024-06-23 16:09:02 +08:00
    刚刚解决困扰我很久的 B 站卡顿问题,解决方法很简单,只需要把以下两个域名拦截即可,完全不需要屏蔽 WebRTC
    1. http://data.bilibili.com (用户分析数据上报)
    2. http://hdslb.com ( PCDN ,只屏蔽这个也可以)

    P.S. 装上油猴脚本 Make BiliBili Great Again 体验更佳
    palemoky
        63
    palemoky  
       2024-06-23 23:05:38 +08:00
    @palemoky 直接屏蔽 hdslb.com 会导致搜索和文章页面样式无法加载,可以在 Make BiliBili Great Again 中加入以下内容来解决:
    ```Javascript
    !function () {
    const allowedDomain = 's1.hdslb.com';

    // 拦截 fetch 请求
    const oldFetch = unsafeWindow.fetch;
    unsafeWindow.fetch = function (url, ...args) {
    if (typeof url === 'string' && url.includes('.hdslb.com') && !url.includes(allowedDomain)) {
    return Promise.reject(new Response('拦截的请求', { status: 403 }));
    }
    return oldFetch.call(this, url, ...args);
    };
    }();
    ```
    wanzhuan85
        64
    wanzhuan85  
       2024-06-27 00:22:50 +08:00
    @palemoky #63 没搞懂怎么弄,可以教教吗?用什么软件拦截这两个域名?
    palemoky
        65
    palemoky  
       2024-07-02 18:11:57 +08:00   1
    @wanzhuan85 你 Chrome 有 TamperMonkey 插件吧?然后把链接中的这段代码粘进去应该就可以了。
    https://codefile.io/f/A5mn0LACWf

    相比原版,我修改了两处:
    1. 第 7 行 https://www.bilibili.com/* 改为 https://bilibili.com/*
    2. 增加了 315 行的函数
    wanzhuan85
        66
    wanzhuan85  
       2024-07-07 12:34:14 +08:00
    @palemoky #65 非常感谢,这个代码修改得很好,之前我要配合拦截广告去拦截这两个域名,结果就是只能看到直播界面,其他右边弹幕那些都会被拦截掉,现在就非常的正常了,就很完美。
    Leao9203
        67
    Leao9203  
       2024-08-06 00:50:34 +08:00
    @DOLLOR 并不是,如果 PCDN 只是对应一两个连接数,那确实没什么影响。但是连接数多了,CPU 占用率必上去啊...不然为什么针对纯 Nginx 、Apache 网站的攻击仍然会生效呢?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2437 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 15:51 PVG 23:51 LAX 08:51 JFK 11:51
    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