pyauto icon indicating copy to clipboard operation
pyauto copied to clipboard

dnspython实例代码中查询A记录无效

Open everXu opened this issue 9 years ago • 4 comments

在代码中使用: A = dns.resolver.query(domain, 'A') 查询A记录,但实际上查询条件:'A' 无效,得到的结果集中包含CNAME记录,导致出现:

Please input an domain: www.baidu.com Traceback (most recent call last): File "aquery.py", line 9, in print j.address AttributeError: 'CNAME' object has no attribute 'address' root@i-7n13qavy:/opt/soft/dnspython-1.9.4# vim aquery.py

异常。 执行环境:Python 2.7.3 , linux Ubuntu 12.04

期待得带你的回复

everXu avatar Jun 05 '15 02:06 everXu

py

wddphero avatar Mar 13 '16 04:03 wddphero

确认域名是A记录解析的,www.baidu.com是CNAME,所以会报错。

yorkoliu avatar Aug 07 '16 13:08 yorkoliu

def get_ip_list(domain=''):
    print('process domain=' + domain)
    iplist = []
    try:
        A = dns.resolver.query(domain, 'A')
    except Exception as msg:
        print('dns error: ' + msg)
        return []
    for i in A.response.answer:
        for j in i.items:
            # ip
            if 1 == j.rdtype:
                iplist.append(j.address)
            # cname,递归处理
            elif 5 == j.rdtype:
                iplist.extend(get_ip_list(j.to_text()))                  
    return iplist

mapleflow avatar Nov 05 '18 09:11 mapleflow

顶mapleflow,兼容性强很多了。 @mapleflow

yorkoliu avatar Nov 14 '18 04:11 yorkoliu