通过 API 删除 Cloudflare 注册的域名

本文叙述的不是删除托管在 Cloudflare 的域名(即在别处注册,将 NS 指向 Cloudflare),而是删除 Cloudflare 注册的域名。

您需要预先在 Shell 中定义以下变量:

1
2
3
export CF_EMAIL=
export CF_GLOBAL_API_KEY=
export CF_ACCOUNT_ID=

删除 Cloudflare 注册域名的 DNS 托管

如果域名是在 Cloudflare 注册的,那么 Cloudflare 控制台将不允许您删除域名的 DNS 托管。但是,您可以通过 API 删除域名的 DNS 托管。

注意

执行此操作有一定的风险,可能导致账户的不一致性,或域名无法再使用。除非确定以后不需要该域名,否则不要执行此操作。

删除在 Cloudflare 注册的域名的 DNS 托管后,有一定概率可以重新添加回来,但也可能会要求更改 NS 记录以重新验证域名的所有权,但 Cloudfalre 注册的域名不支持更改 NS 记录,则陷入死锁、该域名不再可用。

1
2
3
4
5
# 首先定义 Zone ID,可以在 Cloudflare 控制台中查看
export ZONE_ID=
curl -X DELETE \
https://api.cloudflare.com/client/v4/zones/$ZONE_ID \
-H "X-Auth-Email: $CF_EMAIL" -H "X-Auth-Key: $CF_ACCOUNT_ID"

向注册局提交删除域名请求

注意

该操作不可逆,会从注册局处删除该域名并不提供退款,仅当不再需要该域名的时候执行此操作。注册局具体何时会再释放域名也是不确定的。

此 API 接口未被 Cloudflare 官方文档记录,可能导致非预期的错误,或在未来不可用。

1
2
3
4
5
# 首先定义域名
export DOMAIN=example.com
curl -X DELETE \
https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT_ID/registrar/domains/$DOMAIN \
-H "X-Auth-Email: $CF_EMAIL" -H "X-Auth-Key: $CF_GLOBAL_API_KEY"

执行命令后,Cloudflare 会向您填写的 Whois 邮箱中发生一份验证码,您需要带上验证码再次请求该 API。

1
2
3
4
5
export AUTH_CODE=
curl -X DELETE \
https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT_ID/registrar/domains/$DOMAIN \
-H "X-Auth-Email: $CF_EMAIL" -H "X-Auth-Key: $CF_GLOBAL_API_KEY" \
--data "{\"auth_code\":\"$AUTH_CODE\"}"