list1234 发表于 2018-8-10 13:45:34

Python DNS处理模块

  模块:dnspython
  功能:

[*]  支持所有的记录类型
[*]  可以用于查询、传输并动态更新ZONE信息
[*]  支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)
  安装:
wget http://www.dnspython.org/kits/1.9.4/dnspython-1.9.4.tar.gz  
tar -zxvf dnspython-1.9.4.tar.gz
  
cd dnspython-1.9.4
  
python setup.py install
  dnspython提供一个DNS解析器类——resolver,使用query()方法来实现域名的查询功能模块域名解析方法:
  Query()方法使用:
import dns.resolver  
query(self,qname,rdtype=1,rdclass=1,tcp=False,source=None,raise_on_no_answer=True,source_port=0)
  rdtype用来指定RR资源的类型,常用的有如下几种:qname为查询的域名。

[*]  A记录,将主机名转换成IP地址
[*]  MX记录,邮件交换记录,用于定义邮件服务器的域名
[*]  CNAME记录,别名记录,实现域名间的映射
[*]  NS记录,标记区域的域名服务器及授权子域
[*]  PTR记录,反向解析,与A记录相反,将IP转换成主机名
[*]  SOA记录,SOA标记,一个起始授权区的定义
  rdclass用于指定网络类型,可选的值有:

[*]  IN,默认为IN
[*]  CH,
[*]  HS,
  tcp用于指定查询是否启用TCP协议
  source和source_port指定查询源地址与端口,默认查询设备IP和0
  raise_on_no_answer用于指定当查询无应答时,是否触发异常,默认为True
  A记录查询方法:
import dns.resolver  
dom=raw_input('输入域名地址:')
  
A=dns.resolver.query(dom,'A') # 指定查询类型为A的记录
  
for a in A.response.answer:   # 通过response.answer方法获取查询回应信息
  
    for b in a.items:         # 遍历回应信息
  
      print(b.address)
  MX记录查询方法:
import dns.resolver  
dom=raw_input('输入域名地址:')
  
MX=dns.resolver.query(dom,'MX')
  
for a in MX:
  
    print('MX 优先权:',a.preference,'mail 交换器:',a.exchange)
  NS记录查询方法:
import dns.resolver  
dom=raw_input('输入一级域名地址:')
  
NS=dns.resolver.query(dom,'NS')
  
for a in NS.respinse.answer:
  
    for b in a.items:
  
      print(b.to_text())
  CNAME记录查询方法:
import dns.resolver  
dom=raw_input('输入域名地址:')
  
cname=dns.resolver.query(dom,'CNAME')
  
for a in cname.response.answer:
  
    for b in a.items:
  
      print(b.to_text())
  DNS域名轮询业务监控:

  步骤:

[*]  实现域名的解析,获取域名所有的A记录解析IP列表
[*]  对IP列表进行HTTP级别的探测
页: [1]
查看完整版本: Python DNS处理模块