今天在家里搞Python3学习DNS模块,中间研究出现了很多坑,不能说坑也是我自己作为一个新手犯得错误.

【环境】:Python3环境

1.安装dns模块

pip3 install dnspython3

2.新建一个py文件dns_test.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#by typ


import dns.resolver

domain = input('Please input an domain: ')  #输入域名地址

A = dns.resolver.query(domain, 'A')  #查询记录为A记录
for i in A.response.answer:
    for j in i.items:
        print (j.address)

运行查询:

优化

import dns.resolver

domain = input('请输入域名: ')

A = dns.resolver.query(domain, 'A')
for i in A.response.answer:
    for j in i.items:
        print ('域名:%s IP地址为:%s' %(domain,j.address))

 

遇到的报错问题

AttributeError: ‘CNAME’ object has no attribute ‘address’

这个问题是因为查询的是A记录但是域名解析是CNAME导致的

我们更改脚本做CNAME解析就不会报错了

#!/usr/bin/python
# -*- coding: utf-8 -*-
#by typ

import dns.resolver

domain = input('请输入域名: ')

cname = dns.resolver.query(domain, 'CNAME')
for i in cname.response.answer:
    for j in i.items:
        print ("域名:%s\nCNAME记录:%s"%(domain,j.to_text()))

效果如下

ImportError: No module named dns.exception

这个问题提示找不到模块,问题困恼了我很长时间,明明安装了dns模块为什么提示找不到,为此我在windows上和linux上面都做了实验,发现都是这个报错,最后发现是因为我文件名字为dns.py跟模块冲突了。小错误坑!

以上就是我在学习遇到的问题。

 

 

 

 

欢迎留言