标签: dnspython

告诉urllib2使用自定义DNS

我想告诉urllib2.urlopen(或自定义开启者)使用127.0.0.1(或::1)来解析地址.但是,我不会改变我的/etc/resolv.conf.

一种可能的解决方案是使用类似dnspython查询地址和httplib构建自定义URL开启工具的工具.我更喜欢告诉urlopen使用自定义名称服务器.有什么建议?

python dns dnspython urllib2 urlopen

14
推荐指数
2
解决办法
1万
查看次数

我们如何从dnspython获取TXT,CNAME和SOA记录?

我需要有一个dns查询功能来查询服务器的各种记录.我想出了如何获得MX记录(大多数例子都显示了这一点),A记录和NS记录.如何获取TXT,CNAME和SOA记录?

示例代码段:

   import dns.resolver
   answer=dns.resolver.query("google.com", "A")
       for data in answer:
           print data.address
Run Code Online (Sandbox Code Playgroud)

我尝试用TXT和data.address对象替换查询类型与data.text,data.data等,但最终导致属性错误.我之前提到的数据类型有哪些参考?

python dns dnspython

12
推荐指数
2
解决办法
3万
查看次数

Eventlet + DNS Python属性错误:模块“dns.rdtypes”没有任何属性

我知道有人会面临这个问题。我今天遇到了这个问题,但我可以及时解决它,我想分享我的解决方案:

问题:

from flask_socketio import SocketIO
Run Code Online (Sandbox Code Playgroud)

您将收到类似以下内容的输出错误:

属性错误:模块“dns.rdtypes”没有属性 ANY

仅当您安装了 eventlet 时才会发生这种情况,因为它会随之安装 dnspython。

解决办法很简单,重新安装之前发布的dnspython即可:

python3 -m pip install dnspython==2.2.1

问题应该消失

python dnspython eventlet flask-socketio

12
推荐指数
1
解决办法
5733
查看次数

pymongo-mongodb + srv“必须安装dnspython”错误

我正在尝试从Atlas连接MongoDB,但遇到了:

dnspython必须安装错误

我的mongo uri(样机):mongodb+srv://abc:123@something.something.com/admin?retryWrites=True

我的pymongo版本3.6.1 我已经安装dnspython并完成import dns

仍然,我得到错误:

必须安装dnspython模块才能使用mongodb + srv:// URI

python database dnspython mongodb pymongo

11
推荐指数
7
解决办法
7078
查看次数

如何使用dnspython找到域的权威DNS服务器?

作为我正在编写的工具的一部分,我希望有一个诊断,告诉用户他们是否已为特定服务正确配置了他们的域的DNS.我想查询权威DNS服务器的域名,以便我可以绕过任何缓存的结果.

python dns dnspython

10
推荐指数
2
解决办法
2万
查看次数

在Python中使用isinstance检查特定类型的异常是否合理?

在Python中捕获泛型异常是否合理,然后用于isinstance()检测特定类型的异常以便正确处理它?

我现在正在使用dnspython工具包,它有一系列例外,例如超时,NXDOMAIN响应等等.这些例外是子类dns.exception.DNSException,所以我想知道它是否合理,或者是pythonic,以便捕获DNSException然后用isinstance().检查一个特定的例外.

例如

try:
    answers = dns.resolver.query(args.host)
except dns.exception.DNSException as e:
    if isinstance(e, dns.resolver.NXDOMAIN):
        print "No such domain %s" % args.host
    elif isinstance(e, dns.resolver.Timeout):
        print "Timed out while resolving %s" % args.host
    else:
        print "Unhandled exception"
Run Code Online (Sandbox Code Playgroud)

我是Python的新手,所以要温柔!

python exception-handling introspection dnspython

10
推荐指数
1
解决办法
6616
查看次数

Dnspython:设置查询超时/生命周期

我有一个小脚本,检查大量的域列表中的MX记录,一切正常,但是当脚本找到没有记录的域时,跳转到下一个域需要很长时间.

我试过添加:

query.lifetime = 1.0
or
query.timeout = 1.0
Run Code Online (Sandbox Code Playgroud)

但这似乎没有做任何事情.有谁知道如何配置此设置?

我的脚本在下面,谢谢你的时间.

