**如何使用speedtest-cli列出中国服务器节点?**
在使用 `speedtest-cli` 进行网络测速时,用户常常希望连接到地理位置更近的服务器(如中国的服务器节点)以获得更准确的测速结果。然而,默认情况下,`speedtest-cli` 会自动选择延迟最低的服务器,而不显示具体的国家信息。那么,如何手动列出中国境内的服务器节点呢?
要实现该目标,可以通过解析 `speedtest-cli` 提供的服务器列表接口,筛选出位于中国的服务器。具体步骤包括:使用命令获取完整服务器列表、结合 `jq` 或 Python 解析 JSON 数据,并过滤出国家为“China”的条目。此方法适用于需要精细化控制测速节点的高级用户和运维工程师。
1条回答 默认 最新
狐狸晨曦 2025-07-09 18:55关注一、初识 speedtest-cli 与服务器列表
speedtest-cli是一个广泛使用的命令行工具,用于测试网络带宽和延迟。它基于 Ookla 的 Speedtest.net 平台,能够自动选择最优服务器进行测速。然而,默认情况下
speedtest-cli# 获取完整服务器列表(JSON格式) speedtest --list-servers该命令输出的是按延迟排序的服务器列表,但并不包含国家字段。我们需要访问原始 JSON 数据来提取更多信息。
- 服务器列表接口地址:https://www.speedtest.net/api/js/servers?engine=js&platform=cli
- 支持参数:
?engine=js&platform=cli用于模拟 speedtest-cli 请求
二、获取并解析服务器列表数据
要获取完整的服务器信息,可以使用
curl或wget直接访问 Speedtest 提供的服务器列表接口:curl -s "https://www.speedtest.net/api/js/servers?engine=js&platform=cli"返回的数据为 JSON 格式,其中每个服务器对象包含以下关键字段:
字段名 描述 id 服务器唯一标识符 host 服务器地址(含端口) latency 延迟值(毫秒) country 服务器所在国家 city 城市名称 region 地区名称 isp 运营商名称 我们可以结合
jq工具对 JSON 数据进行过滤处理:curl -s "https://www.speedtest.net/api/js/servers?engine=js&platform=cli" | jq '.[] | select(.country == "China")'此命令将输出所有位于中国的服务器节点信息,便于进一步分析或指定测速目标。
三、使用 Python 实现高级筛选
对于需要更高灵活性的用户,可以使用 Python 脚本对服务器列表进行解析和筛选。
import requests import json url = "https://www.speedtest.net/api/js/servers?engine=js&platform=cli" response = requests.get(url) servers = response.json() china_servers = [s for s in servers if s['country'] == 'China'] print(json.dumps(china_servers, indent=2))上述脚本实现了如下功能:
- 通过
requests模块发起 HTTP 请求获取服务器列表; - 使用
json模块解析响应内容; - 通过列表推导式筛选出国家为 “China” 的服务器;
- 以格式化方式打印结果,便于阅读。
此外,还可以扩展脚本功能,例如根据城市、运营商等字段进一步细化筛选条件。
四、实际应用示例与流程图
在运维或自动化测试场景中,我们可能需要定期检查特定地区的网络性能。下面是一个典型的应用流程:
graph TD A[开始] --> B{是否安装speedtest-cli} B -- 否 --> C[安装 speedtest-cli] C --> D[获取服务器列表] D --> E[解析 JSON 数据] E --> F{是否存在中国节点} F -- 是 --> G[输出中国服务器列表] F -- 否 --> H[提示无中国节点] G --> I[结束] H --> I通过上述流程,系统可自动检测并列出中国地区的服务器节点,并作为后续测速任务的输入依据。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报