上一篇 下一篇 分享链接 返回 返回顶部

Cloudflare API 实战指南:DNS 管理、缓存清理与自动化命令大全

发布人:慈云数据-客服中心 发布时间:5小时前 阅读量:5

Cloudflare API接口调用教程|附完整命令

Cloudflare 是目前非常常用的 CDN、DNS、WAF 和边缘安全服务平台。对于个人站长、开发者、运维工程师来说,除了在 Cloudflare 控制台中手动配置域名、DNS 解析、缓存规则、防火墙规则之外,更高效的方式是通过 Cloudflare API 进行自动化管理。

例如,你可以通过 API 完成以下操作:

  • 自动查询域名 Zone ID;
  • 自动添加、修改、删除 DNS 解析记录;
  • 批量清理 Cloudflare 缓存;
  • 查询账号信息;
  • 查询 DNS 记录;
  • 自动更新动态 IP;
  • 在 CI/CD 流程中发布后自动刷新 CDN 缓存;
  • 编写脚本统一管理多个域名。

本文将以实用为主,详细介绍 Cloudflare API 的调用方式,并附上完整 curl 命令示例,方便你直接复制使用。


一、Cloudflare API 简介

Cloudflare API 是 Cloudflare 官方提供的 HTTP 接口,开发者可以通过 REST API 的方式管理账号、域名、DNS、缓存、防火墙、规则集等资源。

Cloudflare API 的基础地址为:

https://api.cloudflare.com/client/v4

大多数接口都遵循以下格式:

https://api.cloudflare.com/client/v4/资源路径

例如:

https://api.cloudflare.com/client/v4/zones

用于查询当前账号下的域名区域信息。

Cloudflare API 返回的数据通常是 JSON 格式,标准返回结构大致如下:

{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {}
}

其中:

字段 说明
success 请求是否成功
errors 错误信息
messages 提示信息
result 实际返回的数据

二、调用 Cloudflare API 前的准备工作

在正式调用 API 之前,需要准备以下内容:

  1. Cloudflare 账号;
  2. 已接入 Cloudflare 的域名;
  3. API Token;
  4. 本地终端环境;
  5. curl 命令工具;
  6. 可选:jq JSON 解析工具。

三、创建 Cloudflare API Token

Cloudflare API 支持两种认证方式:

  1. Global API Key;
  2. API Token。

现在更推荐使用 API Token,因为它可以精细控制权限,安全性更高。

1. 登录 Cloudflare 控制台

访问:

https://dash.cloudflare.com/

登录你的 Cloudflare 账号。

2. 进入 API Token 页面

点击右上角头像,进入:

My Profile > API Tokens

或者直接访问:

https://dash.cloudflare.com/profile/api-tokens

3. 创建 Token

点击:

Create Token

Cloudflare 提供了一些模板。常见场景可以使用以下模板:

  • Edit zone DNS:用于管理 DNS;
  • Purge Cache:用于清理缓存;
  • Read all resources:用于只读查询。

如果你希望自己创建权限,可以选择:

Create Custom Token

四、推荐的 API Token 权限配置

如果你只是想管理某个域名的 DNS,可以设置如下权限:

Permissions:
Zone - DNS - Edit
Zone - Zone - Read

Zone Resources:
Include - Specific zone - example.com

如果你想清理缓存,可以设置:

Permissions:
Zone - Cache Purge - Purge
Zone - Zone - Read

Zone Resources:
Include - Specific zone - example.com

如果你既要管理 DNS,又要清理缓存,可以组合权限:

Zone - DNS - Edit
Zone - Zone - Read
Zone - Cache Purge - Purge

建议:不要随便给 Token 分配过大的权限,也不要使用 Global API Key 写在脚本中。API Token 一旦泄露,可能导致域名解析被篡改或缓存被恶意清理。


五、设置环境变量

为了避免每条命令都重复写 Token,可以先在终端中设置环境变量。

假设你的 API Token 是:

