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.resolver
    import urllib
    import chardet
    import sys
    import 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'(<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)
  4. 使用
    python domain2ip.py www.baidu.com

python实现域名解析和归属地查询的更多相关文章

  1. Python实现IP地址归属地查询

    一.使用淘宝IP地址库查询 使用淘宝的Rest API,可以快速查询IP地址的归属地: 图00-淘宝IP地址库RestAPI使用说明 图01-使用淘宝免费IP地址库-查询IP归属地 存在问题:淘宝的免 ...

  2. python爬取免费优质IP归属地查询接口

    python爬取免费优质IP归属地查询接口 具体不表,我今天要做的工作就是: 需要将数据库中大量ip查询出起归属地 刚开始感觉好简单啊,毕竟只需要从百度找个免费接口然后来个python脚本跑一晚上就o ...

  3. zabbix ssh登录ip监控,登录ip归属地查询

    #!/usr/local/zabbix/scripts/src/bin/python # -*- coding: UTF-8 -*- from bs4 import BeautifulSoup as ...

  4. 通讯服务类API调用的代码示例合集:短信服务、手机号归属地查询、电信基站查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 短信服务:通知类和验证码短信,全国三网合一通道,5秒内到达,费用低 ...

  5. Android实现归属地查询功能

    实现归属地查询大体有两种方法可以实现,一种是通过归属地API进行查询,另一种是查询本地数据库.两种方法各有优劣,最好结合起来使用,我本次采用的是查询数据库的方法.首先需要从网上下载归属地数据库call ...

  6. 【原创】Java实现手机号码归属地查询

    网络上已经有很多的手机号码归属地查询的API接口,但是这些接口总是有一些大大小小的缺陷. 总结一下这些缺陷: 1.要直接将它的搜索框链接形式粘到自己的页面,点击查询的时候还要跳转到他们的网站来展示归属 ...

  7. 本地的手机号码归属地查询-oracle数据

    最近做的项目中,有个功能是手机归属地查询,因为项目要在内网下运行,所以不能用提供的webservice,只好在网上找手机归属地的数据,很多都是access的,我们的项目是用oracle,只好自己转吧, ...

  8. 百度手机号码归属地查询api与返回json处理

    前天无意间在网上看到百度ApiStore,然后好奇就进去看了看.正好最近在某博培训Android,刚学到java基础.抱着锻炼的心态选择手机号码归属地查询api进行练手.api地址 (http://a ...

  9. android134 360 07 归属地查询

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

随机推荐

  1. 【Dojo 1.x】笔记2 使用服务器环境及使用模块

    又开坑了.上次静态html页面完成本地module的引用,算是成功了,但是并不知道是怎么运作的,没关系慢慢来. 我用的环境是VSCode,这次因为官方说要在服务器环境下运行,所以就用上了VSCode的 ...

  2. Net中获取程序集路径

      从内存中加载的程序集,无路径   IIS中路径 protected void Page_Load(object sender, EventArgs e) { Response.Write(&quo ...

  3. word中字体大小(pt)和网页中css设置font-size时用的px大小对应关系

    pt与px转换关系为 1px= 0.75pt. 所以word中五号字体(10.5pt)在网页中对应的大小为font-size:14px.(10.5 / 0.75 = 14) 初号44pt 小初36pt ...

  4. Android冷启动优化

    我们知道新打开一个应用的时候,会出现短暂的白屏或者黑屏,严重影响到我们的用户体验,其实这个过程是launcher启动新进程,进程中启动activity时,会先绑定window,然后使用默认的windo ...

  5. 使用 WeihanLi.Npoi 操作 CSV

    使用 WeihanLi.Npoi 操作 CSV Intro 最近发现 csv 文件在很多情况下都在使用,而且经过大致了解,csv 格式简单,相比 excel 文件要小很多,读取也很是方便,而且也很通用 ...

  6. PM过程管理成熟度1级

    之前,我已经从项目实现的角度.企业管理诉求两方面,分析了PM的核心能力架构,以及其在过程管理方面的能力等级.接下来,Fancier凡奉信息会站在PM能力成长的角度,横向与纵向阐述每一成熟度等级PM的过 ...

  7. SqlServer sa 用户登录失败的解决方法

    一.控制面板->服务->MS SQL SERVER->登录-->本地系统帐户-->重新启动MS SQL SERVER用windows验证登陆查询分析器-->执行 s ...

  8. 如何在MongoDB设计存储你的数据(JSON化)?

    第一步 定义要描述的数据集 当我们决定将数据存储下来的时候,我们首先要回答的一个问题就是:“我打算存储什么样的数据?这些数据之间有什么关系?实体之间有什么关系?实体的属性之间有什么关系”. 为了说明问 ...

  9. Linux中逻辑卷的快照与还原

    有关逻辑卷的其他操作,请看: Linux中对逻辑卷的建立 Linux中对逻辑卷进行扩容与缩小 Linux中对逻辑卷的移除 LVM还有快照的功能,类似windows的系统还原点.其特点: 1.快照卷的容 ...

  10. SQL Server Log Shipping学习总结

      SQL Server的日志传送(log shipping)技术一直比较鸡肋,尤其当SQL Server 推出了Always On技术以后,估计使用日志传送(log shipping)这种技术方案的 ...