Python批量编辑cloudflare域名
2019-10-17 11:08
893 人阅读

#!/usr/bin/python # !coding:utf-8 import CloudFlare import os import os.path cf = CloudFlare.CloudFlare(email='abceegfga@fdjsalh', token='fdasfb14c6c090ffadjkhe7fef7212a') # cloudfare登入认证 url_file = 'D:/python/cloudfare/domain' # **********以上为可能需要配置到的东西********* # 返回一个列表,里面获取的是指定文件中的url def get_url_list(urlfile): url_list = [] with open(urlfile) as f: urllist = f.readlines() if len(urllist) > 0: for url in urllist: url_list.append(url.strip()) return url_list # 添加txt记录传入url,记录,值 def add_txt_recode(url, srccontext,descontext): zone_id = get_zoneid(url) recode = {'name': srccontext, 'type': 'TXT', 'content': descontext} try: cf.zones.dns_records.post(zone_id, data=recode) except: print(url + "\t\t该记录已经添加过") # 添加A记录,传递域名,二级域名,和对应A记录 def add_a_recode(url, zone, ip): zone_id = get_zoneid(url) recode = {'name': zone, 'type': 'A', 'content': ip, 'proxied': False} cf.zones.dns_records.post(zone_id, data=recode) # 添加CNAME记录,传递要操作的域名,二级域名,和对应cname值,如果二级域名传递的是域名本身,代表添加根记录 def add_cname_recode(url, zone, cnameurl): zone_id = get_zoneid(url) recode = {'name': zone, 'type': 'CNAME', 'content': cnameurl, 'proxied': False} cf.zones.dns_records.post(zone_id, data=recode) # 判断是否添加该域名,如果有添加返回1,未添加返回0 def if_add(url): zone_infos = cf.zones.get(params={'name': url}) if len(zone_infos) == 0: return 0 return 1 # 获取zoneid,如果域名没有加则加域名后再获取 def get_zoneid(url): # 如果没有添加域名 if if_add(url) == 0: zone_info = cf.zones.post(data={'name': url}) return zone_info['id'] # 如果有添加域名后,再获取id else: zone_infos = cf.zones.get(params={'name': url}) return zone_infos[0]['id'] # 清除某个域名的所有记录 def clean_recode(url): zone_id = get_zoneid(url) dns_records = cf.zones.dns_records.get(zone_id) for dns_record in dns_records: dns_record_id = dns_record['id'] cf.zones.dns_records.delete(zone_id, dns_record_id) # 删除某个域名的某条记录,第一个参数为域名,第二个参数为二级域名,传入@代表删除根记录 def delete_record(url, dns_name): zone_id = get_zoneid(url) try: if dns_name == '@': dns_records = cf.zones.dns_records.get(zone_id, params={'name': url}) for dns_record in dns_records: dns_record_id = dns_record['id'] cf.zones.dns_records.delete(zone_id, dns_record_id) else: dns_records = cf.zones.dns_records.get(zone_id, params={'name': dns_name + '.' + url}) for dns_record in dns_records: dns_record_id = dns_record['id'] cf.zones.dns_records.delete(zone_id, dns_record_id) except: print("删除失败,应该不存在") def main(): urllist=get_url_list(url_file) for url in urllist: # 清除该域名老的记录 delete_record(url, 'abc') # 给该域名添加cname记录 add_cname_recode(url, 'ag','abcd.egaf.com') print("执行完毕,一切正常") if __name__ == '__main__': main()
和博主交个朋友吧
