gpt4 book ai didi

python - 在 python 中,对逗号分隔的域名列表执行 DNS 查询的最有效方法是什么?

转载 作者:行者123 更新时间:2023-11-30 23:41:23 25 4
gpt4 key购买 nike

我想编写一个脚本来为我的缓存 DNS 服务器预取域名列表。我正在使用 Alexa 访问量最高的 1,000,000 个网站,可在此处查看:

http://s3.amazonaws.com/alexa-static/top-1m.csv.zip

如何编写一个 Python 脚本来读取此 CSV 文件并对列出的每个域名执行“nslookup”(或更有效的方式),也许每个查询之间会有轻微的延迟?或者有更好的方法吗?

我猜测逐行处理 CSV 比一次性读取所有内容更有效,以最大限度地减少内存使用。

具体来说,我正在寻找解决此问题的策略(库、工具等......)。示例代码值得赞赏,但不是必需的。

最佳答案

您可以完全坚持使用 python 标准模块,因为它们提供了您需要的一切。

open返回一个可迭代的文件对象(无需将整个文件加载到内存中),您可以使用如下代码:

from socket import gethostbyaddr 

with open('top-1m.csv') as input:
for line in input:
index, host = line.strip().split(',')
try:
output = gethostbyaddr(host)
print "%s %s is %s/%s" % (index, host, output[0], output[2])
except:
print host, "not found"

结果:

1 facebook.com is www-slb-10-08-prn1.facebook.com/['69.171.234.21']
2 google.com is fra07s07-in-f100.1e100.net/['209.85.148.100']
3 youtube.com is fra07s07-in-f93.1e100.net/['209.85.148.93']
4 yahoo.com is ir2.fp.vip.bf1.yahoo.com/['98.139.183.24']
baidu.com not found

我不会推荐 csv在这里,因为每行总是只有两个值。如果您需要处理诸如引号字符之类的内容或需要编写 csv 文件等,请使用它。

同时twisted也是一个很棒的网络模块,对于这样一个简单的任务来说有点大材小用了。只需使用 socket模块。

关于python - 在 python 中,对逗号分隔的域名列表执行 DNS 查询的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12055301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com