怎样在示例 Python 程序中挖掘 DNS 记录

域名系统是有助于将特定服务器、计算机的 IP 地址转换为易于记忆的域名的命名系统。 Python 有一个名为 dnspython 的模块,它有助于获取几乎所有的记录类型。

一个域名的记录有很多种,用python可以查到 dnspython 模块。 使用 dnspython 模块提供的 dns.resolver() ,这是可能的。

查找域名记录

使用 dnspython 模块,您可以找到域名的记录类型。 记录类型有A、AAAA、NS、MX、TXT、CNAME、SOA等多种。 在这里,我们讨论了查找此类记录类型的 python 程序。 有关详细信息,请浏览文章末尾。

查找特定记录类型

要找到像 A 记录这样的特定记录类型,下面将讨论一个简单的 python 程序。 我们将编写python程序来检查域名的ip地址。 它是通过查找域的 A 记录来完成的。 如下所示检查 python 程序以获取更多详细信息。

$ sudo vim A_record.py

查找“A记录”的Python程序

import dnspython as dns

import dns.resolver

#To Find and print A record

result = dns.resolver.resolve('linuxways.net', 'A')

for val in result:

print('A record:', val.to_text())

就是执行上面的python程序找到一个域名的A记录后的输出。 在我们的例子中,我们使用“linuxways.net”作为域名。 检查如下所示的屏幕截图以获取更多详细信息。

$ python3 A_record.py

查找所有记录类型

如果您需要使用单个 python 程序查找和打印所有记录类型,有一种方法可以使用简单的 python 程序来完成。 您可以找到所有记录类型,例如 A、AAAA、NS、MX、TXT、CNAME、SOA 等。 有关详细信息,请检查程序代码,如下所示。

$ sudo vim DNS_records.py

查找所有记录的 Python 程序

import dnspython as dns

import dns.resolver

#To Find and print records

def get_x_record(domain_name, record_type):

try:

result = dns.resolver.resolve(domain_name, record_type)

for val in result:

if record_type=='CNAME':

print(f'{record_type} record: {val.target}')

else:

print(f'{record_type} record: {val.to_text()}')

except Exception as e:

print(f'{record_type} record: {e}')

domain_name="linuxways.net"

records = ['A', 'AAAA', 'TXT', 'MX', 'NS', 'SOA', 'CNAME']

for record in records:

get_x_record(domain_name, record)

如下所示,执行上述 python 程序查找特定域名的几乎所有记录类型后的输出。 在我们的例子中,我们使用“linuxways.net”作为域名。 检查如下所示的屏幕截图以获取更多详细信息。

$ python3 DNS_records.py

结论

在本文中,您学习了怎样通过使用 python 模块的简单 python 程序来挖掘 DNS 记录 dnspython. Python 程序可用于一次查找单个记录类型或域名的所有记录类型。 谢谢!