zoukankan      html  css  js  c++  java
  • python批量解析域名a记录

    #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>
    <td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>
    <tr>
    ' % (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('
    '))  #域名反解析得到的IP
            except Exception as e:
                with open('error.txt','a+') as ERR:  #error.txt为没有IP绑定的域名
                    ERR.write(line.strip()+ '
    ')
            else:
                with open('result.txt','a+') as r: #result.txt里面存储的是批量解析后的结果
                    r.write(line.strip('
    ') + '                                       ')   #显示有ip绑定的域名,用空格隔开
                    r.write(host + '
    ')
  • 相关阅读:
    JAVA知识点在整理(可供面试参考)
    Spring Destroying singletons ... root of factory hierarchy 问题【已解决】
    《Spring AOP的设计和实现方式》
    java源码集合体系解析
    springcloud的一些自己想法
    部署一套单Master的K8s集群
    K8S系统学习-----Pod 容器组
    RH358学习笔记--8(使用HAProxy终止HTTPS流量和并进行负载均衡)
    Docker 资源汇总
    RH358学习笔记--8(使用Nginx配置Web服务器学习)
  • 原文地址:https://www.cnblogs.com/reblue520/p/9643559.html
Copyright © 2011-2022 走看看