CloudFlare API:批量添加域名并添加解析记录
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,小生博客:http://xsboke.blog.51cto.com -------谢谢您的参考,如有疑问,欢迎交流这里先说一下,CloudFlare是一家
千家信息网最后更新 2026年10月31日CloudFlare API:批量添加域名并添加解析记录
小生博客:http://xsboke.blog.51cto.com
-------谢谢您的参考,如有疑问,欢迎交流这里先说一下,CloudFlare是一家DNS供应商(我是这么理解的),他有提供很多服务(HTTPS/CDN等等),具体的大家可以自己去官网看一下:www.cloudflare.com
CloudFlare建议使用linux的curl命令使用开发的API
因shell不能很好的处理CloudFlare返回的json数据,所以在使用shell的基础上,增加了python脚本
本文件一共有四个脚本文件配合使用:
- domians.txt :用来存放需要添加的域名
- env.env :存放各种变量
- filter_zone_id.py :用于将CloudFlare返回的数据过滤(过滤出域名及其区域ID)
- filter_dns_id.py :用于将CloudFlare返回的数据过滤(过滤出解析记录及其区域ID)
- main.sh :存放linux命令,执行时也是执行这一个脚本即可
一、 domain.txt就不用介绍了,就是把顶级域名写到里面,一行一个
二、 env.env
#!/bin/bash#通用变量#当前目录PWD=$(pwd)PYTHON=$(which python)ECHO=$(which echo)#这里DNS指的是解析记录#账号CF_API_EMAIL=CloudFlare的登录账号#秘钥CF_API_KEY=在用户信息里面查看"Global KEY"#组织名organization_name="组织名"#组织IDorganization_id="组织ID"#设置CNAME 和 IPCONTENT_CNAME=域名需要解析的别名"CNAME"CONTENT_IP=域名需要解析的别名IP#get_zone_id.cf -- 存放新增域名时Cloudflare返回的JSON 数据#get_dns_id.cf -- 存放获取DNS_ID时Cloudflare返回的JSON 数据#filter_zone_id.py -- 用于从 "get_zone_id.cf" 中过滤出域名及其相对应的区域ID并写入文件 "zone_id.cf"#filter_dns_id.py -- 用于从 "get_dns_id.cf" 中过滤出DNS_ID及其DNS_NAME并写入文件 "dns_id.cf"二、main.sh
#!/bin/bashsource ./env.env#新增域名for domain in $(cat $PWD/domains.txt)do curl -X POST -H "X-Auth-Key: ${CF_API_KEY}" \ -H "X-Auth-Email: ${CF_API_EMAIL}" \ -H "Content-Type: application/json" "https://api.cloudflare.com/client/v4/zones" \ --data '{"name":"'"${domain}"'","jump_start":true,"organization":{"name":"'"${organization_name}"'","id":"'"${organization_id}"'"}}' >> $PWD/get_zone_id.cf ${ECHO} -e "\n" >> $PWD/get_zone_id.cfdone#执行python脚本,过滤出域名的区域ID$PYTHON $PWD/filter_zone_id.py#获取DNS ID列表while read linedo ZONE_NAME=$(${ECHO} "$line" | awk '{print $1}') ZONE_ID=$(${ECHO} "$line" | awk '{print $2}') curl -X GET "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records" \ -H "X-Auth-Email: ${CF_API_EMAIL}" -H "X-Auth-Key: ${CF_API_KEY}" \ -H "Content-Type: application/json" >> $PWD/get_dns_id.cf ${ECHO} -e "\n" >> $PWD/get_dns_id.cfdone < $PWD/zone_id.cf#执行python脚本,过滤出DNS_ID$PYTHON $PWD/filter_dns_id.py#删除DNS记录#删除DNS记录还需要指定区域ID,每个域名的区域DI不同,所以进行一个判断,判断DNS_NAME是否模糊匹配之前取到的ZONE_NAME#如果匹配则使用这个ZONE_IDwhile read zonedo ZONE_NAME=$(${ECHO} "$zone" | awk '{print $1}') ZONE_ID=$(${ECHO} "$zone" | awk '{print $2}') while read dns do DNS_NAME=$(${ECHO} "$dns" | awk '{ print $1 }') DNS_ID=$(${ECHO} "$dns" | awk '{ print $2 }') if [[ "*$DNS_NAME" =~ "$ZONE_NAME" ]] then curl -X DELETE "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${DNS_ID}" \ -H "X-Auth-Email:${CF_API_EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type:application/json" fi done < $PWD/dns_id.cfdone < $PWD/zone_id.cf#增加DNS记录#TTL=1 为自动#proxied=true 使用CF的CDN,等于false是不使用#data传入变量格式: "'"$EVN"'"#设置变量while read linedo ZONE_NAME=$(${ECHO} "$line" | awk '{print $1}') ZONE_ID=$(${ECHO} "$line" | awk '{print $2}') curl -X POST "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records" \ -H "X-Auth-Email:${CF_API_EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type:application/json" \ --data '{"type":"A","name":"@","content":"'"${CONTENT_IP}"'","ttl":1,"priority":10,"proxied":true}' curl -X POST "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records" \ -H "X-Auth-Email:${CF_API_EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type:application/json" \ --data '{"type":"CNAME","name":"www","content":"'"${CONTENT_CNAME}"'","ttl":1,"priority":10,"proxied":false}' curl -X POST "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records" \ -H "X-Auth-Email:${CF_API_EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type:application/json" \ --data '{"type":"CNAME","name":"m","content":"'"${CONTENT_CNAME}"'","ttl":1,"priority":10,"proxied":false}'done < $PWD/zone_id.cf三、filter_zone_id.py
#!/usr/bin/env python#*- coding:utf-8 -*#打开文件获取添加域名成功后返回的数据,然后获取到域名的区域ID#通过区域ID获取DNS列表import jsonimport osimport traceback#traceback 完整输出报错信息#str(e) 只给出异常信息,不包括异常信息的类型,如1/0的异常信息#repr(e) 给出较全的异常信息,包括异常信息的类型,如1/0的异常信息PWD = os.getcwd()PWD_GET = PWD+'/get_zone_id.cf'PWD_ZONE = PWD+'/zone_id.cf'ERROR_FILE = PWD+'/zone_error.log'#读取添加域名时返回的字符串,并且循环写入字典,以便于过滤出域名的区域IDwith open (PWD_GET,'r') as file: i = 0 j = 0 dict = {} list = [] for line in file: if line.strip == " " or line == "\n" or line == " \n": continue try: dict[i]=json.loads(line) i+=1 except Exception as e: j+=1 with open (ERROR_FILE,'a+') as file: title = "----------\t\t第%d条报错信息\t\t---------"%(j) + "\n" #info = "报错信息:" + traceback.format_exc() + "\n" info = "报错信息:" + repr(e) + "\n" mation = "报错行:" + line + "\n" file.writelines(title) file.writelines(info) file.writelines(mation) continue#获取所有的key,然后进行循环遍历,获取每个域名的区域IDkeys_list = dict.keys()for key in keys_list: ID=dict[key]['result']['id'] NAME=dict[key]['result']['name'] with open (PWD_ZONE,'a+') as file: line = NAME + " " + ID + "\n" file.writelines(line)四、filter_dns_id.py
#!/usr/bin/env python#*- coding:utf-8 -*#打开文件读取cloudflare返回的DNS IDimport jsonimport osPWD = os.getcwd()PWD_GET = PWD+'/get_dns_id.cf'PWD_DNS = PWD+'/dns_id.cf'#读取获取DNS ID时返回的字符串,并且循环写入字典,以便于过滤出DNS IDwith open (PWD_GET,'r') as file: i = 0 dict = {} for line in file: if line.strip == " " or line == "\n" or line == " \n": continue dict[i]=json.loads(line) i+=1key_list = dict.keys()for key in key_list: list = dict[key]['result'] #一个域名可能有多个DNS记录,cloudflare返回的是一个列表,列表中是一个一个的字典, #一个key-values代表一个DNS记录,所以这里需要遍历列表中的字典 #通过取列表的索引值,循环每一个位置的字典 for i in list: with open (PWD_DNS,'a+') as file: line = i['name'] + " " + i['id'] + "\n" file.writelines(line)
域名
信息
区域
数据
文件
字典
脚本
变量
循环
别名
命令
字符
字符串
类型
账号
utf-8
不同
成功
一家
一行
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
小米移动互联网科技园
科技和互联网公司
互联网科技保险
互联网属科技
科技创新与互联网经济
重庆互联网络科技
广州凡科互联网科技
猫创互联网科技
广州紫鲸互联网科技
互联网科技公司介绍
顺网科技2021年互联网排名
中国最先进互联网科技公司
互联网科技博主是什么意思
互联网5g黑科技有哪些
互联网金融科技元年
互联网科技实习生岗位
易企秀互联网科技是做什么的
互联网科技新闻
互联网金融运营模式中的金融科技
互联网科技职业技能培训学校
互联网核心科技是什么
智慧科技互联网
无线互联网科技
碳银互联网科技有限公司
互联网 新科技
江苏南京365互联网科技
互联网教育科技公司vipkid
汽车互联网创新科技园
洛阳昕诺飞互联网科技有限公司
厦门江牛科技互联网