Cloudflare 批量删除 DNS 记录的方式

2022-07-12 21:48:19 +08:00
 estk

域名 NS 之前在阿里云,解析了泛域名*.domain.com

导入 cf 时,它自动帮我同步了 200+条记录

尝试在阿里云删除*.domain.com,等了十几分钟再导入依然 200+记录

尝试了几次发现没有阻止 cf 自动导入的方式,于是打算手动删除

但是 200+条太多,官方也没有批量删除的方式,只好借助 api 了

import axios from 'axios'

const apiEmail = 'cloudflare login email'
const apiKey   = 'Global API Key @ https://dash.cloudflare.com/profile/api-tokens'
const zoneId   = 'zone id of the domain in cloudflare'

const api = `https://api.cloudflare.com/client/v4/zones/${zoneId}/dns_records`
const headers = {'X-Auth-Email': apiEmail, 'X-Auth-Key': apiKey}
axios.request({url: `${api}?per_page=5000`, headers}).then(({data})=>{ 
  // https://api.cloudflare.com/#dns-records-for-a-zone-list-dns-records at List DNS Records
  let errorOccurs = false
  for (const dnsRecord of data.result||[]) {
    axios.request({url: `${api}/${dnsRecord.id}`, method: 'DELETE', headers}).then(({data})=>{
      console.log('delete result', data)
    }).catch(error=>{
      console.error(error, error.response?.data)
      errorOccurs = true
    })
    if (errorOccurs) break
  }
}).catch(error=>{
  console.error(error, error.response?.data)
})
2976 次点击
所在节点    Cloudflare
4 条回复
wdssmq
2022-07-13 14:43:02 +08:00
我之前是用官方的 PHP SDK 封装了个用。。(╯▽╰)
estk
2022-07-13 16:17:58 +08:00
@wdssmq
有的大神直接 shell 脚本
tofdoo
2022-07-29 17:26:12 +08:00
CF 的 API 支持二次开发 dns 接口吗?重新封装后让用户可以自己改的需求(也在啃文档...)
czyt
2022-12-09 12:10:55 +08:00
@tofdoo golang 的是可以的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865765

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX