获取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'] != '':
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指定域名的记录的更多相关文章
- DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录
相关学习资料 http://baike.baidu.com/link?url=77B3BYIuVsB3MpK1nOQXI-JbS-AP5MvREzSnnedU7F9_G8l_Kvbkt_O2gKqFw ...
- DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录(转)
http://www.cnblogs.com/LittleHann/p/3828927.html 相关学习资料 http://baike.baidu.com/link?url=77B3BYIuVsB3 ...
- DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录 专题
首先要做的就是配置域名的MX 记录啦: 先添加一条A记录: mail.abc.com 指向 你的服务器IP! 然后添加域名的MX 记录,指向mail.abc.com A 记录( 即域名MX 记录的值为 ...
- PHP 如何获取当前的域名
PHP 如何获取当前的域名.这是PHP最基础的东西,也是用得最多的,记录下来 <? //获取当前的域名: echo $_SERVER['SERVER_NAME']; //获取来源网址,即点击来到 ...
- 获取呈现在格表(table)记录的主键
用mouse点击表格(table)的行或是批定列,获取记录的主键值.在ASP.NET的MVC应用程序中,已经没有办法象ASP.NET的Data控件一样,如GridView,DataList和Repea ...
- 将excel中某列数据中,含有指定字符串的记录取出,并生成用这个字符串命名的txt文件
Python 一大重要的功能,就是可处理大量数据,那分不开的即是使用Excel表格了,这里我做下学习之后的总结,望对我,及广大同仁们是一个帮助Python处理Excel数据需要用到2个库:xlwt 和 ...
- charles 过滤指定域名
本文参考:charles 过滤指定域名 当使用"序列视图"的时候 请求多了有些时候会看不过来,Charles 提供了一个简单的 Filter 功能,可以输入关键字来快速筛选出 UR ...
- 关于怎么获取kafka指定位置offset消息(转)
1.在kafka中如果不设置消费的信息的话,一个消息只能被一个group.id消费一次,而新加如的group.id则会被“消费管理”记录,并指定从当前记录的消息位置开始向后消费.如果有段时间消费者关闭 ...
- 获取打开指定Action的所有应用包名
获取打开指定功能的所有应用:发消息,分享等等. 如打开网页,下面代码即可查看所有的浏览器 //查找所有浏览器 private void queryPackage() { PackageManager ...
随机推荐
- 自定义注解不能拦截controller层
1,首先在springMVC的配置文件中,webapp/WEB-INF/servlet.xml,加上AOP的相关内容: <beans xmlns="http://www.springf ...
- 在MAC下使用Robotframework+Selenium2【第二枪】如何处理Table点击指定记录
1.通过关键字Get Matching Xpath Count获取table中的记录 2.遍历Table所有记录 3.判断记录是否符合条件,做点击操作
- Android stadio 插件推荐--ok gradle
今天发现了一个好玩的插件,对于想要知道依赖怎么写的同学很有帮助. 写这篇文章的意义在于,以后我忘了的话,可以自己在博客中找到. 上地址: https://github.com/scana/ok-gra ...
- Null / Loopback (Null)
参考: http://www.cnblogs.com/caoguoping100/p/3654452.html https://wiki.wireshark.org/NullLoopback 抓包安装 ...
- Pascal ASCII和文本的转换
用于帮助新手理解ASCII码和字符型与整型的一段小程序,转载请注明出处 例如:输入 I love you 打印 73 32 108 111 118 101 32 121 111 117 13 10 P ...
- 【Invert Binary Tree】cpp
题目: Invert Binary Tree Total Accepted: 20346 Total Submissions: 57084My Submissions Question Solutio ...
- NOIP 2018 总结
NOIP 2018 总结 提高组: 应得分 \(100 + 100 + 40 + 100 + 50 + 44 = 434\). 考后期望得分 \(100 + 100 + 20 + 100 + 50 + ...
- os--留
os.path.abspath(path) #返回绝对路径 绝对路径和文件路径的区别,绝对路径是当前在操作文本的路径,文件路径是当前文本的文件的路径 os.path.basename(path) ...
- 深入理解CSS中的margin
1.css margin可以改变容器的尺寸 元素尺寸 可视尺寸--标准盒子模型中盒子的宽度是不包括margin值的,clientWidth 占据尺寸--包括margin的宽度 outWidth不在标准 ...
- 爬虫:Scrapy14 - Telnet 终端(Telnet Console)
Scrapy 提供了内置的 Telnet 终端,以供检查,控制 Scrapy 运行的进程.Telnet 仅仅是一个运行在 Scrapy 进程中的普通 Python 终端.因此你可以在其中做任何是. T ...