网页偷跑上行宽带?小心被运营商当成PCDN限速!附完整解决方案
一、关于网页偷跑流量
起因是刷手机时看到有网友抱怨,挂斗鱼看直播被运营商当PCDN给管控限速了。

我也想起了自己之前遇到的怪事,只是打开网页看直播,明明没有下载、上传文件任务,后台却持续跑着不小的上行流量。
B站、斗鱼、腾讯视频这类视频直播网站,为了削减高昂的CDN服务器带宽成本,网页端会启用网页版 PCDN(P2P 内容分发)机制。
当我们在浏览器观看热门直播、视频内容时,电脑不仅仅是下载播放内容,浏览器可能还会在后台把已经缓存好的视频分片,发送给其他正在观看同一直播/视频的陌生用户,这部分转发数据就会消耗自家宽带的上行带宽。

这套网页 P2P 分发能力,底层WebRTC的RTCDataChannel实现浏览器与浏览器之间直连传输数据,不需要额外安装软件,网页脚本就可以直接调用浏览器接口建立P2P连接。

这种网页在后台偷跑上行带宽的小动作,可能会给我们带来各种麻烦。
首先就是可能导致本地网络体验变差。
像咱们使用的家用宽带一般是非对称带宽,上行带宽大多也就30-50Mbps左右,相当有限。
网页的P2P上传把上行带宽占满后,有时会造成网页打开慢、游戏延迟飙升、语音通话卡顿之类的问题,如果使用随身WiFi等流量套餐上网,还会产生流量异常消耗的多余支出。
另外,家庭宽带协议一般不允许把家用线路当作对外内容分发节点,为了封堵PCDN的口子,现在运营商会严格检测持续大流量上传的行为,网页长时间偷跑上行流量,有可能触发运营商的流量整形、限速等管控策略,严重时宽带账号会被限制使用。

这里顺带多说一句,视频网页与桌面客户端的偷跑策略不同,后者拥有独立的PCDN模块,不走浏览器WebRTC接口,本篇后面介绍的解决方案,对客户端无效。
二、解决网页偷跑上行带宽的方案
我们明白了网页偷跑上行来自WebRTC建立的P2P通道,那么解决思路就很简单了,浏览这类视频网站时,禁用WebRTC功能即可,而且借助浏览器扩展插件就可以轻松实现。
下面咱们先以Windows Edge浏览器来进行演示。
1.使用WebRTC Control插件
点击Edge浏览器右上角的插件按钮,选择「获取 Microsoft Edge 扩展」。

在扩展商店搜索框输入“WebRTC Control”,第一个搜索结果就是目标插件,直接完成安装:


这个插件的使用方法特别简单,点击工具栏插件图标,图标点亮即代表启用插件,浏览器WebRTC功能被禁用,再次点击图标灰色,WebRTC功能恢复正常。

下面我们来验证一下这个插件是否能起到作用。
我们随便打开B站的一个视频,点击WebRTC Control插件右侧的3个小点,然后选择”Test WebRTC Leak“,进入WebRTC泄漏检测页面:

关闭WebRTC Control时,检测结果为浏览器正在泄露WebRTC的IP地址,代表WebRTC功能正常可用,网页可以建立P2P连接。

启用WebRTC Control后,浏览器就不会泄露WebRTC IP地址了:

2.使用AdGuard插件实现防护
除了WebRTC Control插件外,大家喜闻乐见的AdGuard插件也自带WebRTC防护功能。
首先我们同样在Edge中搜索并安装「AdGuard 广告拦截器」:

点击工具栏AdGuard图标,打开设置齿轮按钮:

进入「跟踪保护」页面,打开跟踪保护总开关,页面滑到最下方,开启”通过 WebRTC 防止 IP 地址泄露“选项即可。

三、其他Chromium内核浏览器安装WebRTC Control
如果大家平时习惯用Chrome、360极速浏览器等同样基于Chromium的浏览器,那可能由于魔法网络等原因直接访问扩展商店下载WebRTC Control。
这种情况下我们可以采取曲线救国的方法,先使用Edge安装WebRTC Control插件,然后将其打包成crx文件,手动导入其他浏览器。
1.Edge打包插件
点击扩展按钮,打开「管理扩展」:

打开左侧「开发人员模式」,点击「打包扩展」:

浏览定位WebRTC Control插件的本地目录,插件目录路径一般为:
C:Users你的用户名AppDataLocalMicrosoftEdgeUser DataDefaultExtensions

插件 ID 可以在扩展详情页面查看,找到对应ID文件夹进入,继续打开版本号子文件夹,选中该文件夹作为扩展根目录。



进入0.3.5_0文件夹后,就可以点击右下角的”选择文件夹“了。

然后Edge会在会在插件目录生成*.crx`插件安装包和*.pem密钥文件,这两个文件要保存好。

2.导入其他Chromium内核浏览器
这里我以自己常用的360极速浏览器为例进行展示,首先点击右上角的”更多扩展“按钮:

接着依次点击右上角的头像图标,选择”我的扩展“:

勾选右上角的”开发者模式“后,直接将我们刚才打包的.crx文件拖进这个页面,即可完成安装。

这里得注意下,第三方导入的crx扩展,360极速浏览器默认会自动停用来源不明扩展。
需要在浏览器设置搜索“扩展”,取消勾选「自动停用来源不明的扩展」,避免重启浏览器插件失效。

这里限于篇幅,Chrome等其他浏览器的导入流程就不赘述了,总体上大差不差,思路都是一致的。
注意事项
本次分享的浏览器扩展插件,仅对网页端视频网站有效,斗鱼、腾讯视频等桌面客户端的PCDN不走浏览器 WebRTC,插件无法限制客户端上传流量。
WebRTC Control默认会在浏览器全局禁用 WebRTC,不是只针对视频网站,一些像是网页版视频会议、网页语音通话、网页直播连麦等依赖WebRTC的功能也会直接失效,遇到这类问题,临时关闭插件即可恢复正常。
另外禁用WebRTC之后,网页无法使用其他用户节点P2P加速,全部流量都来自官方CDN服务器,这种情况下在部分热门直播高峰期,有可能反而出现加载变慢、卡顿的情况。但对于上行带宽不足的用户来说,由于此时可以避免上行被占满,整体的网络体验可能反而会更流畅。
