zoukankan      html  css  js  c++  java
  • 获取dnspod指定域名的记录

    #!/usr/bin/python
    #-*- coding: utf-8 -*-
    import os,requests,json
    import re,time,xlsxwriter
    
    #时间
    date=time.strftime("%Y-%m-%dT%H-%M-%S", time.localtime())
    #文件名 
    name='域名记录-{0}.xlsx'.format(date)
    #指定域名
    domail_name=""
    
    #登录测试
    url='https://dnsapi.cn/Info.Version'
    token=''
    
    data={'login_token':'{0}'.format(token),'format':'json'}
    r = requests.post(url,data=data)
    if r.json()['status']['code'] != '1':
        print('登录失败,检查网站,token,id')
        exit(0)
    else:
        print('登录成功,正在执行脚本')
    
    
    url='https://dnsapi.cn/Domain.List'
    
    data={'login_token':'{0}'.format(token),'format':'json','type':'all'}
    r = requests.post(url,data=data)
    json_data=r.json()
    
    id_name=dict()
    domain_name_all=json_data['domains']
    for i in domain_name_all:
        if domail_name == i['name']:
            id_name[i['id']]=i['name']
    
    #获取域名记录
    #获取全部域名的记录
    url='https://dnsapi.cn/Record.List'
    all_data=[]
    #获取域名id
    for i in id_name.keys():
        #获取的参数
        data={'login_token':'{0}'.format(token),'format':'json','domain_id':i}
        r = requests.post(url,data=data)
        json_data=r.json()
        #获取到的内容写入数组
        all_data.append(json_data)
    
    #筛选出匹配的内容
    doamin=dict()
    doamin_max=[]
    #匹配域名ip
    for i in all_data:
        #用于临时存放域名的数据
        tmp=[]
        #计算记录总数
        num=0
        for ii in i['records']:
            #获取ip段,ip段获取为空则设置为空
            if re.search('([0-9]{1,3}.){3}',ii['value']):
                #获取ip段
                tmp_ip=re.search('([0-9]{1,3}.){3}',ii['value']).group()
                #调整这里可以控制获取api的数据内容
                tmp.append({'name':ii['name'],'ip':tmp_ip,'line':ii['line'],'value':ii['value'],'enabled':ii['enabled']})
            else:
                #调整这里可以控制获取api的数据内容
                tmp.append({'name':ii['name'],'ip':'','line':ii['line'],'value':ii['value'],'enabled':ii['enabled']})
            num+=1
        domain_name=i['domain']['name']
        doamin_max.append({'name':domain_name,'num':num})
        #判断是否为空,不为空代表该域名有符合条件的数据
        if len(tmp)!=0:
            doamin[i['domain']['name']]=tmp
    
    
    
    #设置文件名
    workbook=xlsxwriter.Workbook(name)
    #设置宽度
    worksheet=workbook.add_worksheet()
    worksheet.set_column('A:B',20)
    worksheet.set_column('C:C',22)
    worksheet.set_column('D:D',20)
    worksheet.set_column('E:E',15)
    worksheet.set_column('F:F',15)
    worksheet.set_column('H:H',20)
    worksheet.set_column('I:I',15)
    worksheet.freeze_panes(1,0)#
    #设置单元格背景
    xlsx_err=workbook.add_format()
    xlsx_err.set_bg_color('#D9534F')
    
    #设置文档第一栏
    title = [u'域名',u'子域名',u'IP段',u'IP',u'线路',u'启用','',u'域名',u'总数']
    worksheet.write_row('A1',title)
    #初始值为2
    num=2
    #循环域名ID
    for i in doamin.keys():
        #循环域名里的记录
        for ii in doamin[i]:
            #数组变量
            tmp=[i,ii['name'],ii['ip'],ii['value'],u'{0}'.format(ii['line']),ii['enabled']]
            #1为启用,0为未启用,未启用的标红
            if ii['enabled'] == '1': 
                worksheet.write_row('A{0}'.format(num),tmp)
            else:
                worksheet.write_row('A{0}'.format(num),tmp,xlsx_err)
            
            #自动加1
            num += 1
    #设置筛选
    worksheet.autofilter('A1:F{0}'.format(num-1))
    
    #写入域名总数
    num=2
    for i in doamin_max:
        tmp=[i['name'],i['num']]
        worksheet.write_row('H{0}'.format(num),tmp)
        num +=1
    
    #关机文档
    workbook.close()
    #
    print('执行完毕,文件路径'+os.path.abspath(os.curdir)+"\"+name)
    
    #print (r.json())
    #print (r.text)
  • 相关阅读:
    如何在myeclipse上使用git(码云)
    myeclipse使用git图文教程
    内存buffer转换为多维数组访问
    fd究竟是何方神圣
    getline c实现
    TLB初始化 Missing Handler,MIPS R3K mips_init_tlb
    Ubuntu 16.04 风扇特别响解决办法
    MySQL安装与卸载
    linux项目环境部署入门
    MySQL入门笔记一
  • 原文地址:https://www.cnblogs.com/cainiaoit/p/8582551.html
Copyright © 2011-2022 走看看