继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python DNS处理模块

慕田峪0738999
关注TA
已关注
手记 344
粉丝 88
获赞 494

模块:dnspython

功能:

  1. 支持所有的记录类型

  2. 可以用于查询、传输并动态更新ZONE信息

  3. 支持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为查询的域名。

  1. A记录,将主机名转换成IP地址

  2. MX记录,邮件交换记录,用于定义邮件服务器的域名

  3. CNAME记录,别名记录,实现域名间的映射

  4. NS记录,标记区域的域名服务器及授权子域

  5. PTR记录,反向解析,与A记录相反,将IP转换成主机名

  6. SOA记录,SOA标记,一个起始授权区的定义

rdclass用于指定网络类型,可选的值有:

  1. IN,默认为IN

  2. CH,

  3. HS,

tcp用于指定查询是否启用TCP协议

source和source_port指定查询源地址与端口,默认查询设备IP和0

raise_on_no_answer用于指定当查询无应答时,是否触发异常,默认为True

 

A记录查询方法:

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())

MX记录查询方法:

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)


NS记录查询方法:

import dns.resolver

dom=raw_input('输入域名地址:')

MX=dns.resolver.query(dom,'MX')

for a in MX:

    print('MX 优先权:',a.preference,'mail 交换器:',a.exchange)

CNAME记录查询方法:

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())

 

DNS域名轮询业务监控:

https://img.mukewang.com/5b23587600016e5e08750749.jpg



步骤:

  1. 实现域名的解析,获取域名所有的A记录解析IP列表

  2. 对IP列表进行HTTP级别的探测


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP