dns记录

查看dns模块是否安装
#pip list|grep dnspython

开源模块dnspython安装
#pip install dnspython

(resolver是dns解析类)
query方法域名查询的帮助信息
dns记录
参数:
qname:查询的域名
rdtype:指定解析记录
-A 地址记录,返回域名解析的ip地址
-NS 域名服务器记录,返回下一级域名的服务器地址(只能是域名)
-MX 邮件记录,返回接收电子邮件的服务器地址
-CNAME 别名记录,实现域名之间的映射
-PTR 反向解析,与A记录相反,将ip地址转换成域名
rdclass:网络类型
tcp:是否使用tcp协议
source:查询源的地址
raise_on_no_answer:指定查询无应答的异常触发,默认为True
source_port:查询源的端口

import dns.resolver

domain = input('Please input an domain: ')

A = dns.resolver.query(domain, 'A') #指定查询类型 A 表示主机记录
#获取域名的A记录
1、dig方法获取
dns记录
2、python程序获取
dns记录

#直接获取A记录的ip地址
for i in A.response.answer: #遍历相应的信息
for j in i.items:
print(j.to_text())

MX = dns.resolver.query(domain, 'MX') #指定为邮件交换记录 139.com/163.com
for i in MX:
print(i)
#print('MX preference =', i.preference('优先级'), 'mail exchanger =', i.exchange('FQDN名,完整的合格域名'))

ns = dns.resolver.query(domain,'NS') #标记域名服务器 google.com一级域名
for i in ns.response.answer:
for j in i.items:
#print(j.to_text())
print(j)

cname = dns.resolver.query(domain, 'CNAME') #别名
for i in cname.response.answer:
for j in i.items:
print(j)

===============================================
python2中http请求使用httplib库
python2中http请求使用http.client库
dns轮循例子
import dns.resolver
import os
import http.client

iplist=[] #定义域名IP列表变量
appdomain="www.baidu.com" #定义业务域名

def get_iplist(domain=""): #域名解析函数,解析成功IP将追加到iplist
try:
A = dns.resolver.query(domain, 'A') #解析A记录类型
except Exception as e:
print("dns resolver error:"+str(e))
return
for i in A.response.answer:
for j in i.items:
if not j.to_text().startswith('www') or not j.to_text().endswith('com.'):
iplist.append(j.to_text()) #追加到iplist

return True

def checkip(ip):
checkurl=ip+":80"
getcontent=""
http.client.socket.setdefaulttimeout(5) #定义http连接超时时间(5秒)
conn = http.client.HTTPConnection(checkurl) #创建http连接对象

try:
    conn.request("GET", "/",headers = {"Host": appdomain})  #发起URL请求,添加host主机头
    r=conn.getresponse()
    getcontent =r.read(15)   #获取URL页面前15个字符,以便做可用性校验,注意结果是字节
finally:
    if getcontent==b"<!DOCTYPE html>":  #监控URL页的内容一般是事先定义好,比如“HTTP200”等
        print(ip+" [OK]")
    else:
        print(ip+" [Error]")    #此处可放告警程序,可以是邮件、短信通知

if name=="main":
if get_iplist(appdomain) and len(iplist)>0: #条件:域名解析正确且至少要返回一个IP
for ip in iplist:
checkip(ip)
else:
print("dns resolver error.")

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值