#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. BBS总结

    表设计 from django.db import models from django.contrib.auth.models import AbstractUser # Create your m ...

  2. java内部类的作用

    java内部类的作用 定义: 放在一个类的内部的类我们就叫内部类. 二. 作用: 1.内部类可以很好的实现隐藏 一般的非内部类,是不允许有 private 与protected权限的,但内部类可以 2 ...

  3. SQL Server进阶(十一)可编程对象——变量、 批、流元素、 游标

    变量 --------------------------------------------------------------------- -- Variables -------------- ...

  4. 开源框架.netCore DncZeus学习(四)项目升级

    今天发现开源代码从1.0.0.1升级到了1.0.1.0,主要去掉了id主键,升级办法打开DncZeus,右键Git Bash Here,输入以下命令 合并失败,因为上一节尝试修改了几个代码,解决办法 ...

  5. springboot 02-PropertiesFile 自定义配置属性,多环境配置

    application.properties: # 自定义配置 test.hello.world = HelloWorld test.person.name = 哈哈 test.person.sex ...

  6. Java SE之调整JVM内存笔记

    [文档整理系列]  Java SE之调整JVM内存笔记 一般JVM内存限制是64Mbyte Eclipse下 Run as configrationArguments选项:-Xmx80m [设置虚拟机 ...

  7. Ubuntu18.04安装搜狗拼音输入法皮肤透明解决方法

    解决方法: 去搜狗输入法官网下载一个新的皮肤,然后右键用“搜狗输入法”打开,就解决了!!!

  8. python之字典的增删改查

    Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型.字典都是无序的,但查询速度快. 字典是一个key/value的集合,key可以是任意可被哈希(内部key ...

  9. Kafka如何保证消息不丢失不重复

    首先需要思考下边几个问题: 消息丢失是什么造成的,从生产端和消费端两个角度来考虑 消息重复是什么造成的,从生产端和消费端两个角度来考虑 如何保证消息有序 如果保证消息不重不漏,损失的是什么 大概总结下 ...

  10. MD5加密文件

    package cn.net.comsys.ut.util; import java.io.File;import java.io.FileInputStream;import java.io.IOE ...