import dns.resolver
from dns.exception import DNSException
import dns.query
import csv

domains = csv.reader(open('domains.csv', 'rU'))
output = open('output.txt', 'w')
for row in domains:
    try:
        domain = row[0]
        query = dns.resolver.query(domain,'MX')
        query.lifetime = 1.0
    except DNSException:
        print "nothing here"
    for rdata in query:
            print domain, " ", rdata.exchange, 'has preference', rdata.preference
            output.writelines(domain)
            output.writelines(",")
            output.writelines(rdata.exchange.to_text())
            output.writelines("\n")
Run Code Online (Sandbox Code Playgroud)

python timeout dnspython lifetime

9
推荐指数
1
解决办法
1万
查看次数

dnspython3从A记录中删除主机

考虑这种情况:使用nsupdate我可以使用以下方法从A记录中删除IP:

update delete test-record.mydomain.com 60 A 172.16.1.4
Run Code Online (Sandbox Code Playgroud)

这是我使用dnspython的简单实现,其中bind_host是我们的绑定服务器,domain_name是"mydomain.com".和sub_domain是"test-record",ip是"172.16.1.4".

def delete_dns_record(self, bind_host, domain_name, sub_domain, ip):
    update = dns.update.Update(domain_name)
    update.delete(sub_domain, '60', 'A', ip)
    response = dns.query.tcp(update, bind_host, timeout=10)
    return response
Run Code Online (Sandbox Code Playgroud)

运行函数将抛出以下错误:

Traceback (most recent call last):
File "dns_magic/check.py", line 136, in <module>
dnstest()
File "dns_magic/check.py", line 134, in dnstest
print(hc.delete_dns_record('1.2.3.4', 'mydomain.com.', 'test-record', '172.16.1.4' ))
File "dns_magic/check.py", line 106, in delete_dns_record
update.delete(sub_domain, '60', 'A', ip)
File "dns_magic/lib/python3.6/site-packages/dns/update.py", line 160, in delete
rdtype = dns.rdatatype.from_text(rdtype)
File "dns_magic/lib/python3.6/site-packages/dns/rdatatype.py", line 214, in from_text
raise UnknownRdatatype
dns.rdatatype.UnknownRdatatype: …
Run Code Online (Sandbox Code Playgroud)

dnspython python-3.x

9
推荐指数
1
解决办法
133
查看次数

dnspython - 通过一个查询获取AAAA,A,NS和其他记录

我正在尝试构建快速脚本来解析单个域名的所有DNS记录.'ANY'命令似乎可以解决这个问题,但我对TTL有一些奇怪的问题.当使用ANY时这样

domain = dns.name.from_text(domain)
nameserver = '127.0.0.1'
query = dns.message.make_query(domain, dns.rdatatype.ANY)
response = dns.query.udp(query, nameserver, timeout = 2)
print response
Run Code Online (Sandbox Code Playgroud)

返回的数据是我需要的,但是当TTL到期时,脚本只是不返回过期的记录.'DIG domain ANY'命令似乎也有这个问题.

所以我的问题是获取单个域的所有DNS记录的最快方法是什么?

python dns dnspython

6
推荐指数
1
解决办法
3968
查看次数

如何使dns-python中的dns查询为dig(附加记录部分)?

我尝试使用dns python并希望获取所有ANY类型查询的记录:

import dns.name
import dns.message
import dns.query

domain = 'google.com'
name_server = '8.8.8.8'

domain = dns.name.from_text(domain)
if not domain.is_absolute():
    domain = domain.concatenate(dns.name.root)

request = dns.message.make_query(domain, dns.rdatatype.ANY)

response = dns.query.udp(request, name_server)
print response.answer
print response.additional
print response.authority
Run Code Online (Sandbox Code Playgroud)

但它回报了我

[]
[]
[]
Run Code Online (Sandbox Code Playgroud)

当我尝试使用以下命令发出此请求dig:

$ dig @8.8.8.8  google.com -t ANY

; <<>> DiG 9.9.2-P1 <<>> @8.8.8.8 google.com -t ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, …
Run Code Online (Sandbox Code Playgroud)

python dns dnspython dig

6
推荐指数
1
解决办法
2万
查看次数