域名系统是有助于将特定服务器、计算机的 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