利用python腳本實現域名解析和歸屬地信息查詢

一、前言 

  由於工作中有時要域名解析和獲取相關IP歸屬地信息,所以寫了該腳本,方便自己查詢使用。


二、腳本內容

#!/usr/bin/env python
#coding:utf-8

import dns.resolver
import urllib
import chardet
import sys
import re

ip_list = []
query_domain = raw_input('Please input a domain: ')

# 先查詢是否有CNAME,如果有則通過CNAME獲取到A記錄;如果沒有直接獲取A記錄,然後返回到一個列表中
def get_iplist(domain):
    try:
        cn = dns.resolver.query(domain,'CNAME')
        for i in cn.response.answer:
            for j in i.items:
                cname_domain = j.to_text() 
        print '========================================'
        print '    CNAME  --->', cname_domain
        print '========================================'
    except:
        pass
    else:
        A = dns.resolver.query(cname_domain,'A')
        for i in A.response.answer:
            for j in i.items:
                try:
                    ip_list.append(j.address)
                except:
                    get_iplist(str(j))
        
    try:
        A = dns.resolver.query(domain,'A')
        for i in A.response.answer:
            for j in i.items:
                ip_list.append(j.address)
    except:
        pass
    return ip_list

# 通過調用ip138.com來獲取IP歸屬地信息
def get_ipbelong(domain_ip):
    url = 'http://ip138.com/ips138.asp?ip=%s&action=2' % domain_ip
    content = urllib.urlopen(url).read()
    typeEncode = sys.getfilesystemencoding()
    infoencode = chardet.detect(content).get('encoding','utf-8')
    html = content.decode(infoencode,'ignore').encode(typeEncode)
    ip = re.findall(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}',html)
    result = re.findall(r'(<li>.*?</li>)',html)
    belong = result[0][14:-5]
    print '%-*s--->%*s' % (18,ip[0],20,belong)


if __name__ == '__main__':
    get_iplist(query_domain)
    for ip in ip_list:
        get_ipbelong(ip)


三、效果

  wKiom1eNn4nRaLF6AAATTGNhCCE573.png


四、相關資料

  http://www.dnspython.org/examples.html  

  http://www.cnblogs.com/CoolRandy/p/3251733.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章