如何在 Python 中查询特定域名服务器的 DNS

在网络中,你有时需要使用特定域名服务器解析主机名,无论是出于测试目的还是因为某些主机名只能在内部解析。

这可以使用 dnspython 完成,你可以使用 pip install -U dnspython 安装它。

以下示例说明了执行查询的最简单方法。

how-to-dns-query-specific-nameservers-in-python.py
import dns.resolver

def dns_query_specific_nameserver(query="techoverflow.net", nameserver="1.1.1.1", qtype="A"):
    """
    查询特定域名服务器的:
    - 给定主机名的 IPv4 地址 (qtype="A")
    - 给定主机名的 IPv6 地址 (qtype="AAAA")

    返回 IP 地址作为字符串
    """
    resolver = dns.resolver.Resolver(configure=False)
    resolver.nameservers = [nameserver]
    answer = resolver.resolve(query, qtype)

    if len(answer) == 0:
        return None
    else:
        return str(answer[0])

# 注意:可能抛出 dns.resolver.NXDOMAIN、dns.resolver.NoAnswer 或类似异常

# IPv4 使用示例
dns_query_specific_nameserver(qtype="A") # e.g. '172.67.166.211'
# IPv6 使用示例
dns_query_specific_nameserver(qtype="AAAA") # e.g. '2606:4700:3035::ac43:a6d3'

Check out similar posts by category: Networking, Python