iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python3之DNS处理模块dnspy
  • 871
分享到

python3之DNS处理模块dnspy

模块DNSdnspy 2023-01-31 01:01:01 871人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

dnspython(Http://www.dnsPython.org/)是Python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩

dnspythonHttp://www.dnsPython.org/)是Python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)。在系统管理方面,我们可以利用其查询功能来实现DNS服务监控以及解析结果的校验,可以代替nslookup及dig等工具,轻松做到与现有平台的整合。
dnspython模块提供了大量的DNS处理方法,最常用的方法是域名查询。dnspython提供了一个DNS解析器类—resolver,使用它的query方法来实现域名的查询功能。query方法的定义如下:
query(self, qname, rdtype=1, rdclass=1, tcp=False, source=None, raise_on_no_answer=True, source_port=0)
其中,qname参数为查询的域名。rdtype参数用来指定RR资源的类型,常用的有以下几种:
A记录,将主机名转换成IP地址;
MX记录,邮件交换记录,定义邮件服务器的域名;
CNAME记录,指别名记录,实现域名间的映射;
NS记录,标记区域的域名服务器及授权子域;
PTR记录,反向解析,与A记录相反,将IP转换成主机名;
SOA记录,SOA标记,一个起始授权区的定义。
rdclass参数用于指定网络类型,可选的值有IN、CH与HS,其中IN为默认,使用最广泛。tcp参数用于指定查询是否启用TCP协议,默认为False(不启用)。source与source_port参数作为指定查询源地址与端口,默认值为查询设备IP地址和0。raise_on_no_answer参数用于指定当查询无应答时是否触发异常,默认为True。

常见解析类型示例说明
常见的DNS解析类型包括A、MX、NS、CNAME等。利用dnspython的dns.resolver. query方法可以简单实现这些DNS类型的查询,为后面要实现的功能提供数据来源,比如对一个使用DNS轮循业务的域名进行可用性监控,需要得到当前的解析结果。下面一一进行介绍。

import dns.resolver
domain = input('请输入域名地址')
请输入域名地址www.baidu.com
# (1) A记录, 将主机转换为IP地址
A= dns.resolver.query(domain,'A')
for i in A.response.answer:
    for j in i.items:
        if j.rdtype == 1:
            print (j.address)
print(A)
print(i)
print(i.items)
print(j)
print(j.rdtype)
print(j.address)
print( A.response.answer)
print(dns.resolver.query('www.baidu.com','A'))
220.181.112.244
220.181.111.188
<dns.resolver.Answer object at 0x7f1b2013b940>
www.a.shifen.com. 138 IN A 220.181.112.244
www.a.shifen.com. 138 IN A 220.181.111.188
[<DNS IN A rdata: 220.181.112.244>, <DNS IN A rdata: 220.181.111.188>]
220.181.111.188
1
220.181.111.188
[<DNS www.baidu.com. IN CNAME RRset>, <DNS www.a.shifen.com. IN A RRset>]
<dns.resolver.Answer object at 0x7f1b201fcc88>
# 简化
A= dns.resolver.query(domain,'A')
for i in A.response.answer:
    for j in i:
         if j.rdtype == 1:
                print (j)
123.125.115.110
220.181.57.216
# (2)MX记录 (邮件交换记录,定义邮件服务器的域名)
mx= dns.resolver.query('163.com','MX')
for i in mx.response.answer:
    for j in i:
        print (j)     
10 163mx01.mxmail.netease.com.
10 163mx02.mxmail.netease.com.
10 163mx03.mxmail.netease.com.
50 163mx00.mxmail.netease.com.
# (3)ns 记录 (标记区域的域名服务器及授权子域) 只限输入一级域名
ns= dns.resolver.query('baidu.com','NS')
for i in ns.response.answer:
    for j in i:
        print (j)              
ns7.baidu.com.
ns2.baidu.com.
ns3.baidu.com.
ns4.baidu.com.
dns.baidu.com.
# (4) CNAME记录 (指别名记录,实现域名间的映射)
cname= dns.resolver.query('www.uwintech.cn','CNAME')
for i in cname.response.answer:
    for j in i:
        print (j)     
www.uwintech.cn.s.sxldns.com.
def dns_query(domain,type):
    try:
        A=dns.resolver.query(domain,type)
        for i in A.response.answer:
            for j in i:
                print (j)
    except dns.resolver.NoAnswer:
        print(domain+' 此域名,DNS未响应!')

dns_query('baidu.com','NS')
dns_query('baidu.com','A')
dns_query('163.com','MX')
dns_query('163.com','CNAME')
dns_query('www.uwintech.cn','CNAME')
ns4.baidu.com.
dns.baidu.com.
ns7.baidu.com.
ns2.baidu.com.
ns3.baidu.com.
220.181.57.216
123.125.115.110
10 163mx02.mxmail.netease.com.
10 163mx03.mxmail.netease.com.
50 163mx00.mxmail.netease.com.
10 163mx01.mxmail.netease.com.
163.com 此域名,DNS未响应!
www.uwintech.cn.s.sxldns.com.
#!/usr/bin/env python
import dns.resolver

domain = raw_input('Please input an domain: ')    #输入域名地址
A = dns.resolver.query(domain, 'A')    #指定查询类型为A记录
for i in A.response.answer:    #通过response.answer方法获取查询回应信息
    for j in i.items: #遍历回应信息
            if j.rdtype == 1: 
                print j.address 

--结束END--

本文标题: python3之DNS处理模块dnspy

本文链接: https://www.lsjlt.com/news/184784.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python3之DNS处理模块dnspy
    dnspython(http://www.dnspython.org/)是Python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩...
    99+
    2023-01-31
    模块 DNS dnspy
  • Python3之模块、包
    一、模块 1.模块的导入方式 import random,time #导入多个模块 #使用,如:random.randint(1,10) #使用,如:time.sleep(1) from random import randin...
    99+
    2023-01-31
    模块
  • python处理excel文件之xlsxwriter 模块
    目录模块基本使用写入更多样式数据其余样式扩展xlsxwriter 中的 write 方法xlsxwriter 关闭文件其它需要了解的方法xlsxwriter 模块的优缺点优点缺点模块...
    99+
    2024-04-02
  • nodejs之域名解析模块DNS的简介
    这篇文章将为大家详细讲解有关nodejs之域名解析模块DNS的简介,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。工作原理  打开浏览器,在上方地址栏输入网址的那一刻,这个回车按了之后,发生了很多事情。首先...
    99+
    2023-06-06
  • Python之异常处理、模块与包
    MarkdownPad Document程序中错误分成两种语法错误:过不了Python解释器逻辑错误异常处理什么是异常处理Python解释器检测到错误,触发异常,在发生异常时捕捉异常,如果捕捉成功则进入另外一个处理分支,是程序不会崩溃,这就...
    99+
    2023-01-31
    模块 异常 Python
  • ASP.NET的HTTP模块和处理程序之HTTP模块怎么用
    这篇文章给大家分享的是有关ASP.NET的HTTP模块和处理程序之HTTP模块怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在配置文件中注册HTTP模块当我们建立了HTTP模块并把它复制到Web应用程序的b...
    99+
    2023-06-17
  • Python3 json模块之编码解码方法讲解
    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,这些特性使J...
    99+
    2024-04-02
  • Python文件处理、os模块、glob模块
    目录一、文件基本的操作1、open() 打开文件2、read() 读文件3、write()写文件:4、with open()方法二、文件的打开模式1、文件r打开模式1、读文本2、读字...
    99+
    2024-04-02
  • python日志处理模块
    1 日志级别 日志级别level 数值 CRITICAL 50 ERROR 40 WARNING 30 ,默认日志级别 INFO 20 DEBUG 10 NOTSET 0,表示不设置 日志级别是指...
    99+
    2023-01-31
    模块 日志 python
  • Python Excel数据处理之xlrd/xlwt/xlutils模块详解
    目录1、模块说明2、xlrd处理3、xlwt处理4、xlutils处理常规的Excel数据处理中,就是对Excel数据文件的读/写/文件对象操作。 通过对应的python非标准库xl...
    99+
    2023-03-21
    Python Excel数据处理模块 Python Excel数据处理 Python Excel
  • Python视频处理模块之moviepy的用法教程
    目录楔子moviepy 的简单使用视频截取音量调整在视频上添加文字获取视频属性视频合成修改视频属性视频音频合成楔子 随着自媒体时代,现在对视频的处理变得越来越常见。我们可以使用 Ad...
    99+
    2024-04-02
  • Node.js怎么处理ES6模块
    这篇文章将为大家详细讲解有关Node.js怎么处理ES6模块,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、两种模块的差异ES6 模块和 CommonJS 模块有很大的差异。语法上面,CommonJS ...
    99+
    2023-06-15
  • JSP(12) - 商品处理模块
    该模块基本上为 进货模块(http://blog.itpub.net/post/334/32287)的反过程。[@more@]dispose_bef.jsp: 进货 ...
    99+
    2023-06-03
  • python的datetime模块处理时
    python的datetime模块主要用来处理时间,里面包含很多类,包括timedelay,date,time,datetime等 开发中经常会用到模块里面的datetime类,这是一个表示日期时间的类。 1.创建一个新的datetime...
    99+
    2023-01-30
    模块 python datetime
  • python3中_from...import...与import ...之间的区别详解(包/模块)
    目录前言1.import ...2.from ... import ...3.引用也有区别4.引用优化总结前言 【以下说明以tkinter模块为例进行说明】 【下图为安装后在pyth...
    99+
    2024-04-02
  • Vue Element前端应用开发之用户管理模块的处理
    目录1、权限管理模块的设计2、用户管理界面功能1、权限管理模块的设计 我们知道,权限管理一般都会涉及到用户、组织机构、角色,以及权限功能等方面的内容,ABP框架的基础内容也是涉及到这...
    99+
    2024-04-02
  • Python Excel数据处理之xlrd/xlwt/xlutils模块怎么使用
    常规的Excel数据处理中,就是对Excel数据文件的读/写/文件对象操作。通过对应的python非标准库xlrd/xlwt/xlutils,来实现具体的数据处理业务逻辑。在复杂的Excel业务数据处理中,三兄弟扮演的角色缺一不可。今天我们...
    99+
    2023-05-17
    Python Excel xlutils
  • vue3-HOOKS模块化处理方式
    目录vue3模块化处理vue hooks理解与使用demo源码示意vue3模块化处理 vue3版本的更新,就是能搞更好的重用机制,可以把想要得模块独立出去 eg:显示一个当前时间的工...
    99+
    2024-04-02
  • Python大数据处理模块Pandas
    Pandas使用一个二维的数据结构DataFrame来表示表格式的数据,相比较于Numpy,Pandas可以存储混合的数据结构,同时使用NaN来表示缺失的数据,而不用像Numpy一样要手工处理缺失的数据,并且Pandas使用轴标签来表示行和...
    99+
    2023-01-31
    数据处理 模块 Python
  • Node.js处理I/O数据之使用Buffer模块缓冲数据
    一、前传 在之前做web时也经常用到js对象转json和json转js对象.既然是Node.js处理I/O数据,也把这个记下来。 Json转Js对象:JSON.parse(jsons...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作