feat: 排行榜不再展示任何IP,用户列显示地区(ip2region v4 离线库)+浏览器(UA解析);IP仅后台保存,页面上方显示IP+地区
This commit is contained in:
@@ -14,10 +14,14 @@
|
||||
快速连接自动加大负载填满 10 秒,慢速连接用小负载同样 10 秒内完成
|
||||
- ⬆️ **上传测试**: 同样的固定 10 秒自适应策略
|
||||
- 🏆 **排行榜**: 单表同时展示延迟 / 下载 / 上传,**点击列头动态排序**(再点切换升降序,
|
||||
延迟默认升序、速度默认降序);测速完成后**自动高亮"我的成绩"**(含真实名次,
|
||||
localStorage 持久化,刷新页面仍高亮);公网 IP 打码,内网来源 IP 完整标注方便调试
|
||||
- 🌐 **公网 IP 识别**: 服务器直接识别客户端真实 IP(Caddy `X-Real-IP`),
|
||||
不依赖任何外部 IP 查询服务;路由器单向伪装/公网直连时即为真实公网 IP
|
||||
延迟默认升序、速度/时间默认降序);**用户列显示地区 + 浏览器**(离线 ip2region 解析地区、
|
||||
UA 解析浏览器系统),**不展示任何 IP**;测速完成后**自动高亮"我的成绩"**(含真实名次,
|
||||
localStorage 持久化,刷新页面仍高亮)
|
||||
- 🌐 **IP 处理**: 客户端 IP 仅后台保存(数据库),用于地区解析与调试,**不在排行榜展示**;
|
||||
页面上方徽标显示"你的公网 IP · 地区";服务器直接识别 IP(Caddy `X-Real-IP`),
|
||||
无外部 IP 查询依赖
|
||||
- 📍 **地区解析**: 内置 ip2region v4 离线库(`data/ip2region_v4.xdb`,11MB),纯本地解析
|
||||
零外部依赖,加载失败时地区优雅降级为"未知地区"
|
||||
- 🔒 **Unix socket 监听**: 由 Caddy 反代对外提供 HTTPS,不暴露 TCP 端口
|
||||
|
||||
## 项目结构
|
||||
@@ -107,11 +111,11 @@ speedtest.lmve.net {
|
||||
| 方法 | 路径 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| GET | `/` | 测速页面 |
|
||||
| GET | `/api/ping` | 延迟探测(返回 `{"pong":true,"ts":...,"client_ip":...}`) |
|
||||
| GET | `/api/ping` | 延迟探测(返回 `{"pong":true,"ts":...,"client_ip":...,"location":...}`) |
|
||||
| GET | `/api/download?size=N` | 下载测速,流式返回 N 字节随机数据(默认 10MB,上限 512MB) |
|
||||
| POST | `/api/upload` | 上传测速,接收请求体并返回 `received/elapsed_s/mbps` |
|
||||
| POST | `/api/result` | 提交结果 `{latency_ms, jitter_ms, download_mbps, upload_mbps, client_ip?, server_ip?}` |
|
||||
| GET | `/api/rankings?sort=&order=&include_id=` | 排行榜单表:`sort` ∈ download/upload/latency,`order` ∈ asc/desc,`include_id` 附加指定记录(真实名次 + `is_mine`) |
|
||||
| POST | `/api/result` | 提交结果 `{latency_ms, jitter_ms, download_mbps, upload_mbps}`(IP/UA 由服务器识别) |
|
||||
| GET | `/api/rankings?sort=&order=&include_id=` | 排行榜单表:`sort` ∈ download/upload/latency/created,`order` ∈ asc/desc,`include_id` 附加指定记录(真实名次 + `is_mine`);条目含 `location`/`browser`,**不含 IP** |
|
||||
|
||||
客户端 IP 由服务器直接识别(Caddy 注入的 `X-Real-IP`),前端不调用任何外部 IP 服务;
|
||||
`client_ip` / `server_ip` 字段为 API 兼容保留(可选)。公网 IP 打码保护隐私;
|
||||
|
||||
Reference in New Issue
Block a user