测速技术 高级
机场测速原理分析:stairspeedtest 与 FullTclash 是怎么测速的
拆解 Telegram 机场测速生态的底层原理,对比 stairspeedtest-reborn 与 FullTclash 的架构差异,讲清楚 TCP Ping、下载带宽、流媒体解锁是如何测出来的,以及用户侧测速与后端侧测速的区别和坑。
13 分钟 更新于 2026-05-14 内容可独立复现
一、Telegram 机场测速是什么
在 Telegram 的翻墙社区中,经常看到”机场测速”结果图,格式化展示每个节点的:
- 延迟 (Ping)
- 下载速度
- 上传速度
- UDP/Netflix/GPT 解锁情况
- 丢包率
这些测速通常由 Bot 自动完成,背后的核心工具主要有两个:
| 工具 | GitHub | Stars | 说明 |
|---|---|---|---|
| stairspeedtest-reborn | tindy2013/stairspeedtest-reborn | 3.8k+ | 经典测速工具,支持批量节点 |
| FullTclash | AirportR/FullTclash | 活跃 | 功能更全,支持流媒体解锁检测 |
二、测速工具架构
2.1 stairspeedtest-reborn 架构
┌─────────────────────────────────────────────────┐
│ stairspeedtest-reborn │
│ │
│ 1. 输入: 订阅链接 / 节点列表 / Clash 配置 │
│ ↓ │
│ 2. 解析: 提取所有节点信息 │
│ ↓ │
│ 3. 逐节点测试: │
│ ┌─────────────────────────────────────┐ │
│ │ 启动本地代理 (SS/V2Ray 客户端进程) │ │
│ │ ↓ │ │
│ │ 设置系统代理指向本地端口 │ │
│ │ ↓ │ │
│ │ 执行测速: │ │
│ │ - TCP Ping (连接延迟) │ │
│ │ - HTTP 下载 (speed.cloudflare.com)│ │
│ │ - 流媒体解锁检测 │ │
│ │ ↓ │ │
│ │ 记录结果,关闭代理进程 │ │
│ └─────────────────────────────────────┘ │
│ ↓ │
│ 4. 生成结果图片 (PNG) │
│ ↓ │
│ 5. 输出: 图片 / 文本 / JSON │
└─────────────────────────────────────────────────┘
2.2 FullTclash 架构(Telegram Bot 集成)
Telegram 用户
│ 发送订阅链接
▼
┌──────────────┐
│ FullTclash │
│ Telegram Bot │
└──────┬───────┘
│
▼
┌──────────────────────────────────────┐
│ 测速后端 │
│ │
│ 1. 解析订阅 → 提取节点列表 │
│ 2. 为每个节点启动 Clash 实例 │
│ (clash -f config.yaml -d .) │
│ 3. 并发测试: │
│ ├── ICMP/TCP Ping │
│ ├── 下载测速 (多线程 HTTP GET) │
│ ├── Netflix 解锁检测 │
│ ├── Disney+ 解锁检测 │
│ ├── ChatGPT 可用性检测 │
│ ├── YouTube Premium 检测 │
│ └── IP 归属地查询 │
│ 4. 汇总结果 → 生成图片 │
│ 5. 回复 Telegram 消息 │
└──────────────────────────────────────┘
三、核心测速原理
3.1 延迟测试 (Ping)
不是 ICMP Ping,而是 TCP 连接延迟或 HTTP 延迟:
TCP Ping:
1. 记录开始时间 T1
2. TCP connect() 到代理节点 IP:Port
3. 连接成功,记录时间 T2
4. 延迟 = T2 - T1
5. 断开连接
HTTP Ping (更准确):
1. 通过代理发送 HTTP HEAD 请求到 http://www.gstatic.com/generate_204
2. 记录从请求到收到 204 响应的时间
3. 这个延迟包含了: 代理握手 + TLS + 服务器路由延迟
3.2 下载测速
常用测速目标:
- speed.cloudflare.com/cdn-cgi/trace (Cloudflare)
- cachefly.cachefly.net/100mb.test (CacheFly CDN)
- speed.hetzner.de/100MB.bin (Hetzner)
测速流程:
1. 通过代理连接测速服务器
2. HTTP GET 下载测试文件
3. 多线程并发下载 (通常 4-8 个连接)
4. 记录总下载量和时间
5. 计算: 速度 = 总下载量 / 总时间
关键: 下载持续 10-15 秒,取稳定期的平均速度
3.3 上传测速
1. 生成随机数据块 (通常 1-10MB)
2. 通过代理 POST 到测速服务器
3. 记录上传时间
4. 速度 = 上传量 / 时间
3.4 流媒体解锁检测
核心原理:通过代理访问流媒体网站的特定接口,检查返回结果判断是否解锁。
# Netflix 检测原理
def check_netflix(proxy):
# 方法1: 访问非自制剧页面,看是否跳转
r = requests.get("https://www.netflix.com/title/81280792",
proxies=proxy, allow_redirects=False)
if r.status_code == 200:
return "全解锁" # 能看非自制剧
elif r.status_code == 403:
return "仅自制剧"
else:
return "不解锁"
# 方法2: 检查 Netflix API
r = requests.get("https://www.netflix.com/api/shakti/.../pathEvaluator",
proxies=proxy)
# 解析返回的 region 信息
# ChatGPT 检测原理
def check_chatgpt(proxy):
r = requests.get("https://chat.openai.com/", proxies=proxy)
if "Sorry, you have been blocked" in r.text:
return "封锁"
# 进一步检查: 访问 API 端点
r2 = requests.get("https://ios.chat.openai.com/", proxies=proxy)
# 解析支持的地区
# YouTube Premium 检测
def check_youtube_premium(proxy):
r = requests.get("https://www.youtube.com/premium", proxies=proxy)
# 检查页面中的地区信息和价格货币
# Disney+ 检测
def check_disney(proxy):
r = requests.get("https://www.disneyplus.com/", proxies=proxy)
# 检查是否跳转到不可用地区页面
3.5 IP 质量检测
检查项:
1. IP 归属地 (ipinfo.io / ip-api.com)
2. ASN 信息 (是否机房 IP / 住宅 IP)
3. 黑名单检查 (是否在 Spamhaus 等列表)
4. DNS 泄漏检查 (通过代理解析特定域名,看 DNS 出口)
四、并发与效率
4.1 串行 vs 并行
串行测试(stairspeedtest 早期):
节点1 → 等30秒 → 节点2 → 等30秒 → ... → 节点N
总时间 = N × 30秒
50 个节点 = 25 分钟
并行测试(FullTclash):
同时启动多个 Clash/Xray 实例,每个绑定不同端口:
端口 10001 → 节点1
端口 10002 → 节点2
...
端口 100XX → 节点N
并发度通常 5-10,总时间大幅缩短
50 个节点 / 并发10 = ~2.5 分钟
4.2 测速精度问题
| 影响因素 | 说明 |
|---|---|
| 测速服务器位置 | Cloudflare 全球 CDN,测的是到最近 CDN 节点的速度 |
| 测速时间 | 晚高峰 vs 凌晨,差距可能数倍 |
| 本机带宽 | 测速机的上行带宽是瓶颈 |
| 并发度 | 并发测速时节点之间互相抢带宽 |
| 代理开销 | 加密/解密的 CPU 开销 |
五、测速 Bot 搭建
5.1 FullTclash Bot 搭建
# 前置依赖
apt install -y python3 python3-pip git wget
# 克隆项目
git clone https://github.com/AirportR/FullTclash.git
cd FullTclash
# 安装依赖
pip3 install -r requirements.txt
# 下载 Clash 核心
# (需要 Mihomo/Clash.Meta 内核)
wget -O bin/clash https://github.com/MetaCubeX/mihomo/releases/latest/download/mihomo-linux-amd64
chmod +x bin/clash
# 配置
cp config.example.yaml config.yaml
编辑 config.yaml:
bot:
token: "你的Telegram Bot Token"
admin:
- 你的Telegram用户ID
clash:
path: "./bin/clash"
speedtest:
download_url: "https://speed.cloudflare.com/__down?bytes=104857600"
timeout: 15
concurrent: 8
python3 main.py
5.2 使用方式
在 Telegram 中向 Bot 发送:
/test https://你的订阅链接
Bot 自动:
- 拉取订阅 → 解析节点
- 逐节点/并发测速
- 检测流媒体解锁
- 生成结果图片
- 回复消息
六、测速结果解读
典型测速结果表格:
┌──────────────┬───────┬──────────┬──────────┬─────────┬──────────┐
│ 节点 │ Ping │ 下载速度 │ 上传速度 │ Netflix │ ChatGPT │
├──────────────┼───────┼──────────┼──────────┼─────────┼──────────┤
│ 🇭🇰 香港 01 │ 45ms │ 128Mbps │ 42Mbps │ 全解锁 │ ✓ │
│ 🇭🇰 香港 02 │ 52ms │ 95Mbps │ 38Mbps │ 仅自制 │ ✓ │
│ 🇯🇵 日本 01 │ 68ms │ 156Mbps │ 55Mbps │ 全解锁 │ ✓ │
│ 🇺🇸 美国 01 │ 180ms │ 78Mbps │ 22Mbps │ 全解锁 │ ✓ │
│ 🇸🇬 新加坡 │ 75ms │ 112Mbps │ 40Mbps │ ✗ │ ✓ │
│ 🇹🇼 台湾 01 │ 38ms │ 65Mbps │ 28Mbps │ ✗ │ ✗ │
└──────────────┴───────┴──────────┴──────────┴─────────┴──────────┘
关键指标解读:
| 指标 | 含义 | 参考标准 |
|---|---|---|
| Ping < 50ms | 优秀(亚洲近距离节点) | 游戏/实时通信 |
| Ping 50-100ms | 良好 | 日常使用 |
| Ping > 200ms | 较差 | 仅适合浏览 |
| 下载 > 100Mbps | 优秀 | 4K 视频无压力 |
| 下载 30-100Mbps | 良好 | 1080P 流畅 |
| Netflix 全解锁 | 能看所有地区内容 | IP 未被 Netflix 标记 |
| Netflix 仅自制 | 只能看 Netflix 原创 | IP 被标记为代理 |
七、原理总结
机场测速的本质是一个自动化代理节点批量质量检测系统:
- 订阅解析 — 把订阅链接转换成结构化的节点参数列表
- 代理启动 — 为每个节点启动独立的代理客户端实例
- 延迟测试 — TCP/HTTP Ping 测量端到端延迟
- 带宽测试 — 通过代理下载大文件测量吞吐量
- 功能检测 — 通过代理访问特定网站检查解锁/可用性
- 结果呈现 — 汇总数据生成可视化表格图片
技术门槛不高,核心在于:
- 如何稳定地启动/停止代理进程
- 如何准确地测量带宽(排除噪声)
- 如何判断流媒体解锁状态(跟着网站 API 变化更新)
#测速#FullTclash#stairspeedtest#技术
本文仅作技术原理科普,帮助读者理解代理协议与机场架构。请遵守所在地区法律法规,合理合规使用网络。
相关阅读
协议原理
主流翻墙协议对比:SS / VMess / VLESS / Reality / Trojan / Hysteria2
深入对比 Shadowsocks、VMess、VLESS、VLESS+Reality、Trojan、Hysteria2、TUIC 等主流代理协议的原理、加密、伪装策略、抗封锁能力与适用场景,帮你看懂机场用的是什么协议、值不值。
架构选购直连与中转机场详解:公网中转、BGP、IPLC/IEPL 专线怎么选
一文讲透直连、公网中转、BGP 中转、IPLC/IEPL 专线的链路区别、延迟稳定性、封锁风险与价格定位,并教你如何从延迟表现和 IP 归属判断机场真实架构、识破"虚标专线"。
架构选购2026 机场怎么选?避坑指南 + 选购清单
面对上百家机场如何挑到靠谱的那个?本文从架构、协议、落地、价格、跑路风险五个维度给出一份可操作的机场选购清单,并附上机场查查实测推荐,帮你少花冤枉钱、少踩坑。