你的_API_TOKEN

可以执行:

export CF_API_TOKEN="你的_API_TOKEN"

如果你的域名是:

example.com

可以设置:

export CF_DOMAIN="example.com"

之后命令中就可以直接引用:

$CF_API_TOKEN
$CF_DOMAIN

如果你想长期保存,可以把它写入 ~/.bashrc~/.zshrc 或服务器的环境变量配置中。

例如使用 Zsh:

echo 'export CF_API_TOKEN="你的_API_TOKEN"' >> ~/.zshrc
echo 'export CF_DOMAIN="example.com"' >> ~/.zshrc
source ~/.zshrc

使用 Bash:

echo 'export CF_API_TOKEN="你的_API_TOKEN"' >> ~/.bashrc
echo 'export CF_DOMAIN="example.com"' >> ~/.bashrc
source ~/.bashrc

六、测试 API Token 是否可用

创建 Token 后,建议先验证一下是否有效。

完整命令如下:

curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json"

如果 Token 有效,会返回类似结果:

{
  "result": {
    "id": "xxxxxxxxxxxxxxxx",
    "status": "active"
  },
  "success": true,
  "errors": [],
  "messages": [
    {
      "code": 10000,
      "message": "This API Token is valid and active"
    }
  ]
}

其中:

"success": true

表示 Token 验证成功。


七、查询 Cloudflare 账号信息

有些接口需要 account_id,可以通过以下接口查询账号信息。

curl -X GET "https://api.cloudflare.com/client/v4/accounts" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json"

返回结果中会包含账号 ID:

{
  "result": [
    {
      "id": "你的_ACCOUNT_ID",
      "name": "your-account"
    }
  ],
  "success": true
}

也可以配合 jq 提取:

curl -s -X GET "https://api.cloudflare.com/client/v4/accounts" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[0].id'

设置为环境变量:

export CF_ACCOUNT_ID="$(curl -s -X GET "https://api.cloudflare.com/client/v4/accounts" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[0].id')"

查看是否设置成功:

echo $CF_ACCOUNT_ID

八、查询域名 Zone ID

Cloudflare 中每个接入的域名都有一个唯一的 Zone ID。很多接口都需要这个参数,比如 DNS 管理、缓存清理等。

查询指定域名的 Zone ID:

curl -X GET "https://api.cloudflare.com/client/v4/zones?name=$CF_DOMAIN" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json"

返回结果示例:

{
  "result": [
    {
      "id": "你的_ZONE_ID",
      "name": "example.com",
      "status": "active"
    }
  ],
  "success": true
}

使用 jq 直接提取 Zone ID:

curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$CF_DOMAIN" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[0].id'

设置为环境变量:

export CF_ZONE_ID="$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$CF_DOMAIN" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[0].id')"

检查:

echo $CF_ZONE_ID

如果输出一串类似下面的字符串,说明成功:

023e105f4ecef8ad9ca31a8372d0c353

九、查询域名下所有 DNS 记录

获取指定 Zone 下的全部 DNS 记录:

curl -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json"

如果 DNS 记录较多,可以指定分页参数:

curl -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records?page=1&per_page=100" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json"

使用 jq 查看简洁结果:

curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records?page=1&per_page=100" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[] | "\(.type)\t\(.name)\t\(.content)\tproxied=\(.proxied)\tid=\(.id)"'

输出示例:

A       example.com        1.2.3.4        proxied=true    id=xxxx
CNAME   www.example.com    example.com    proxied=true    id=yyyy
TXT     example.com        v=spf1 ...     proxied=false   id=zzzz

十、查询指定 DNS 记录

比如你想查询:

www.example.com

可以执行:

export CF_RECORD_NAME="www.$CF_DOMAIN"

然后查询:

curl -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records?name=$CF_RECORD_NAME" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json"

提取 DNS Record ID:

export CF_RECORD_ID="$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records?name=$CF_RECORD_NAME" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[0].id')"

