My ISP Sucks
立即反馈

公开方法

我们如何判定

全部在浏览器内运行。除非你按下 分享报告,数据不会离开设备。下方逻辑完整——没有隐藏。

为什么不一样

Speedtest 只测一个近处服务器。这次测试检查近处路径、远处路径和你用的应用,并显示哪些正常、哪些不行。

Speedtest

My ISP Sucks

一次测试覆盖

一个近处服务器

一次测试覆盖

近处路径、远处路径、你的应用

下载、上传、延迟

有

下载、上传、延迟

有

流媒体、游戏、云

根据数字估计

流媒体、游戏、云

直接检查这些服务

哪些正常、哪些不行

不显示

哪些正常、哪些不行

显示

责任在谁

不指出

责任在谁

Wi‑Fi、运营商或某个服务

可以发送

一个数字

可以发送

一段投诉

与 Ookla 或 Speedtest 没有关联。

开始这次测试

1 · 我们测什么

四层,从设备向外:

本地网关 (preflight)

对最近 Cloudflare PoP 连续 10 次 HEAD(各 600 ms)。测丢包与抖动。≥2 次超时或 σ>30 ms → 路径不稳。

本国节点 (near)

按 IP 国家码匹配的本国 AWS S3。分数低 = 国内运营商或路由问题。

国际节点 (far)

全球 16 个 AWS S3 区域。near 正常而 far 差 = 国际出口问题。

画像服务 (profile)

对画像中的流媒体/游戏/云服务发 15–25 次 HEAD。发现 ping 看不到的对等与封锁。

2 · 节点健康分

每个节点 0(完美)到 1(损坏)。near 与 far 平均分开算。

score = 0.7 × (packetLoss / 100)
      + 0.3 × clamp((actualMs − expectedMs) / (expectedMs × 3), 0, 1)

expectedMs = max(10, distanceKm / 50)   ← speed-of-light RTT baseline

示例 — 特拉维夫 → 北弗吉尼亚(9 500 km)

expectedMs = max(10, 9 500 ÷ 50) = 190 ms

actualMs = 219 ms, packetLoss = 0 %

score = 0 + 0.3 × clamp((219 − 190) / (190 × 3), 0, 1) = 0.015 → 健康

nearScore < 0.25

Near:健康

farScore > 0.35

Far:触发规则 6

farScore > 0.45

Far:降级(5b)

3 · 服务离群

outlier if:  status = "fail"
         OR  status = "slow"  AND  latencyMs ≥ cohortMedian × 2.5

slow = probe latency above 1 000 ms
ok under that line is not an outlier

示例

Netflix 95 ms ✓ YouTube 88 ms ✓ Twitch 1 240 ms

cohortMedian = 88 ms → 1 240 ≥ 88 × 2.5 (220) → Twitch 为离群

4 · 规则链

先匹配先生效。结果页 DevTools → Console 可见每条规则。

1

离线

connectivity = fail, and no other check reached the internet

→ down / local_issue

2

本地路径不稳

Wi-Fi or cellular AND (preflight unstable OR jitter > 40 ms) AND farScore < 0.40

→ local_issue

3

DNS 故障

device is online AND dns = fail

→ isp_issue

4

特定服务离群

core healthy AND 1 ≤ outliers ≤ 40 % of services

→ service_issue

5

多数服务变差

core healthy AND badServiceFraction ≥ 50 %

→ isp_issue (peering)

5b

国际流量受阻

preflight loss = 0 AND nearScore < 0.25 AND farScore > 0.45 AND ≥ 3 far nodes

→ isp_issue (gateway)

6

核心 / far 降级

any test = fail OR farScore > 0.35

→ isp_issue

6b

轻度降级

any test = warn (no harder rule fired)

→ local_issue or isp_issue (medium)

✓

一切正常

→ healthy

5 · 套餐兑现

ratio = measuredDown / promisedDown

≥ 0.80  →  "As advertised"    ✓
≥ 0.50  →  "Underdelivering"  ~
 < 0.50  →  "Far below plan"   ✗

只标注报告——不改变责任方判定。

6 · 隐私

探测均在浏览器内。除非按下 分享报告.

分享内容:判定、分数、运营商、国家、接入方式。 不存储 IP 地址。