← 返回主页 网络测速与线路诊断
① 测速目标 ② 线路与节点 ③ 吞吐测试 ④ 原理与局限
1 测速目标
选择要诊断的目标。每个目标维护一份节点(线路)列表,选中后 ② 的节点表、判定与提示都按该目标的规则工作——测哪家就看哪家的说明。内置:B 站投稿线路(官方接口协议)、腾讯云直播链路(骨干延迟 + 直播域名节点诊断)、Cloudflare 基准、国内外连通对照;自定义站点保存在本机浏览器(localStorage),可为任何网站加测速。
2 线路与节点
对当前目标(在 ① 中选择)的每个节点做多轮延迟探测(含 DNS / TCP / TLS 的完整 HTTP 往返),按绝对阈值 + 站点内相对基线判定正常与否;支持上传探测的目标会同时测各节点吞吐;支持跳转的目标可一键打开对应链接(是否带参由目标定义决定,如 B 站会带线路参数直达投稿页)。每个目标的具体说明以 ① 的站点信息卡为准。
#节点 / 线路延迟 min / avg判定上传吞吐跳转
📏 判定标准:min < 100ms → ;min ≥ 400ms 或全部超时 → 异常偏慢 / 不可达;其余按站点内基线(全部节点 min 的中位数)比较,超过 2.5 倍判「偏慢」——这样同一站点内谁绕路一目了然。波动大(avg − min > 200ms)会附加提示,优先怀疑 Wi-Fi / 代理 / 丢包。上传「估算值,仅供参考」:速度数字是真实测出来的——数据确实从你网卡传出去了,只是目标节点不让页面查看它的"回执",所以叫估算。判断线路快慢完全够用;想要"服务器盖章确认"的准确值,用第 ③ 节的 Cloudflare 上传做对照。「拦截/跨域(0)」:连兜底通道都没发出去,说明这个节点对你的网络不可达——换其他节点即可(所有节点都这样,就先检查本机网络,或改用 https 访问本页)。
➕ 添加自定义站点 / 节点(保存在本机浏览器)
新站点:
提示:节点 URL 填任意能被 GET 访问的地址(主页、favicon、一个 1KB 文件都行)。自定义站点默认用宽松模式仅计时(不要求对方开放跨域)。
3 吞吐测试(上传 / 下载基准)
与站点无关的网络基准测试,默认走 Cloudflare 公共测速端点(全球就近节点、开放跨域)。用法:先在这里确认本机带宽是否正常,再回第 ② 节看目标站点各节点的相对表现——基准正常而站点节点慢 = 站点侧线路问题;基准也慢 = 本机上行/运营商问题
轮次耗时平均速率状态
💡 端点说明:上传端点需支持跨域 POST(Cloudflare __up 开放);下载端点需开放跨域读取(Cloudflare __down 开放)。换成自己的服务器 / 对象存储地址即可测到自建服务的链路质量;不开放跨域的目标只能用第 ② 节测延迟(宽松模式)。
⚠ 为什么测不了「到腾讯云直播」的上传/下载吞吐:直播推流是 RTMP/WebRTC 协议(不是 HTTP),浏览器无法向推流节点发送压测流量;拉流播放域名不开放跨域(也读不到流数据)。替代口径:① 本机上行是否够用 → 本节 Cloudflare 上传基准;② 到腾讯链路是否正常 → 第 ② 节「腾讯云直播 · 链路诊断」测延迟;③ 推流实际质量 → OBS 推流时看「设置 → 绞计」的丢帧率与实时码率(最权威口径)。
4 原理与局限
本页是一个多站点网络诊断框架:每个测速目标 = 节点列表 + 探测模式 + 跳转规则,选中谁就按谁的规则工作——测腾讯云直播时只看腾讯的节点与判定,B 站协议仅在测 B 站时相关。全部计算在浏览器本地完成,不上传任何数据到本站服务器
框架组成说明
站点(目标)一个待诊断的服务。内置:B 站投稿线路(官方 preupload 协议)、腾讯云直播链路(腾讯骨干延迟 + 直播域名节点诊断)、Cloudflare 基准(本机网络基线)、国内外连通对照(判断污染/绕路)。自定义站点存 localStorage,可为任何网站加测速。
节点(线路)一个可探测的 HTTP(S) 端点。来源三种:官方接口动态拉取(如 B 站 lines.json)、内置定义(腾讯骨干 / 对照组)、用户手动添加。
探测模式严格(CORS XHR,可校验状态码,节点需开放跨域)与宽松(no-cors 仅计时,任意网站可用)两种;上传/下载吞吐探测一律要求目标开放跨域。
判定口径延迟:min <100ms 优、≥400ms 异常、相对站点基线 >2.5× 判偏慢;上传:按最大档速率排序并折算带宽;下载:流式累计按截断时长折算;DNS 独立页另有污染检测(内网/保留 IP 告警)。
节点归属与调度腾讯云直播站点内置「直播域名节点诊断」:DoH 解析直播域名得调度 IP → 归属地(中文城市)+ PTR 节点主机名 → 与你的公网出口位置比对,判定是否就近调度、连接是否正常。
📎 附:B 站官方测速协议技术细节(preupload 结构——仅在测 B 站时相关,其他目标可忽略)
官方接口 / 结构作用与实现
GET /preupload?r=pingB 站测速页外壳:返回 HTML(Spectre.css + 加载动画 + #ping 结果表格容器),本身不是 API。
GET /preupload?r=ping&file=ping.js动态生成的测速脚本:拉取线路表 → 逐条线路串行执行探测 → 结果写入表格。失败约定 9999 秒,单请求超时 60 秒。
GET /preupload?r=ping&file=lines.json线路列表:字段 bref(线路名,与投稿页「上传线路」选项一致)、query(选中线路的参数,跳转链接即拼接它)、url(协议相对探测端点 //upos-*.bilivideo.com/OK)。本页「更新节点表」即拉取此接口,失败时回退内置快照。
延迟探测对节点发空 body 的 GET,从 send 到响应完成计时——含 DNS / TCP / TLS 握手的完整 HTTP 往返。官方仅 1 轮;本页支持多轮取 min/avg,并增加抖动与相对基线判定。
上传探测POST 二进制到 节点?line=大小。官方用常量字节填充;本页改用 crypto.getRandomValues 随机填充,避免被中间设备的压缩/缓存优化干扰,更接近真实上传。
⚠ 已知局限(为什么数字可能和别处不一样):
浏览器测速 ≠ 协议层测速:测的是 HTTPS 应用层吞吐,含 TLS 与浏览器协议栈开销,通常略低于 iperf3 / 运营商口径,属正常偏差;
跨域(CORS)限制:吞吐测试与严格模式延迟要求目标开放跨域;任意网站主页可用宽松模式延迟(仅计时,无法读状态码);
单连接测速:按官方同款单请求串行执行,跑不满 Speedtest 的多连接聚合值;直播推流与投稿上传恰是单/少连接场景,本页数字更贴近真实体验
「有哪些 CDN 节点」的可测范围:只有站点主动提供线路接口(如 B 站 lines.json)才能枚举节点;普通网站只能对已知域名做延迟探测——遇到 CDN 厂商名下节点接口可自行添加为自定义站点;
⑤ 测试期间会实际占用带宽,直播进行中请勿运行,会影响推流。
🛠 排障决策树(「上传/下载不够」照此排查):
① 第 ③ 节跑 Cloudflare 基准 → 正常(如上传 > 20 Mbps):带宽没问题,继续;也慢:本机上行不足 / 运营商限速 / Wi-Fi 干扰,换有线再测;
② 第 ② 节测目标站点节点 → 选判定最优的线路 → 用「跳转」按钮带参直达对应页面;
③ 目标全慢但基准正常:用「连通对照」区分国内/国际链路,或换手机热点对照定位互联质量问题;
④ 抖动大优先查 Wi-Fi、代理、QoS。