检查:

echo $CF_RECORD_ID

DNS Record ID 在更新、删除 DNS 记录时非常重要。


十一、添加 A 记录

假设你要添加一条 A 记录:

字段
类型 A
主机名 test.example.com
IP 1.2.3.4
是否开启代理 true
TTL 自动

先设置变量:

export CF_RECORD_NAME="test.$CF_DOMAIN"
export CF_RECORD_CONTENT="1.2.3.4"

完整添加命令:

curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "type": "A",
    "name": "'"$CF_RECORD_NAME"'",
    "content": "'"$CF_RECORD_CONTENT"'",
    "ttl": 1,
    "proxied": true
  }'

参数说明:

参数 说明
type DNS 记录类型,例如 A、AAAA、CNAME、TXT
name 记录名称
content 记录值
ttl TTL,1 表示自动
proxied 是否开启 Cloudflare 代理

注意:只有 A、AAAA、CNAME 等部分记录支持 proxied


十二、添加 CNAME 记录

例如要添加:

blog.example.com CNAME example.com

命令如下:

curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "type": "CNAME",
    "name": "blog.'"$CF_DOMAIN"'",
    "content": "'"$CF_DOMAIN"'",
    "ttl": 1,
    "proxied": true
  }'

如果只是做验证用途,不希望走 Cloudflare CDN,可以设置:

"proxied": false

十三、添加 TXT 记录

TXT 记录常用于域名验证、SPF、DKIM、DMARC 等场景。

例如添加一条验证记录:

curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "type": "TXT",
    "name": "_verify.'"$CF_DOMAIN"'",
    "content": "cloudflare-api-demo-verification",
    "ttl": 1
  }'

添加 SPF 记录示例:

curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "type": "TXT",
    "name": "'"$CF_DOMAIN"'",
    "content": "v=spf1 include:_spf.example.com ~all",
    "ttl": 1
  }'

十四、更新 DNS 记录

更新 DNS 记录需要知道 record_id

假设你要把:

test.example.com

的 A 记录 IP 从:

1.2.3.4

改成:

5.6.7.8

先查询 Record ID:

export CF_RECORD_NAME="test.$CF_DOMAIN"

export CF_RECORD_ID="$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records?type=A&name=$CF_RECORD_NAME" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[0].id')"

然后更新:

curl -X PUT "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records/$CF_RECORD_ID" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "type": "A",
    "name": "'"$CF_RECORD_NAME"'",
    "content": "5.6.7.8",
    "ttl": 1,
    "proxied": true
  }'

这里使用的是 PUT,表示整体更新该 DNS 记录。

如果只想修改部分字段,也可以使用 PATCH,例如只修改 IP:

curl -X PATCH "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records/$CF_RECORD_ID" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "content": "5.6.7.8"
  }'

十五、删除 DNS 记录

删除 DNS 记录同样需要 Record ID。

先查询:

export CF_RECORD_NAME="test.$CF_DOMAIN"

export CF_RECORD_ID="$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records?name=$CF_RECORD_NAME" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[0].id')"

删除命令:

curl -X DELETE "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records/$CF_RECORD_ID" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json"

删除成功后通常返回:

{
  "result": {
    "id": "被删除的_RECORD_ID"
  },
  "success": true,
  "errors": [],
  "messages": []
}

提醒:删除 DNS 记录前一定要确认 Record ID,避免误删生产环境解析。


十六、清理 Cloudflare 缓存

Cloudflare API 的另一个常见用途是清理缓存,尤其是在发布网站、更新静态资源、部署前端项目之后。

1. 清理整个域名缓存

完整命令:

curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/purge_cache" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "purge_everything": true
  }'

该命令会清理整个 Zone 的缓存。

注意:全站清理缓存会导致短时间内回源增加,不建议频繁执行。


2. 清理指定 URL 缓存

例如只清理以下文件:

