python域名DNS、A记录等解析

1、使用dns.resolver包解析

需要先安装dnspython的包,下载地址为https://pypi.org/simple/dnspython/

获取域名对应的A记录的函数内容

import dns.resolver
 
def get_a_record(domain_name):
    address = []
    host_a = dns.resolver.query(domain_name, 'A')
    for i in host_a.response.answer:
        for j in i.items:
            address.append(j.address)
    return address

关于query函数,

query(self,qname,rdtype=1,rdclass=1,tcp=False,source=None,raise_on_no_answer=True,source_port=0)

其中qname参数就是我们要查询的域名,rdtype参数用来指定RR资源类型,可以将函数中的'A'修改为以下内容,获取域名其他的内容查询结果:
'A':    A记录,将域名名转换成IP地址
'MX':    MX记录,邮件交换记录,定义邮件服务器的域名
'CNAME':   CNAME记录,别名记录,实现域名间的映射
'NS':    NS记录,标记区域的域名服务器及授权子域
'PTR':    PTR记录,反向解析,与A记录相反
''SOA:    SOA记录,一个起始授权区的定义


2、使用nslookup命令查看

A记录
A记录是用来创建到IP地址的记录。
在命令行下可以通过nslookup -qt=a www.ezloo.com来查看A记录。


MX记录
在命令行下可以通过 nslookup -qt=mx ezloo.com 来查看MX记录。
mx 记录的权重对 Mail 服务是很重要的,当发送邮件时,Mail 服务器先对域名进行解析,查找 mx 记录。先找权重数最小的服务器(比如说是 10),如果能连通,那么就将服务器发送过去;如果无法连通 mx 记录为 10 的服务器,那么才将邮件发送到权重为 20 的 mail 服务器上。


CNAME记录
CNAME记录也成别名记录,它允许你将多个记录映射到同一台计算机上。当我们要指向很多的域名到一台电脑上的时候,用CNAME比较方便,就如上面的例子,我们如果服务器更换IP了,我们只要更换a.ezloo.com的A记录即可。
在命令行下可以使用nslookup -qt=cname a.ezloo.com来查看CNAME记录。


TXT记录
TXT记录一般是为某条记录设置说明,比如你新建了一条a.ezloo.com的TXT记录,TXT记录内容"this is a test TXT record.",然后你用 nslookup -qt=txt a.ezloo.com ,你就能看到"this is a test TXT record"的字样。
除外,TXT还可以用来验证域名的所有,比如你的域名使用了Google的某项服务,Google会要求你建一个TXT记录,然后Google验证你对此域名是否具备管理权限。
在命令行下可以使用nslookup -qt=txt a.ezloo.com来查看TXT记录。


AAAA记录
AAAA记录是一个指向IPv6地址的记录。
可以使用nslookup -qt=aaaa a.ezloo.com来查看AAAA记录。


NS记录
NS记录是域名服务器记录,用来指定域名由哪台服务器来进行解析。
可以使用nslookup -qt=ns ezloo.com来查看。


TTL值
TTL=time to live,表示解析记录在DNS服务器中的缓存时间。比如当我们请求解析www.ezloo.com的时候,DNS服务器发现没有该记录,就会下个NS服务器发出请求,获得记录之后,该记录在DNS服务器上保存TTL的时间长度。当我们再次发出请求解析www.ezloo.com 的时候,DNS服务器直接返回刚才的记录,不去请求NS服务器。TTL的时间长度单位是秒,一般为3600秒。


参考帖子:

1、dns.resolver的说明,http://blog.chinaunix.net/uid-28841896-id-4652377.html

2、nslookup命令说明,https://www.ezloo.com/2011/04/a_mx_cname_txt_aaaa_ns.html

展开阅读全文

没有更多推荐了,返回首页