我是
靠谱客 的博主
大意蜗牛 ,最近开发中收集的这篇文章主要介绍
Python之dnspython库的使用 ,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
dnspython是Python的DNS工具包。它支持几乎所有记录类型。它可用于查询,区域传输和动态更新,它支持TSIG(事务签名)认证消息和EDNS0(扩展DNS)。dnspython起源于Nominum,它的开发是为了方便DNS软件的测试。dnspython的稳定版本为1.16.0,于2018年12月8日发布。未来dnspython版本的编号将从2.0开始,dnspython的未来版本将只支持Python 3。
1. python DNS安装
1 2 3 4 5 6 7 8 9 10 11 12 λ pip install dnspython λ pip show dnspython Name: dnspython Version : 1.16.0Summary : DNS toolkit Home -page : http ://www.dnspython.org Author : Bob Halley Author -email : halley @dnspython.org License : BSD -like Location : c :python lib site -packages Requires :Required -by :
2. python DNS用法
1 2 3 4 5 6 7 8 9 def query ( qname: Any, #域名 rdtype: int = dns.rdatatype.A, #记录类型 rdclass: int = dns.rdataclass.IN, #网络类型 tcp: bool = False, #是否启用TCP协议 source: Any = None, #DNS服务器的源IP raise_on_no_answer: bool = True, #无应答是是否触发隐藏 source_port: int = 0 , #DNS服务器的源端口 lifetime: Any = None) #超时时间
3. python DNS使用
3.1. A记录
1 2 3 4 5 6 7 8 9 10 11 12 13 import dns.resolverdomain = "baidu.com" A = dns.resolver.query(domain) for i in A.response.answer: for j in i.items: print(j.address) C:Pythonpython.exe C:/Code/Python/DNS/1. py 220.181 .57 .216 123.125 .115 .110
3.2. MX记录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import dns.resolverdomain = "qq.com" MX = dns.resolver.query(domain, "MX" ) print("优先级 | 服务器地址" ) for i in MX: print(i.preference, end="" ) print(" | " , end="" ) print(i.exchange) C:Pythonpython.exe C:/Code/Python/DNS/1. py 优先级 | 服务器地址 20 | mx2.qq.com.10 | mx3.qq.com.30 | mx1.qq.com.
3.3. NS记录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import dns.resolver domain ="baidu.com" NS = dns.resolver.query(domain, "NS") for i in NS.response.answer: for j in i.items: print(j.to_text()) ## 执行结果 C:Pythonpython.exe C:/Code/Python/DNS/1.py ns3.baidu.com. ns2.baidu.com. dns.baidu.com. ns7.baidu.com. ns4.baidu.com.
3.4. CNAME记录
1 2 3 4 5 6 7 8 9 10 11 import dns.resolver domain="www1.baidu.com" CNAME = dns.resolver.query(domain, "CNAME") for i in CNAME.response.answer: for j in i.items: print(j.to_text()) ## 执行结果 C:Pythonpython.exe C:/Code/Python/DNS/1.py www.baidu.com.
4. DNS轮询
大多域名注册商都支持多条A记录的解析,其实这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,逐一分配到不同的IP上,这样就完成了简单的负载均衡。
DNS轮询系统的优点:
无成本,因为往往域名注册商的这种解析都是免费的; 部署方便,新增的Web服务器只要增加一个公网IP即可。
DNS轮询系统的缺点:
如果某台服务器宕机,DNS服务器是无法知晓的,仍旧会将访问分配到此服务器。 如果几台Web服务器之间的配置不同,能够承受的压力也就不同,但是DNS解析分配的访问却是均匀分配的。 如果是需要身份验证的网站,DNS解析无法将验证用户的访问持久分配到同一服务器。
百度轮询系统代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #代码没有容错 import dns.resolver import requests #下边两行是SSL证书错误的时候不报错 from requests.packages.urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) domain = "www.baidu.com" list = [] url =[] A = dns.resolver.query(domain, "A") for i in A.response.answer: for j in i.items: if 57 >= ord(str(j)[-1]) >= 48: ip = str(j) + ":443" else: ip = str(j) r = requests.get("https://" + ip, verify=False) if r.status_code == 200: print(ip + "[ok]") else: print(ip + "[error]") ## 执行 C:Pythonpython.exe C:/Code/Python/DNS/2.py www.a.shifen.com.[ok] 183.232.231.173:443[ok] 183.232.231.172:443[ok]
最后
以上就是大意蜗牛 为你收集整理的Python之dnspython库的使用 的全部内容,希望文章能够帮你解决Python之dnspython库的使用 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站 推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复