1. #encoding:utf-8
  2.  
  3. import requests
  4. import json
  5. import dns.resolver
  6. import sys
  7. reload(sys)
  8. sys.setdefaultencoding("utf-8")
  9.  
  10. # 通过域名获取域名的A记录
  11. def GetArecordIp(domain_name):
  12.  
  13. address = []
  14. try:
  15. host_a = dns.resolver.query(domain_name, 'A')
  16. for i in host_a.response.answer:
  17. for j in i.items:
  18. address.append(j.address)
  19. return address
  20. except:
  21. return False
  22.  
  23. # 通过调用淘宝的api根据ip获取城市
  24. def get_city(ip_addr):
  25. ip = ip_addr
  26. # 通过淘宝的api查询ip信息
  27. req = requests.get("http://ip.taobao.com/service/getIpInfo.php?ip={}".format(ip))
  28. if req:
  29. ip_data = json.loads(req.content)
  30. ip_address = ip_data['data']
  31.  
  32. are = ''.join([ip_address['country'],ip_address['area'],ip_address['city']])
  33. json.dumps(are)
  34. # print are
  35. return are
  36.  
  37. def write_to_html(domain_ip):
  38. # 通过拼凑ip和域名最终形成网页信息
  39. # print domain_ip
  40. title = "域名解析信息"
  41. tbody = ''
  42. for domain,ipcity in domain_ip.items():
  43. print domain,ipcity[0][0],ipcity[0][1],ipcity[1][0],ipcity[1][1]
  44. tbody += '<tr>\n<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>\n<tr>\n' % (domain,ipcity[0][0],ipcity[0][1],ipcity[1][0],ipcity[1][1])
  45.  
  46. html_tpl = '''
  47. <!DOCTYPE html>
  48. <html>
  49. <head>
  50. <meta charset="utf-8">
  51. <title>{title}</title>
  52. </head>
  53. <body>
  54. <table border="1" cellspacing="0" cellpadding="0" color='pink'>
  55. <thead>
  56. <tr cellspacing="0" cellpadding="0">
  57. <th>域名</th>
  58. <th>ip信息1</th>
  59. <th>ip所在城市1</th>
  60. <th>ip信息2</th>
  61. <th>ip所在城市2</th>
  62. </tr>
  63. </thead>
  64. {tbody}
  65. </table>
  66. </body>
  67. </html>
  68. '''
  69. html_handle = open('domain01.html','w')
  70. html_handle.write(html_tpl.format(title = title, tbody = tbody))
  71. html_handle.close()
  72.  
  73. # 根据域名列表获取ip地址
  74. def main(domain_file):
  75.  
  76. f = open(domain_file,'r')
  77. domain_list = f.readlines()
  78. f.close()
  79.  
  80. domain_ip = {}
  81. for domain in domain_list:
  82. domain_name = domain.rstrip()
  83. ip_list = GetArecordIp(domain_name)
  84. ip_city_list = []
  85.  
  86. # ip 不为空则处理
  87. if ip_list:
  88. for i in ip_list:
  89. city = get_city(i)
  90. ip_city = [i,city]
  91. ip_city_list.append(ip_city)
  92. # print json.dumps(ip_city_list).decode("unicode-escape")
  93. # ip=','.join(str(i)for i in ip_city_list)
  94. # json.dumps(ip_city_list).decode("unicode-escape")可以转为中文显示
  95. domain_ip[domain_name] = ip_city_list
  96. # print domain_name,json.dumps(ip_city_list).decode("unicode-escape")
  97. else:
  98. print "%s has no record" % domain_name
  99.  
  100. # 将信息写入网页
  101. write_to_html(domain_ip)
  102.  
  103. if __name__ == '__main__':
  104. domain_file = "domain_file.txt"
  105. main(domain_file)

简单解析

  1. #!/usr/bin/env python
  2. #coding:utf-8
  3.  
  4. from socket import gethostbyname
  5. DOMAIN= "ip02.txt"
  6.  
  7. with open(DOMAIN,'r') as f:
  8.  
  9. for line in f.readlines():
  10. try:
  11. host = gethostbyname(line.strip('\n')) #域名反解析得到的IP
  12. except Exception as e:
  13. with open('error.txt','a+') as ERR: #error.txt为没有IP绑定的域名
  14. ERR.write(line.strip()+ '\n')
  15. else:
  16. with open('result.txt','a+') as r: #result.txt里面存储的是批量解析后的结果
  17. r.write(line.strip('\n') + ' ') #显示有ip绑定的域名,用空格隔开
  18. r.write(host + '\n')

