#encoding:utf-8

import requests
import json
import dns.resolver
import sys
reload(sys)
sys.setdefaultencoding("utf-8") # 通过域名获取域名的A记录
def GetArecordIp(domain_name): address = []
try:
host_a = dns.resolver.query(domain_name, 'A')
for i in host_a.response.answer:
for j in i.items:
address.append(j.address)
return address
except:
return False # 通过调用淘宝的api根据ip获取城市
def get_city(ip_addr):
ip = ip_addr
# 通过淘宝的api查询ip信息
req = requests.get("http://ip.taobao.com/service/getIpInfo.php?ip={}".format(ip))
if req:
ip_data = json.loads(req.content)
ip_address = ip_data['data'] are = ''.join([ip_address['country'],ip_address['area'],ip_address['city']])
json.dumps(are)
# print are
return are def write_to_html(domain_ip):
# 通过拼凑ip和域名最终形成网页信息
# print domain_ip
title = "域名解析信息"
tbody = ''
for domain,ipcity in domain_ip.items():
print domain,ipcity[0][0],ipcity[0][1],ipcity[1][0],ipcity[1][1]
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]) html_tpl = '''
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{title}</title>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="0" color='pink'>
<thead>
<tr cellspacing="0" cellpadding="0">
<th>域名</th>
<th>ip信息1</th>
<th>ip所在城市1</th>
<th>ip信息2</th>
<th>ip所在城市2</th>
</tr>
</thead>
{tbody}
</table>
</body>
</html>
'''
html_handle = open('domain01.html','w')
html_handle.write(html_tpl.format(title = title, tbody = tbody))
html_handle.close() # 根据域名列表获取ip地址
def main(domain_file): f = open(domain_file,'r')
domain_list = f.readlines()
f.close() domain_ip = {}
for domain in domain_list:
domain_name = domain.rstrip()
ip_list = GetArecordIp(domain_name)
ip_city_list = [] # ip 不为空则处理
if ip_list:
for i in ip_list:
city = get_city(i)
ip_city = [i,city]
ip_city_list.append(ip_city)
# print json.dumps(ip_city_list).decode("unicode-escape")
# ip=','.join(str(i)for i in ip_city_list)
# json.dumps(ip_city_list).decode("unicode-escape")可以转为中文显示
domain_ip[domain_name] = ip_city_list
# print domain_name,json.dumps(ip_city_list).decode("unicode-escape")
else:
print "%s has no record" % domain_name # 将信息写入网页
write_to_html(domain_ip) if __name__ == '__main__':
domain_file = "domain_file.txt"
main(domain_file)

简单解析

#!/usr/bin/env python
#coding:utf-8 from socket import gethostbyname
DOMAIN= "ip02.txt" with open(DOMAIN,'r') as f: for line in f.readlines():
try:
host = gethostbyname(line.strip('\n')) #域名反解析得到的IP
except Exception as e:
with open('error.txt','a+') as ERR: #error.txt为没有IP绑定的域名
ERR.write(line.strip()+ '\n')
else:
with open('result.txt','a+') as r: #result.txt里面存储的是批量解析后的结果
r.write(line.strip('\n') + ' ') #显示有ip绑定的域名,用空格隔开
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. jsp页面的共用

    我们经常希望一个网页,根据不同得请求显示不同得数据. 方法就是在session中添加一个变量,根据不同得值区分不同得请求类型. 后台:request.getSession().setAttribute ...

  2. Debugger for chrome

    Debugger In VScode Getting Started Install the extension Debugger for chrome Config the launch.json ...

  3. Entity Framework 学习总结之十一:POCO

    POCO Entity Framework 4.0 为实体提供了简单传统 CLR 对象( Plain Old CLR Object / POCO )支持.实体对象可以独立于 EF 存在,由此 EF 更 ...

  4. Spark整合HBase,Hive

    背景: 场景需求1:使用spark直接读取HBASE表 场景需求2:使用spark直接读取HIVE表 场景需求3:使用spark读取HBASE在Hive的外表 摘要: 1.背景 2.提交脚本 内容 场 ...

  5. 新萌渗透测试入门DVWA 教程2:DWVA 的配置和暴力破解靶机

    啊呀,上周忘了更新了.开篇时分,简短的深表歉意. 好了,现在开始配置DWVS. 0x00 配置DWVS 首先输入密码登陆,用户名admin,密码password 进入界面后选择,DVWA Securi ...

  6. (6)设计一个TimeMap

    一.描述 设计一个TimeMap,基于key value的 支持两类操作set(string key, string value, int timestamp),get(string key, int ...

  7. c# c/s 框架的分页用户控件,还有事件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...

  8. blender 操作快捷键

    选择:a: 全选OR取消选择b: 矩形选择c: 画刷选择ctrl+左键:套索选择ctrl+alt+右键 : 环边选择ctrl+右键:ctrl+tab:切换 点,线,面 选择模式ctrl+- 选择/收缩 ...

  9. 【译】第十篇 SQL Server安全行级安全

    本篇文章是SQL Server安全系列的第十篇,详细内容请参考原文. 不像一些其他industrial-strength数据库服务,SQL Server缺乏一个内置保护个别数据记录的机制,称为行级安全 ...

  10. 0326 iframe和video experience

    今天的东西确实不少,很容易混淆,input下的属性太多,form下的属性也不少,内容多点,一时不能熟练掌握,晚上多拿出点时间练练 尤其是 form 和inpu那些属性格外别扭 下午的内嵌视频相对简单主 ...