#!/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'] != '':
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'] == '':
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)