博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python实现域名解析和归属地查询
阅读量:4706 次
发布时间:2019-06-10

本文共 1917 字,大约阅读时间需要 6 分钟。

  1. 前言
    工作中有时要查询域名解析和获取域名相关IP归属地信息
  2. 安装依赖
    python2:
    pip install dnspython
    python3:
    python3 -m pip install -i https://pypi.douban.com/simple/ dnspython3
  3. 脚本内容
    #!/usr/bin/env python#coding:utf-8 import dns.resolverimport urllibimport chardetimport sysimport re ip_list = []query_domain = sys.argv[1]#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'(
  4. .*?
  5. )',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)
  6. 使用
    python domain2ip.py www.baidu.com

转载于:https://www.cnblogs.com/Mrhuangrui/p/8303934.html

你可能感兴趣的文章
cnblog!i'm coming!
查看>>
使用点符号代替溢出的文本
查看>>
fatal: remote origin already exists.
查看>>
LeetCode 242. Valid Anagram
查看>>
JSP表单提交乱码
查看>>
如何适应现代雇佣关系
查看>>
团队项目(第五周)
查看>>
SQL 优化经验总结34条
查看>>
开源 视频会议 收藏
查看>>
核心J2EE模式 - 截取过滤器
查看>>
.net开源CMS
查看>>
JdbcTemplate
查看>>
第一次使用maven记录
查看>>
SharePoint服务器端对象模型 之 使用CAML进展数据查询
查看>>
Building Tablet PC Applications ROB JARRETT
查看>>
Adobe® Reader®.插件开发
查看>>
【POJ 3461】Oulipo
查看>>
Alpha 冲刺 (5/10)
查看>>
使用Siege进行WEB压力测试
查看>>
斑马为什么有条纹?
查看>>