python实现dns查询,,dnspython模
python实现dns查询,,dnspython模
dnspython模块中最常用的域名查询,它提供了一个DNS解析器类–resolver,使用resolver的query方法来实现域名的查询功能。1.模块库安装
pip install dnspython
2.指定DNS服务器
my_resolver = dns.resolver.Resolver()my_resolver.nameservers = [DNS_Server]
3.query方法的定义
query(self,qname,rdtype=1,rdclass=1,tcp=False,source=None,raise_on_no_answer=True, source_port=0)
参数说明:
qname表示待查询的域名,例如:www.baidu.com;
rdtype用来指定待查询的类型,如A记录、MX记录、NS记录等;
rdclass用来指定网络类型,如IN、CH、HS等,默认为IN;
tcp用来指定查询时是否使用TCP协议,默认为False(即使用UDP);
source和source_port用于指定查询源地址与端口,默认为查询设备IP和0端口raise_on_no_answer用来指定当查询无应答时是否触发异常。
4.代码实现
#!/usr/bin/env python# -*- coding: UTF-8 -*-#说明1:DNS的模块库是dnspython,在电脑上需要安装pip install dnspythonimport dns.resolver#说明2:指定DNS解析的服务器为192.168.0.1,若不指定,则使用网卡配置的DNS地址DNS_Server="192.168.0.1" my_resolver = dns.resolver.Resolver()my_resolver.nameservers = [DNS_Server]#说明3:定义函数,方便重复利用,指定源地址进行指定域名和记录类型的dns解析def DNS_Query(domain_name,domain_type,source_ip): try: A= my_resolver.query(domain_name,domain_type,source=source_ip) for i in A.response.answer: print(i.to_text()) #for j in i.items: #print(j.to_text()) except Exception as e: print (domain_name,domain_type,‘Error: unable to start thread‘)#说明4:指定源IP为192.168.0.2进行www.baidu.com的A记录解析DNS_Query("www.baidu.com","A","192.168.0.2")
上述代码执行结果
www.baidu.com. 524 IN CNAME www.a.shifen.com.www.a.shifen.com. 147 IN A 180.101.49.12www.a.shifen.com. 147 IN A 180.101.49.11
【参考资料】
https://www.cnblogs.com/baishuchao/articles/9128953.html
https://www.cnblogs.com/bmjoker/p/10560027.html
python实现dns查询
相关内容
- Python函数参数详解,,Python函数参数
- 在docker容器中部署python-selenium+chrome-headless自动化脚本
- python 2 与 python 3 —— 转义及编码(\u \x),,首先前面
- Python程序设计实验二,,Python程序设计
- Python3+Django3开发简单的人员管理系统,,1、使用PyChar
- linux 更新python3.8,,1 下载源码地址选版
- python 操作达 梦数据库,,python 达梦数
- W3school自学python,pythonstr转bytes,python官方文档
- 5.5Python数据处理篇之Sympy系列(五)---解方程,数据处理的
- <每日一题>题目16:简单的python练习题(1-10),
评论关闭