itdog 测速网站批量 Ping 节点爬虫脚本
绪言
itdog.cn 是一个专注于网络测试与分析的在线工具网站,适合IT专业人员和网络管理员使用。该网站提供了一系列工具,如在线Ping和Tcping测试,支持IPv4和IPv6,帮助用户从不同地区和路线检测网络连接情况。此项目是在我在忙碌的学业之路上写的一个批量爬取 itdog 网站 Ping 数据的爬虫。也许这个是我高中写的最后一个项目了吧?
我原来打算的是使用这个测速网站来自选 Cloudflare 节点的,不知道还有没有时间将这个项目和 ddgth 大佬的项目 cf2dns 联动起来。因为 ddgth 大佬的项目中的获取优质 Cloudflare 节点的算法是未开源的,而是通过请求网络 API 的方式从别的服务器获取 Cloudflare 节点。如果我学有余力,我会尝试去联动一下。ψ(*`ー´)ψ
更新
2024.11.16 由于 itdog 设置 Cookie 效验反爬,程序进行修改,并增加网站测速爬虫。
分析数据
我自己编写了一些爬虫,生成了一下 Cloudflare 的节点测速结果,放在目录 Cloudflare_Data 下,需要的同学或老师可以自行下载。


代码示例
你可以将 itdog_ping.py 作为模块导入,也可以直接修改该文件,总之要确保您可以调用到自定义函数 itdog_batch_ping 。
函数体如下:
def itdog_batch_ping(host, node_id, callback, cidr_filter=True, gateway="last", timeout=10):
"""
爬取 itdog 测速网站,批量 Ping 服务器。
:param host: 检测的IP地址,参考:域名或IPv4,每行一个,IP可填入范围和CIDR形式,可混合,最多支持256个检测目标 / 1万个字符。(传入列表,每一个项代表一行)
:param node_id: 节点ID,使用“,”分隔。参考:1274,1226,1282,1150
:param callback: 检测结果回调函数,回调函数应该提供一个参数,用于接收字典。参考字典:
{'ip': '检测的IP地址', 'result': '延迟', 'node_id': '节点ID', 'task_num': 99(任务数), 'address': '解析到的服务器地理位置'}
:param cidr_filter: 是否过滤CIDR格式中的网络地址、网关地址、广播地址,True 或 False,默认为 True
:param gateway: 最后一个是网关地址(last,默认) 还是 第一个是网关地址(first)
:param timeout: 最大等待服务器返回数据超时。
"""
简单调用:
itdog_batch_ping("1.0.0.1", "1274", lambda info: print(info))
你会获得输出:
{'ip': '1.0.0.1', 'result': '171', 'node_id': '1274', 'task_num': 1, 'address': 'Anycast/cloudflare.com'}
节点ID请参阅 view-source:https://www.itdog.cn/batch_ping/ 的源代码,文章末尾也会给出节点信息,不保证实时更新。






