普通网友 2025-07-09 18:55 采纳率: 97.8%
浏览 7
已采纳

问题:如何使用speedtest-cli列出中国服务器节点?

**如何使用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 请求

    二、获取并解析服务器列表数据

    要获取完整的服务器信息,可以使用 curlwget 直接访问 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))
    

    上述脚本实现了如下功能:

    1. 通过 requests 模块发起 HTTP 请求获取服务器列表;
    2. 使用 json 模块解析响应内容;
    3. 通过列表推导式筛选出国家为 “China” 的服务器;
    4. 以格式化方式打印结果,便于阅读。

    此外,还可以扩展脚本功能,例如根据城市、运营商等字段进一步细化筛选条件。

    四、实际应用示例与流程图

    在运维或自动化测试场景中,我们可能需要定期检查特定地区的网络性能。下面是一个典型的应用流程:

    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

    通过上述流程,系统可自动检测并列出中国地区的服务器节点,并作为后续测速任务的输入依据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 7月9日