使用Python通过Cloudflare API管理Cloudflare账户中的站点(批量添加、删除站点、修改站点域名解析记录)


前言

Cloudflare 是一家国外的 CDN 加速服务商,还是很有名气的。提供免费和付费的加速和网站保护服务。
分享一下使用 Python 通过 Cloudflare API 管理 Cloudflare 账户中的站点(批量添加、删除站点、修改站点域名解析记录等)。
下面有完整代码,直接Copy到新的 .py 文件,然后安装完python库就能跑了(≖ᴗ≖)✧。


需求

  1. Python 3.7 或者更高版本。
  2. Cloudflare Python库(github) 没有中文文档,只提供一个 api.md 文档。
    当然,如果不想用Python库,也可以照着官方文档直接去使用他们的API。
    Cloudflare API Documentation
    我之前就是在他们官方文档上找到了对应api,然后用Postman一个个测试的。
    但是到了开发的时候还是选择了直接使用Cloudflare库ヽ(ー_ー)ノ。

一、安装Python库

pip install cloudflare

二、开始使用

1.引入库

import asyncio
import cloudflare as cloudflareApi
from cloudflare import AsyncCloudflare

cloudflareApi 用于错误处理。
我在这里使用的是异步客户端 AsyncCloudflare。
同步客户端(Cloudflare)和异步客户端(AsyncCloudflare)之间的功能在其他方面是相同的。

2.初始化客户端

client = AsyncCloudflare(
    api_email="你的账户邮箱",
    api_key="你的API秘钥"
)

还有一个 api_token 参数。他的值就是在Cloudflare后台手动创建然后分配权限生成的API令牌。
使用api_token的话,上面两个就不需要了。但是你得确保你设置的令牌有对应操作的权限。

3.用法,代码全览

# -*- coding: utf-8 -*-
'''
@File    :   index.py
@Time    :   2024/08/21 19:36:28
@Author  :   妙啊这Sao操作
@Version :   1
@Desc    :   使用cloudflare-python库对cloudflare账户中的站点进行管理。[cloudflare-python库api文档](https://github.com/cloudflare/cloudflare-python/blob/main/api.md#zones)
@Editor  :   Visual Studio Code
'''

import asyncio
import cloudflare as cloudflareApi
from cloudflare import AsyncCloudflare

# 还有一个 api_token 参数。他的值就是在Cloudflare后台手动创建然后分配权限生成的API令牌。
# 使用api_token的话,下面两个就不需要了。但是你得确保你设置的令牌有对应操作的权限。
client = AsyncCloudflare(
    api_email="你的账户邮箱",
    api_key="你的API秘钥"
)


async def cloudflare_account_list():
    """
    获取cloudflare 账户列表
    """
    accounts = await client.accounts.list()
    # 因为Python库的响应是 Pydantic 模型。这里使用model_dump(mode='json')转成json数据
    cloudflare_data = accounts.model_dump(mode='json')
    print(f"===获取cloudflare 账户列表===>{
     cloudflare_data}")
    data_list = cloudflare_data.get('result')
    return data_list[0].get('id')


async def cloudflare_website_list(pageNum, pageSize, name=''):
    """
    获取cloudflare 站点列表
    """
    try:
        # 域名搜索内容可以是用','分隔的多个域名的字符串,最多不超过10个
        zone = await client.zones.list(
            page=pageNum,
            per_page=pageSize,
            name=name
        )
        cloudflare_data = zone.model_dump(mode='json')
        print(f"===获取cloudflare 站点列表===>{
     cloudflare_data}")
    except cloudflareApi.APIStatusError as e:
        print(f"===出错了code===>{
     e.status_code}")
        errors = e.body.get('errors')
        print(f"===出错了message===>
下面是使用 Node.js 和 Cloudflare API 解析域名的步骤: 1. 首先,您需要在 Cloudflare 中创建一个 API 令牌。在 Cloudflare 控制台中,导航到您的账户设置页面,然后选择 API 令牌选项卡。在那里,您可以创建一个新的令牌并分配所需的权限。 2. 在 Node.js 中,您需要安装 cloudflare 模块。您可以使用以下命令安装: ``` npm install cloudflare ``` 3. 在您的 Node.js 代码中,导入 cloudflare 模块并使用您的 Cloudflare API 令牌进行身份验证。例如: ``` const cloudflare = require('cloudflare')({ email: 'your-email@example.com', key: 'your-api-key' }); ``` 4. 使用 `cloudflare.zones.browse()` 方法获取您的 Cloudflare 帐户中的所有区域。例如: ``` cloudflare.zones.browse().then(zones => { console.log(zones); }).catch(err => { console.error(err); }); ``` 5. 选择您想要解析的区域,并使用 `cloudflare.dnsRecords.browse(zone_id)` 方法获取该区域中的所有 DNS 记录。例如: ``` const zone_id = 'your-zone-id'; cloudflare.dnsRecords.browse(zone_id).then(records => { console.log(records); }).catch(err => { console.error(err); }); ``` 6. 在结果中查找您要解析的域名的 DNS 记录,并使用 `cloudflare.dnsRecords.edit(zone_id, record_id, data)` 方法将其修改为所需的值。例如: ``` const record_id = 'your-record-id'; const data = { type: 'A', name: 'example.com', content: '192.0.2.1', ttl: 1, proxied: true }; cloudflare.dnsRecords.edit(zone_id, record_id, data).then(result => { console.log(result); }).catch(err => { console.error(err); }); ``` 以上就是使用 Node.js 和 Cloudflare API 解析域名的基本步骤。请注意,您需要替换示例中的值以适应您自己的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值