开发者社区> 技术小美> 正文

Python DNS处理模块

简介:
+关注继续查看

模块:dnspython

功能:

  1. 支持所有的记录类型

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

  3. 支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)

安装:

1
2
3
4
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()方法使用:

1
2
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记录查询方法:

1
2
3
4
5
6
import dns.resolver
dom=raw_input('输入域名地址:')
A=dns.resolver.query(dom,'A'# 指定查询类型为A的记录
for in A.response.answer:   # 通过response.answer方法获取查询回应信息
    for in a.items:         # 遍历回应信息
        print(b.address)


MX记录查询方法:

1
2
3
4
5
import dns.resolver
dom=raw_input('输入域名地址:')
MX=dns.resolver.query(dom,'MX')
for in MX:
    print('MX 优先权:',a.preference,'mail 交换器:',a.exchange)


NS记录查询方法:

1
2
3
4
5
6
import dns.resolver
dom=raw_input('输入一级域名地址:')
NS=dns.resolver.query(dom,'NS')
for in NS.respinse.answer:
    for in a.items:
        print(b.to_text())


CNAME记录查询方法:

1
2
3
4
5
6
import dns.resolver
dom=raw_input('输入域名地址:')
cname=dns.resolver.query(dom,'CNAME')
for in cname.response.answer:
    for in a.items:
        print(b.to_text())

 

DNS域名轮询业务监控:

无标题.png



步骤:

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

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










本文转自Grodd51CTO博客,原文链接:http://blog.51cto.com/juispan/2050030,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python二进制通信:struct、array、ctypes模块比较
Python是一种广泛应用于数据处理和网络编程的语言。在与C语言或其他设备进行二进制通信时,Python需要使用一些专门的模块来转换数据格式。本文将介绍三个常用的模块:struct、array、ctypes,并从结构说明和性能分析两方面进行比较。
37 0
Python中logging模块用法
Python中logging模块用法
18 0
软件测试|带你了解Python正则表达式模块(二)
软件测试|带你了解Python正则表达式模块(二)
18 0
软件测试|带你了解Python正则表达式模块(一)
软件测试|带你了解Python正则表达式模块(一)
13 0
Python基础学习 -- 常用模块
Python基础学习 -- 常用模块
21 0
Python基础学习 -- 模块与包
Python基础学习 -- 模块与包
16 0
python小玩意——使用PIL模块将文本文字放在图片里面
python小玩意——使用PIL模块将文本文字放在图片里面
27 0
Python模块Typing.overload的使用
Python模块Typing.overload的使用
19 0
Python:jpype模块调用Java函数
Python:jpype模块调用Java函数
16 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
给运维工程师的Python实战课
立即下载
Python 脚本速查手册
立即下载
ACE 区域技术发展峰会:Flink Python Table API入门及实践
立即下载