使用脚本利用API批量删除cloudflare托管的域名解析条目

in 实用资源 with 0 comment

cloudflare 一直是我这种免费党中的良心平台,光是域名托管这一项,简直不要太好用了。

不过CF的域名DNS托管,不能批量的编辑DNS解析的条目。
今天我在整理一个域名时,发现之前安装了一台邮件服务器时,批量的导入了非常多的DNS解析条目,全部的加起来有60多条,这一条一条删除,不知道要删除到什么时候去。

上网找了一下,是可以使用cloudflare的API接口,用脚本去快速删除这些条目的。

获取API TOKEN

首先,打开 https://dash.cloudflare.com/profile/api-tokens ,点击左侧的AIP令牌,点击创建令牌。
2024-03-06T05:54:55.png

点击编辑区域DNS的使用模板
2024-03-06T05:56:00.png

更改区域资源里,指定你要编辑的域名,或是全部域名。
2024-03-06T05:56:57.png

最后复制产生出来的令牌。

获取域名的区域ID

在域名的概述页面,右下角有一个区域ID,记下这个ID。
2024-03-06T05:59:06.png

使用PowerShell脚本批量删除

使用以下脚本,快速批量一次性删除所有解析条目。

$API_TOKEN = "xxxxxxxxxxxxxxxxxxxxxxxxx"
$ZONE_ID   = "xxxxxxxxxxxxxxxxxxxxxxxx"

$baseUrl = "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records"

$headers = @{
  'Authorization' = "Bearer $API_TOKEN"
  'Content-Type'  = "application/json"
}

$listUrl = $baseUrl + '?per_page=500'
Write-Host $listUrl
$records = Invoke-RestMethod -Uri $listUrl -Method 'GET' -Headers $headers
$records = $records | Select-Object -ExpandProperty result

foreach ($record in $records) {
  Write-Host "Deleting $($record.name) that points to $($record.content)"

  $deleteUrl = $baseUrl + '/' + $record.id
  Invoke-RestMethod -Uri $deleteUrl -Method 'DELETE' -Headers $headers
  Write-Host $deleteUrl
}

将上面的API_TOKEN后面的XXX,替换成你的令牌,ZONE_ID后面的XXX替换成你的区域ID。

然后将代码,粘贴到PowerShell命令终端里,回车即可看到删除的所有输出日志。

其他

上面这个脚本,会一下子全部删除掉解析,建议先做好解析条目的备份,导出就可以了。

也有一些开源的脚本,没仔细研究,有兴趣的可以试试。

https://github.com/Cyb3r-Jak3/cloudflare-utils

Responses