https://www.example.com/index.html
https://www.example.com/assets/app.js

命令如下:

curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/purge_cache" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "files": [
      "https://www.'"$CF_DOMAIN"'/index.html",
      "https://www.'"$CF_DOMAIN"'/assets/app.js"
    ]
  }'

相比全站清理,指定 URL 清理更加精准,适合自动化部署流程。


3. 按 Cache-Tag 清理缓存

如果你使用了 Enterprise 或支持 Cache-Tag 的方案,可以通过标签清理:

curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/purge_cache" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "tags": [
      "article",
      "homepage"
    ]
  }'

十七、动态 DNS 自动更新脚本

很多家庭宽带或小型服务器没有固定公网 IP,这时可以通过 Cloudflare API 实现 DDNS 自动更新。

下面是一个完整 Bash 脚本,用于自动检测当前公网 IP,并更新指定 A 记录。

新建文件:

nano cloudflare-ddns.sh

写入以下内容:

#!/usr/bin/env bash

set -e

CF_API_TOKEN="你的_API_TOKEN"
CF_DOMAIN="example.com"
CF_RECORD_NAME="home.example.com"

CURRENT_IP="$(curl -s https://api.ipify.org)"

CF_ZONE_ID="$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$CF_DOMAIN" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[0].id')"

CF_RECORD_ID="$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records?type=A&name=$CF_RECORD_NAME" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[0].id')"

OLD_IP="$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records/$CF_RECORD_ID" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result.content')"

echo "当前公网 IP:$CURRENT_IP"
echo "Cloudflare DNS IP:$OLD_IP"

if [ "$CURRENT_IP" = "$OLD_IP" ]; then
  echo "IP 未变化,无需更新。"
  exit 0
fi

echo "IP 已变化,开始更新 DNS..."

curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records/$CF_RECORD_ID" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "type": "A",
    "name": "'"$CF_RECORD_NAME"'",
    "content": "'"$CURRENT_IP"'",
    "ttl": 1,
    "proxied": false
  }' | jq

echo "更新完成。"

赋予执行权限:

chmod +x cloudflare-ddns.sh

执行:

./cloudflare-ddns.sh

如果要定时执行,可以加入 crontab:

crontab -e

每 5 分钟执行一次:

*/5 * * * * /path/to/cloudflare-ddns.sh >> /var/log/cloudflare-ddns.log 2>&1

十八、CI/CD 中自动清理缓存

如果你使用 GitHub Actions、GitLab CI、Jenkins 或其他部署工具,可以在部署完成后调用 Cloudflare API 清理缓存。

下面以普通 Shell 命令为例:

curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/purge_cache" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "files": [
      "https://www.example.com/",
      "https://www.example.com/index.html"
    ]
  }'

在 GitHub Actions 中,建议把以下值放入 Secrets:

CF_API_TOKEN
CF_ZONE_ID

示例步骤:

- name: Purge Cloudflare Cache
  run: |
    curl -X POST "https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE_ID }}/purge_cache" \
      -H "Authorization: Bearer ${{ secrets.CF_API_TOKEN }}" \
      -H "Content-Type: application/json" \
      --data '{
        "purge_everything": true
      }'

生产环境中更建议只清理指定 URL,而不是每次都清理全站缓存。


十九、常见错误与解决方法

1. 返回 success: false

如果返回:

{
  "success": false
}

需要查看 errors 字段。

例如:

"errors": [
  {
    "code": 9109,
    "message": "Invalid access token"
  }
]

通常表示 Token 无效或过期。

解决方法:

  • 检查 Token 是否复制完整;
  • 检查请求头是否正确;
  • 重新生成 API Token。

2. 权限不足

错误示例:

{
  "code": 9103,
  "message": "Unknown X-Auth-Key or X-Auth-Email"
}

或:

{
  "message": "Actor does not have permission"
}

