Linux
Kali 安装
Kali-WIFI密码(字典)
Armbian安装OMV(NAS)
NPS 内网穿透
CloudFlare
CloudFlare-免端口
CloudFlare-KV存储
API 使用
API-抓包信息使用
Linux-系统配置
Linux-更换源
Linux-一键更换源
Linux-权限
Linux-分区管理
Linux-网卡配置
Linux 端口转发
Linux 交换内存
Linux 进程优先级
Linux 共享打印机
Linux-自定义服务(支持Docker开机自启)
Linux-硬/软链接/挂载
Linux-系统时钟
Linux-清理命令记录
Linux-一键DD脚本
Linux-安装根证书
Linux-TheFuck(命令纠正)
Linux 服务器
Linux-面试鸭
Linux-Mall-Cook(商店可视化搭建)
Linux-Scratch
Linux-CasaOS(家庭云操作系统)
Linux-TiddlyWiki(非线性网页笔记)
Linux-拖拽式H5
Linux-鲁班H5
Linux-SSL证书续订
Linux-acme(SSL证书脚本)
SSL证书转换
SSL-httpsok
SSL-其它工具
Linux-LoveCards(表白墙)
Linux-游戏导航
Linux 常用命令
Linux-scp
Linux-打包/解压/压缩
Linux-SSH
Linux-portknocking(端口敲击)
Linux-获取当前公网IP
Linux-自动挂载盘
Linux-代理
Linux-nmap(局域网扫描)
Linux-jq(JSON处理)
Linux-DDNS(自制脚本)
Linux-shell传递参数
Linux-if(判断)
Linux-curl/wget
Linux-which(查看命令所在路径)
Linux-Maven
Linux-ncdu(清理日志)
Linux-共享
Linux-screen(终端切换)
Linux-Macchanger(MAC修改)
Linux-iptables(包过滤防火墙系统)
Linux-祸害人脚本
Linux-模拟网络延迟环境
Linux-Git
Linux-apt(安装软件)
Linux-crontab(定时任务)
Linux-nano/vi/vim 编辑器
Linux 环境安装
Linux 安装 Node.js
Node.js-创建通用执行
Linux 安装 Java
Linux 安装 Go
域名注册
MariaDB-相关操作
未测试开源项目
SQL 学习
SQL-常用指令
Ansible(自动化运维)
Zabbix(运维监控)
网络设备概述
备份概述
雷池WAF
Linux-新旧服务器同步rpm软件包
本文档使用 MrDoc 发布
-
+
首页
CloudFlare
[CloudFlare](https://dash.cloudflare.com/) > CloudFlare `API 令牌` 和 `API 密钥` 不是一个东西,前者只能用作于指定区域,后者为全局 > * `API 令牌`使用 `Authorization` 进行授权 > `-H "Authorization: Bearer <API 令牌>"` > * `API 密钥`使用的 `x-auth-email` 和 `x-auth-key` 进行授权 > `-H "X-Auth-Email: <账户邮箱>" -H "X-Auth-Key: <API密钥>"` ## 删除全部 DNS 别问我为啥会有这个东西,买域名遇到坑了,估计这个域名之前有人用过,并且在 CloudFlare 上使用的,只要添加进来就会自动同步这些解析,`使用其他域名管理的不会有这些`,CloudFlare 用习惯了不想换,就有了这些  坑啊,添加了 200个解析,手动删除估计明年了 所以这里我使用 CloudFlare API 进行删除 创建一个 [CloudFlaredel.sh](/media/attachment/2022/03/CloudFlare删除全部DNS.sh),并填入一下内容,注意头部需要设成你自己的 ``` #!/bin/sh #CloudFlare 的帐号,区域ID(区域概述中查看),API令牌(推荐使用创建的区域令牌) record_name='<账户邮箱>' zoneid='<区域ID>' cftoken='<API密钥>' #获取dns json文件并存储 curl -X GET "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records/" -H "X-Auth-Email: $record_name" -H "X-Auth-Key: $cftoken" -H "Content-Type: application/json" > ~/filename.json #从文件中获取每个dns的id,并存入变量 recordid=`jq -r '[.result[].id]|join(",")' filename.json` #以下4条为:备份之前的分隔符环境变量;指定分隔符;将字符串分割成数组;恢复分隔符环境变量 OLD_IFS="$IFS" IFS="," recordid=($recordid) IFS="$OLD_IFS" #查看数组数量 echo "当前数组数量为: ${#recordid[@]}" #查看数组内容 echo "数组内容为: ${recordid[@]}" ##循环输出数组内容,和上方的作用一样 #for var in ${recordid[@]} #do # echo $var #done echo -e "\n开始删除\n---------------------------------" #开始数组循环,把数组变量带入到删除API当中,依次执行删除 for i in ${!recordid[@]} do echo -e "\n正在删除:${recordid[$i]}" # echo curl -X DELETE "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records/${recordid[$i]}" -H "X-Auth-Email: $record_name" -H "X-Auth-Key: $cftoken" -H "Content-Type: application/json" curl -X DELETE "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records/${recordid[$i]}" -H "X-Auth-Email: $record_name" -H "X-Auth-Key: $cftoken" -H "Content-Type: application/json" done #删除用于临时存储json的文件 rm ~/filename.json echo -e "\n---------------------------------\n删除完成,单次上限是100条,如果数量过多,可再次运行" ``` 修改完你的参数后,使用 `sh ~/CloudFlareDel.sh` 进行运行 > 批量添加同理,可以程序改一下就可以实现 > 多个变量,就可以实现名称对应不同的IP ### 详细推导过程 #### 删除 DNS记录 API 通过 [API文档](https://api.cloudflare.com/) 可得知,[删除 DNS记录的 API](https://api.cloudflare.com/#dns-records-for-a-zone-delete-dns-record) 为 ```bash curl -X DELETE "https://api.cloudflare.com/client/v4/zones/[区域ID]/dns_records/[DNS记录ID]" \ -H "X-Auth-Email: [账户邮箱]" \ -H "X-Auth-Key: [API密钥]" \ -H "Content-Type: application/json" ``` 其中 `区域ID` 在当前域名下的描述中右下可查看,`DNS记录ID` 只能通过API查询,稍后会说 #### 查询 DNS记录 API [列出所有 DNS记录](https://api.cloudflare.com/#dns-records-for-a-zone-list-dns-records) ```bash curl -X GET "https://api.cloudflare.com/client/v4/zones/[区域ID]/dns_records" \ -H "X-Auth-Email: <账户邮箱>" \ -H "X-Auth-Key: <API密钥>" \ -H "Content-Type: application/json" ``` 从返回的 JSON记录 中可以得知,`DNS记录ID` 为返回的 `result` 中 `id` 参数,所以我们还需要存储下来返回信息并截取关键字段 #### 储存并截取 DNS记录 ID 更改一下,把获取的 DNS 记录,储存到本地用于调用 ```bash #更改一下,把获取的 DNS记录,储存到本地用于调用 curl -X GET "https://api.cloudflare.com/client/v4/zones/<区域ID>/dns_records" \ -H "X-Auth-Email: <账户邮箱>" \ -H "X-Auth-Key: <API密钥>" \ -H "Content-Type: application/json"\ > ~/filename.json #从文件中获取每个dns的id,并存入 recordid变量 recordid=`jq -r '[.result[].id]|join(",")' filename.json` #以下4条为:备份之前的分隔符环境变量;指定分隔符;将字符串分割成数组;恢复分隔符环境变量 #结果存在 recordid变量 之中 OLD_IFS="$IFS" IFS="," recordid=($recordid) IFS="$OLD_IFS" ``` #### 循环删除 DNS记录 根据储存的 `DNS记录ID`,进行循环删除 ```bash #开始数组循环,把数组变量带入到删除API当中,依次执行删除 for i in ${!recordid[@]} do curl -X DELETE "https://api.cloudflare.com/client/v4/zones/<区域ID>/dns_records/${recordid[$i]}" \ -H "X-Auth-Email: <账户邮箱>" \ -H "X-Auth-Key: <API密钥>" \ -H "Content-Type: application/json" done #删除用于临时存储json的文件 rm ~/filename.json ```
造物者W
2022年6月8日 19:32
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码