Python学习笔记-DNS处理模块dnspython

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

DNS处理模块dnspython

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

在系统管理方面,我们可以利用其查询功能来实现DNS服务监控以及解析结果的校验,可以替代nslookup和dig等工具,轻松做到与现有平台的整合。

    下载dnspython模块

1
[root@kurol ~] # python3 -m easy_install -i http://pypi.douban.com/simple/ dnspython

    dnspython提供大量关于DNS的处理方法,最常用的是域名查询。dnspython提供了一个DNS解析类resolver,使用它的query方法来实现域名的查询功能。 

1
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标记,一个起始授权区的定义


    常见的解析类型示例:

        A记录(实现A记录查询方法源码):  

?
1
   [root@kurol pkg1] # vim dnsa.py
1
2
3
4
5
6
#!/usr/bin/python3
#import dns.resolverdomain = input('Please input an domain: ')    #输入域名地址
=  dns.resolver.query(domain,  'A' )      #指定查询类型为A记录
for  in  A.response.answer:      #通过response.answer方法获取查询回应信息    
for  in  i.items:    #遍历回应信息        
     print  (j.address)
?
1
[root@kurol pkg1] # python3 dnsa.py Please input an domain: www.google.com93.46.8.89


        MX记录(实现MX记录查询方法源码):

?
1
[root@kurol pkg1] # vim mxdns.py
1
2
3
4
5
#!/usr/bin/python3
#import dns.resolverdomain = input('Please input an domain: ') #输入域名地址
MX  =  dns.resolver.query(domain,  'MX' #指定查询类型为MX记录
for  in  MX:  #通过response.answer方法获取查询回应信息    
     print  ( 'MX preference = ' , i.preference,  'main exchanger = ' , i.exchange)
1
2
3
4
5
6
[root@kurol pkg1] # python3 mxdns.py 
Please  input  an domain: baidu.com
MX preference  =  20  main exchanger  =  mx50.baidu.com.
MX preference  =  10  main exchanger  =  mx.n.shifen.com.
MX preference  =  20  main exchanger  =  mx1.baidu.com.
MX preference  =  20  main exchanger  =  jpmx.baidu.com.


        NS记录(实现NS记录查询方法源码):

?
1
[root@kurol pkg1] # vim nsdns.py
1
2
3
4
5
#!/usr/bin/python3#import dns.resolverdomain = input('Please input an domain: ') #输入域名地址
ns  =  dns.resolver.query(domain,  'NS' #指定查询类型为NS记录
for  in  ns.response.answer:  #通过response.answer方法获取查询回应信息    
for  in  i.items:  #遍历回应信息        
     print  (j.to_text())
1
2
3
4
5
6
[root@kurol pkg1] # python3 nsdns.py 
Please  input  an domain: qq.comn
s3.qq.com.
ns4.qq.com.
ns1.qq.com.
ns2.qq.com.


        CNAME记录(实现CNAME记录查询方法源码):

?
1
[root@kurol pkg1] # vim cnamedns.py
1
2
3
4
5
#!/usr/bin/python3#import dns.resolverdomain = input('Please input an domain: ') #输入域名地址
cname  =  dns.resolver.query(domain,  'CNAME' #指定查询类型为CNAME记录
for  in  ns.response.answer:  #通过response.answer方法获取查询回应信息    
for  in  i.items:  #遍历回应信息
     print  (j.to_text())



      本文转自谢育政 51CTO博客,原文链接:http://blog.51cto.com/kurolz/1935039 ,如需转载请自行联系原作者


相关文章
|
6天前
|
监控 算法 安全
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
28 10
|
2月前
|
Python
Python Internet 模块
Python Internet 模块。
133 74
|
24天前
|
存储 算法 安全
控制局域网上网软件之 Python 字典树算法解析
控制局域网上网软件在现代网络管理中至关重要,用于控制设备的上网行为和访问权限。本文聚焦于字典树(Trie Tree)算法的应用,详细阐述其原理、优势及实现。通过字典树,软件能高效进行关键词匹配和过滤,提升系统性能。文中还提供了Python代码示例,展示了字典树在网址过滤和关键词屏蔽中的具体应用,为局域网的安全和管理提供有力支持。
50 17
|
28天前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
55 20
|
1月前
|
数据采集 供应链 API
Python爬虫与1688图片搜索API接口:深度解析与显著收益
在电子商务领域,数据是驱动业务决策的核心。阿里巴巴旗下的1688平台作为全球领先的B2B市场,提供了丰富的API接口,特别是图片搜索API(`item_search_img`),允许开发者通过上传图片搜索相似商品。本文介绍如何结合Python爬虫技术高效利用该接口,提升搜索效率和用户体验,助力企业实现自动化商品搜索、库存管理优化、竞品监控与定价策略调整等,显著提高运营效率和市场竞争力。
83 3
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
32 3
|
2月前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
2月前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
175 5
|
2月前
|
存储 缓存 Python
Python中的装饰器深度解析与实践
在Python的世界里,装饰器如同一位神秘的魔法师,它拥有改变函数行为的能力。本文将揭开装饰器的神秘面纱,通过直观的代码示例,引导你理解其工作原理,并掌握如何在实际项目中灵活运用这一强大的工具。从基础到进阶,我们将一起探索装饰器的魅力所在。
|
3月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
133 2

相关产品

  • 云解析DNS