解决方法:

  • 检查 API Token 权限;
  • 确认是否包含 Zone - DNS - Edit
  • 确认是否包含 Zone - Zone - Read
  • 确认 Token 是否绑定了正确的域名 Zone。

3. Zone ID 为空

如果执行:

echo $CF_ZONE_ID

没有任何输出,通常原因是:

  • 域名变量写错;
  • 该域名没有接入当前 Cloudflare 账号;
  • API Token 没有读取该 Zone 的权限。

可以检查:

echo $CF_DOMAIN

并重新执行:

curl -X GET "https://api.cloudflare.com/client/v4/zones?name=$CF_DOMAIN" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json"

4. DNS 记录 ID 为空

如果:

echo $CF_RECORD_ID

为空,说明没有匹配到对应记录。

建议增加 type 条件查询:

curl -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records?type=A&name=$CF_RECORD_NAME" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json"

同时注意:

test.example.com

和:

example.com

是不同记录。


5. JSON 格式错误

如果返回 JSON 解析错误,通常是 --data 中引号写错。

建议使用以下格式:

--data '{
  "type": "A",
  "name": "'"$CF_RECORD_NAME"'",
  "content": "'"$CF_RECORD_CONTENT"'",
  "ttl": 1,
  "proxied": true
}'

这种写法可以在单引号 JSON 中安全插入 Bash 变量。


二十、Cloudflare API 调用最佳实践

1. 优先使用 API Token

不要优先使用 Global API Key。API Token 可以限制权限和资源范围,更适合自动化脚本。

2. 最小权限原则

只给脚本需要的权限。例如 DDNS 脚本只需要:

Zone - DNS - Edit
Zone - Zone - Read

不需要账号全局管理权限。

3. 不要把 Token 写入公开仓库

尤其是 GitHub、Gitee、GitLab 公开仓库。建议使用:

  • 环境变量;
  • GitHub Secrets;
  • CI/CD Secret Variables;
  • 服务器密钥管理工具。

4. 脚本中加入结果校验

例如判断:

success=true

再继续下一步,避免接口调用失败却误以为成功。

5. 避免频繁全站清理缓存

全站清缓存会增加源站压力,也会降低缓存命中率。建议优先清理指定文件或 URL。

6. 记录日志

自动化脚本建议将执行结果写入日志,方便排查问题:

./cloudflare-ddns.sh >> /var/log/cloudflare-ddns.log 2>&1

二十一、完整初始化命令汇总

下面是一组从零开始的常用命令汇总。

设置 Token 和域名:

export CF_API_TOKEN="你的_API_TOKEN"
export CF_DOMAIN="example.com"

验证 Token:

curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json"

获取 Zone ID:

export CF_ZONE_ID="$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$CF_DOMAIN" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[0].id')"

查看 Zone ID:

echo $CF_ZONE_ID

列出 DNS 记录:

curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records?page=1&per_page=100" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq

添加 A 记录:

curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "type": "A",
    "name": "test.'"$CF_DOMAIN"'",
    "content": "1.2.3.4",
    "ttl": 1,
    "proxied": true
  }'

清理全站缓存:

curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/purge_cache" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "purge_everything": true
  }'

结语

Cloudflare API 非常适合用于自动化运维和批量管理。通过本文中的命令,你已经可以完成 API Token 验证、账号查询、Zone ID 获取、DNS 记录查询、添加、更新、删除,以及缓存清理等常见操作。

实际使用中,建议你把 Token、Zone ID、域名等信息通过环境变量或密钥管理工具保存,并遵循最小权限原则。对于生产环境,尤其要谨慎执行删除 DNS、全站清理缓存等操作。

如果只是日常站点部署,最常用的组合通常是:

获取 Zone ID + 查询 DNS 记录 + 更新 DNS + 清理指定 URL 缓存

掌握这些 API 调用方式后,你就可以把 Cloudflare 集成到自己的自动化脚本、监控系统和 CI/CD 流程中,大幅提升域名和 CDN 管理效率。

目录结构
全文