python批量解析域名a记录的更多相关文章

  1. 批量解析域名为IP地址的python脚本

    脚本如下: #!/usr/bin/env python #coding:utf- import os,sys from socket import gethostbyname DOMAIN= &quo ...

  2. 解释-DNS,A记录,CNAME记录,域名转向,SRV记录,TTL值,泛域名与泛解析,域名绑定

    http://www.lihongye.net/post/dns.html DNS DNS,Domain Name System或者Domain Name Service(域名系统或者域名服务).域名 ...

  3. 聊聊host中ip/域名映射记录的解析规则

    今天宝叔突然在群里发了个问题; host做如下配置,a.com会指向哪里?或者说ping一下a.com结果会是什么? 127.0.0.1 a.com 192.168.4.106 a.com 192.1 ...

  4. 1元搭建自己的云服务器&解析域名

    最近在学做微信开发,没有自己的域名和服务器就不得不寄人篱下,索性自己就到云主机上搭建了个服务器,但是水平有限弄了一个下午~~有自己的域名和服务器的好处相信不用我多说了.比如日后可以有自己域名的个性博客 ...

  5. python高效解析日志入库

    python脚本解析日志文件入库一般有三个重要的步骤:读文件.解析文件.入库.在这三个方面下功夫,可确保我们获得最优的性能(这里不讨论并发) 1 读文件:一次读一行,磁盘IO太多,效率低下:一次性读如 ...

  6. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录

    相关学习资料 http://baike.baidu.com/link?url=77B3BYIuVsB3MpK1nOQXI-JbS-AP5MvREzSnnedU7F9_G8l_Kvbkt_O2gKqFw ...

  7. 使用adns库解析域名

    1. adns.adns-python库简介 adns库是一个可进行异步非阻塞解析域名的库,主要使用C语言编写,在linux平台下运行.使用adns库进行域名解析效率非常,著名的开源网络爬虫larbi ...

  8. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录(转)

    http://www.cnblogs.com/LittleHann/p/3828927.html 相关学习资料 http://baike.baidu.com/link?url=77B3BYIuVsB3 ...

  9. python批量修改linux主机密码

    +++++++++++++++++++++++++++++++++++++++++++标题:python批量修改Linux服务器密码时间:2019年2月24日内容:基于python实现批量修改linu ...

随机推荐

  1. 使用js修改url地址参数

    该方法可以修改url的参数. 例如将 www.baidu.com 修改为 www.baidu.com?name=123 操作为: window.location.href = changeURLArg ...

  2. springboot(十六):springboot整合shiro

    数据库有五张表(userInfo,uerrole,role,rolepermission,permission) userInfo(id,username,password) userrole(uid ...

  3. Tensorflow Python 转 Java(一)

    一.背景描述 最近python的tensorflow想办法给弄到线上去.网络用的Tensorflow现成的包.写篇博客,记录下过成.数据用kaggle中的数据为例子. 数据地址: https://ww ...

  4. 使用TensorFlow遇到的若干问题

    一.查看版本: 进入到Python的命令行状态后,可以在终端输入查询命令如下: import tensorflow tensorflow.__version__ 查询tensorflow安装路径为: ...

  5. 最短路模板(SPFA POJ2387)

    #include <set> #include <map> #include <queue> #include <stack> #include < ...

  6. JQuery常见事件

    ##### 事件 onclick 单机事件 ondblclick 双击事件 onmouseover 鼠标穿过 (子盒子独立) onmouseout 鼠标出去 onmouseenter 鼠标进入 (子盒 ...

  7. canvas粒子背景

  8. 【blog】SpringBoot事务

    参考链接 http://www.cnblogs.com/xingzc/p/6029483.html

  9. Print Article(斜率DP入门+单调队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3507 题目大意:给你n个数,然后问你怎么分割当前的这n个数位那几组,使得每一组的权值加起来最大.每一组 ...

  10. linux 用户管理命令