Cloudflare通过API更新DNS解析

鉴于目前域名价格上涨,可以在其它平台注册便宜域名,或者首年优惠的域名,然后将DNS更改为Cloudflare的DNS,然后用它的API来自动更新DNS解析记录

生成API token

登录后点击个人头像,进入个人资料页面arrow-up-right

通过左边的侧栏选项切换到“API令牌”

点击“创建令牌”,根据模板可以为单独指定服务开通API令牌权限。生成的令牌只会显示一次,记得及时保存。

查询域名信息

步骤

  • [[#查询账号下所有域名信息]], 找出指定域名的ID(zone_identifier)

  • [[#通过域名ID查出该域名下对应的解析记录及ID(identifier)]]

查询账号下所有域名信息

curl --request GET \
  --url https://api.cloudflare.com/client/v4/zones \
  --header 'Content-Type: application/json' \
  --header 'X-Auth-Email: email@address' \ # 账号邮箱地址
  --header "X-Auth-Key: api_token" \ # API令牌(token)

响应结果

{
    "result": [
        {
            "id": "1de9e53f1...23762b6",
            "name": "kaside365.com",
            "status": "active",
            "paused": false,
            "type": "full",
            "development_mode": 0,
            "name_servers": [
                "becky.ns.cloudflare.com",
                "brad.ns.cloudflare.com"
            ],
            "original_name_servers": null,
            "original_registrar": null,
            "original_dnshost": null,
            "modified_on": "2023-06-21T00:44:36.560030Z",
            "created_on": "2023-06-20T09:48:18.575850Z",
            "activated_on": "2023-06-20T09:48:27.150675Z",
            "meta": {
                "step": 4,
                "custom_certificate_quota": 0,
                "page_rule_quota": 3,
                "phishing_detected": false,
                "multiple_railguns_allowed": false
            },
            "owner": {
                "id": null,
                "type": "user",
                "email": null
            },
            "account": {
                "id": "343e21eb9...6854fcd1",
                "name": "Q...t.com's Account"
            },
            "tenant": {
                "id": null,
                "name": null
            },
            "tenant_unit": {
                "id": null
            },
            "permissions": [
                "#access:read",
                "#legal:edit"
            ],
            "plan": {
                "id": "0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
                "name": "Free Website",
                "price": 0,
                "currency": "USD",
                "frequency": "",
                "is_subscribed": false,
                "can_subscribe": false,
                "legacy_id": "free",
                "legacy_discount": false,
                "externally_managed": false
            }
        }
    ],
    "result_info": {
        "page": 1,
        "per_page": 20,
        "total_pages": 1,
        "count": 2,
        "total_count": 2
    },
    "success": true,
    "errors": [],
    "messages": []
}
  • "id": "1de9e53f1…23762b6" 相当于是kaside365.com域名的ID,这个值是固定不变的。在下面的查询中,它会变成zone_id,两者是同一个

通过域名ID查出该域名下对应的解析记录及ID(identifier)

  • identifier: 上一步查出来的“id”值为"1de9e53f1…23762b6" ,也就是kaside365.com域名的ID

响应结果

  • id": 这里的"id"不再是域名对应的'id'而是A记录r.kaside365.com 的id,"63e6ab2…dfcdebef4",生成后只要不删除,也不会变

创建新的A记录解析

  • id: 就是域名对应的id,值为"1de9e53f1…23762b6"

更新/修改A记录解析

  • identifier: 对应A记录的"id",值为63e6a…fcdebef4 ,例如在这里就代表r.kaside365.com这个A记录的ID

删除A记录解析

  • zone_id: 域名对应的id

  • id: A记录对应的id


自动更新脚本

最后更新于