前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >DNS延迟测试脚本

DNS延迟测试脚本

原创
作者头像
Yawata的技术报告
修改2025-03-02 08:04:50
修改2025-03-02 08:04:50
2691
举报

在选择无污染DNS的过程中,免不了要对待选的DNS服务器进行延迟的测试,为了避免每次单独Ping一个地址,所以我整理了一个脚本,用于批量测试目标DNS服务器的延迟。

需要ping3依赖。保存为*.py文件,通过命令行运行,可替换IP地址为自己想要进行测速的DNS的IP地址,每个DNS的IP地址Ping次数为4,可根据自己需要在脚本中修改。

代码语言:txt
复制
import asyncio
from ping3 import ping
from concurrent.futures import ThreadPoolExecutor

# 定义要测试的地址列表
addresses = [
    "223.5.5.5",
    "8.8.8.8", "8.8.4.4",
    "1.1.1.1", "1.0.0.1",
    "9.9.9.9", "149.112.112.112",
    "94.140.14.14", "94.140.15.15",
    "45.90.28.0", "45.90.30.0",
    "208.67.222.222", "208.67.220.220",
    "77.88.8.8", "77.88.8.1",
    "185.228.168.9", "185.228.169.9",
    "172.104.93.80",
    "8.26.56.26",
    "84.200.69.80",
    "46.250.226.242",
    "2407:3640:2205:1668::1",
    "185.228.168.9",
    "185.228.169.9",
    "76.76.2.1",
    "78.47.212.211"
]

# 定义 Ping 测试函数
def test_ping(address):
    try:
        latency = ping(address, timeout=2)  # 设置超时时间为 2 秒
        if latency is not None:
            return address, round(latency * 1000, 2)  # 将秒转换为毫秒
        else:
            return address, "Failed"
    except Exception as e:
        return address, f"Error: {e}"

# 并发执行 Ping 测试
async def run_concurrent_ping():
    with ThreadPoolExecutor(max_workers=20) as executor:  # 设置最大并发数为 20
        loop = asyncio.get_event_loop()
        futures = [loop.run_in_executor(executor, test_ping, address) for address in addresses]
        results = await asyncio.gather(*futures)
        return results

# 主函数
async def main():
    print("Starting Ping tests...")
    results = await run_concurrent_ping()
    print("\nPing results:")
    print("-" * 40)
    print(f"{'Address':<20} {'Latency (ms)':<10}")
    print("-" * 40)
    for address, latency in results:
        print(f"{address:<20} {latency:<10}")

# 运行主函数
if __name__ == "__main__":
    asyncio.run(main())

更多国内外DNS服务的推荐,可以查看这篇文章:国内外DNS推荐列表 | Homelab Dolingou Network

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档