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)
  • 相关阅读:
    Chapter 03Using SingleRow Functions to Customize Output(03)
    Chapter 03Using SingleRow Functions to Customize Output(01)
    Chapter 04Using Conversion Functions and Conditional ExpressionsNesting Functions
    Chapter 04Using Conversion Functions and Conditional ExpressionsGeneral Functions
    Chapter 11Creating Other Schema Objects Index
    传奇程序员John Carmack 访谈实录 (zz.is2120)
    保持简单纪念丹尼斯里奇(Dennis Ritchie) (zz.is2120.BG57IV3)
    王江民:传奇一生 (zz.is2120)
    2011台湾游日月潭
    2011台湾游星云大师的佛光寺
  • 原文地址:https://www.cnblogs.com/cainiaoit/p/8582551.html
Copyright © 2011-2022 走看看