You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用dnspython获取并返回字符串格式的A记录IP地址?

解决dnspython返回对象而非字符串数组的问题

我来帮你搞定这个问题哈~你现在输出的是dns.resolver.Answer对象,是因为resolver.query()返回的不是直接的IP字符串集合,而是封装了DNS查询结果的对象。咱们只需要遍历这个对象,把每个A记录对应的IP提取出来转成字符串,就能得到想要的字符串数组啦。

修改后的可用代码

import dns.resolver

def resolveDNS():
    domain = "google.com"
    resolver = dns.resolver.Resolver()
    # 执行A记录查询
    answer = resolver.query(domain, "A")
    # 遍历结果,把每条记录转成IP字符串并存入列表
    ip_list = [str(record) for record in answer]
    return ip_list

resultDNS = resolveDNS()
print(resultDNS)

简单说明

  • dns.resolver.query()返回的Answer对象是可迭代的,每一项都是对应A记录的实例,直接转成字符串就能拿到IP地址
  • 用列表推导式快速把所有IP收集成字符串数组,返回后打印就能看到类似['142.250.185.14', '2607:f8b0:4005:806::200e']的结果(具体IP会根据你的网络环境变化)

另外提一句,如果你的dnspython是2.0及以上版本,官方推荐用resolver.resolve()替代query(),用法几乎一样,修改后的代码如下:

import dns.resolver

def resolveDNS():
    domain = "google.com"
    resolver = dns.resolver.Resolver()
    # 使用官方推荐的resolve方法
    answer = resolver.resolve(domain, "A")
    ip_list = [str(record) for record in answer]
    return ip_list

resultDNS = resolveDNS()
print(resultDNS)

这样就能完美得到你想要的字符串数组形式的IP结果啦~

内容的提问来源于stack exchange,提问作者None

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:19:20