如何在 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
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow