feat: 固定测速时长(下载/上传各10秒,负载按速率自适应填充)+ 移除前端 ipinfo/ipify 公网IP探测(服务器直识别)
This commit is contained in:
@@ -10,14 +10,13 @@
|
||||
## 功能特性
|
||||
|
||||
- ⚡ **延迟测试**: 前端连续 10 次 ping,取中位数作为延迟、平均绝对偏差作为抖动
|
||||
- ⬇️ **下载测试**: 自适应负载——单轮目标 ~2 秒、阶段最短 5 秒,负载从 1MB 起逐轮翻倍
|
||||
(上限 400MB),实时仪表盘,取最优值;慢速连接 1-2 轮即结束,快速连接自动加大负载
|
||||
- ⬆️ **上传测试**: 同样的自适应策略(1MB 起翻倍,上限 256MB),实时仪表盘,取最优值
|
||||
- ⬇️ **下载测试**: 固定测速 10 秒——负载根据实测速率自适应(每轮约 2 秒),
|
||||
快速连接自动加大负载填满 10 秒,慢速连接用小负载同样 10 秒内完成
|
||||
- ⬆️ **上传测试**: 同样的固定 10 秒自适应策略
|
||||
- 🏆 **排行榜**: 下载 / 上传 / 延迟 三个榜单各取 Top 10,公网 IP 打码(保留前 3 段);
|
||||
同时保存并展示**内网来源 IP**(服务器识别,NAT 环境下用于区分同一公网出口下的不同设备,方便站长调试)
|
||||
- 🌐 **公网 IP 识别**: 服务器位于 NAT 后(公网访问经路由器转发,服务器只能看到内网 IP),
|
||||
前端通过 ipinfo.io / ipify 探测真实公网出口 IP 用于展示与排行;内网 IP 在排行榜中标注
|
||||
"内网"
|
||||
内网来源 IP(NAT 场景)完整标注,方便站长调试区分同一出口下的不同设备
|
||||
- 🌐 **公网 IP 识别**: 服务器直接识别客户端真实 IP(Caddy `X-Real-IP`),
|
||||
不依赖任何外部 IP 查询服务;路由器单向伪装/公网直连时即为真实公网 IP
|
||||
- 🔒 **Unix socket 监听**: 由 Caddy 反代对外提供 HTTPS,不暴露 TCP 端口
|
||||
|
||||
## 项目结构
|
||||
@@ -113,7 +112,6 @@ speedtest.lmve.net {
|
||||
| POST | `/api/result` | 提交结果 `{latency_ms, jitter_ms, download_mbps, upload_mbps, client_ip?, server_ip?}` |
|
||||
| GET | `/api/rankings` | 排行榜(`download/upload/latency` 三榜 + `total`,含 `is_private_ip` 与来源 `server_ip`) |
|
||||
|
||||
客户端展示 IP 优先取前端探测的公网出口 IP(`client_ip` 字段),
|
||||
否则回退到 Caddy 注入的 `X-Real-IP`;`server_ip` 记录服务器看到的来源 IP
|
||||
(NAT 环境下为内网地址,排行榜中作为"来源"标注,供站长调试区分设备)。
|
||||
公网 IP 打码保护隐私,纯内网记录标注"内网"。
|
||||
客户端 IP 由服务器直接识别(Caddy 注入的 `X-Real-IP`),前端不调用任何外部 IP 服务;
|
||||
`client_ip` / `server_ip` 字段为 API 兼容保留(可选)。公网 IP 打码保护隐私;
|
||||
NAT 场景下的内网来源 IP 在排行榜中完整标注,供站长调试区分设备。
|
||||
Reference in New Issue
Block a user