#!/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)