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

获取dnspod指定域名的记录的更多相关文章

  1. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录

    相关学习资料 http://baike.baidu.com/link?url=77B3BYIuVsB3MpK1nOQXI-JbS-AP5MvREzSnnedU7F9_G8l_Kvbkt_O2gKqFw ...

  2. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录(转)

    http://www.cnblogs.com/LittleHann/p/3828927.html 相关学习资料 http://baike.baidu.com/link?url=77B3BYIuVsB3 ...

  3. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录 专题

    首先要做的就是配置域名的MX 记录啦: 先添加一条A记录: mail.abc.com 指向 你的服务器IP! 然后添加域名的MX 记录,指向mail.abc.com A 记录( 即域名MX 记录的值为 ...

  4. PHP 如何获取当前的域名

    PHP 如何获取当前的域名.这是PHP最基础的东西,也是用得最多的,记录下来 <? //获取当前的域名: echo $_SERVER['SERVER_NAME']; //获取来源网址,即点击来到 ...

  5. 获取呈现在格表(table)记录的主键

    用mouse点击表格(table)的行或是批定列,获取记录的主键值.在ASP.NET的MVC应用程序中,已经没有办法象ASP.NET的Data控件一样,如GridView,DataList和Repea ...

  6. 将excel中某列数据中,含有指定字符串的记录取出,并生成用这个字符串命名的txt文件

    Python 一大重要的功能,就是可处理大量数据,那分不开的即是使用Excel表格了,这里我做下学习之后的总结,望对我,及广大同仁们是一个帮助Python处理Excel数据需要用到2个库:xlwt 和 ...

  7. charles 过滤指定域名

    本文参考:charles 过滤指定域名 当使用"序列视图"的时候 请求多了有些时候会看不过来,Charles 提供了一个简单的 Filter 功能,可以输入关键字来快速筛选出 UR ...

  8. 关于怎么获取kafka指定位置offset消息(转)

    1.在kafka中如果不设置消费的信息的话,一个消息只能被一个group.id消费一次,而新加如的group.id则会被“消费管理”记录,并指定从当前记录的消息位置开始向后消费.如果有段时间消费者关闭 ...

  9. 获取打开指定Action的所有应用包名

    获取打开指定功能的所有应用:发消息,分享等等. 如打开网页,下面代码即可查看所有的浏览器 //查找所有浏览器 private void queryPackage() { PackageManager ...

随机推荐

  1. Python 外部函数调用库ctypes简介

    Table of Contents 1. 参考资料 2. ctypes简介 2.1. 数据类型 2.2. 调用.so/.dll 2.2.1. 加载动态链接库 2.2.2. 调用加载的函数 2.2.3. ...

  2. 抽象类的作用之一:sdk 传递你需要的参数

    抽象类可以干什么?抽象类可以让别人必须做一件事情,比如实现一个方法. 那它有什么作用呢? 我开始也不知道啊,后来慢慢的知道了,在开发中,我知道了它是干什么的,怎么用的.比如你要写一个sdk给别人用.但 ...

  3. videomon 环境搭建

    1.安装ACE-5.8.0.tar.bz2 tar -zxvf ACE-.tar.bz2 cd ACE_wrappers/mkdir buildcd build../configuremake &am ...

  4. 《Cracking the Coding Interview》——第11章:排序和搜索——题目3

    2014-03-21 20:55 题目:给定一个旋转过的升序排序好的数组,不知道旋转了几位.找出其中是否存在某一个值. 解法1:如果数组的元素都不重复,那么我的解法是先找出旋转的偏移量,然后进行带偏移 ...

  5. vim基本配置备份

    我的vim基本配置如下,在这里作个备份: set background=light syntax on set number set smartindent set expandtab set tab ...

  6. HTTP响应码

    更详细的内容参考:https://baike.baidu.com/item/HTTP状态码/5053660?fr=aladdin 转载CSDN作者:ddhsea 的文章 https://blog.cs ...

  7. eclipse集成python(Pydev插件安装)

    1.下载PyDev的压缩包,解压后会有features和plugins两个文件夹,将两个文件夹的内容拷贝到eclipse对应的文件夹中,重新启动eclipse 2.配置python 2.1打开ecli ...

  8. 【转载】Unity插件研究院之自动保存场景

    原文: http://wiki.unity3d.com/index.php?title=AutoSave  最近发现Unity老有自动崩溃的BUG. 每次崩溃的时候由于项目没有保存所以Hierarch ...

  9. ssh.sh_for_centos

    #!/bin/bash sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config sed -i 's/#Us ...

  10. 集训队日常训练20181124 DIV2

    急急忙忙要出去比赛就拉了一场有点sb的题目 5202: 网络寻路  时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte总提交: 15            ...