cfmanager / CURL_COMMANDS.md
HFHash789's picture
Upload folder using huggingface_hub
32e4bbf verified

Cloudflare API - curl 命令参考

✅ 认证方式已验证

提供的凭据使用 API Key 认证方式(不是 API Token):

-H "X-Auth-Email: exslym@closedbyme.com"
-H "X-Auth-Key: 21f3fb278a15b732a4f52c95d5042d78d1a21"

Account ID: af2863fcfbc1f170e5ef3b7a648c417d


📋 基础命令

环境变量设置

export EMAIL="exslym@closedbyme.com"
export API_KEY="21f3fb278a15b732a4f52c95d5042d78d1a21"
export ACCOUNT_ID="af2863fcfbc1f170e5ef3b7a648c417d"

🏢 账号管理

1. 获取账号信息

curl -X GET "https://api.cloudflare.com/client/v4/accounts" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -H "Content-Type: application/json"

返回值:

{
  "success": true,
  "result": [
    {
      "id": "af2863fcfbc1f170e5ef3b7a648c417d",
      "name": "Exslym@closedbyme.com's Account"
    }
  ]
}

📦 Pages 项目管理

1. 列出所有 Pages 项目

curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

简化输出:

curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" | jq -r '.result[] | "\(.name) - https://\(.subdomain)"'

2. 创建 Pages 项目

curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-new-project",
    "production_branch": "main"
  }'

实测成功示例:

# 创建测试项目
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "curl-test-project", "production_branch": "main"}'

3. 获取特定项目信息

PROJECT_NAME="diyiciapiceshi13"

curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

4. 删除 Pages 项目

PROJECT_NAME="my-project"

curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

🚀 部署管理

1. 列出项目部署

PROJECT_NAME="diyiciapiceshi13"

curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

查看最新部署:

curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" | jq -r '.result[0] | "URL: \(.url)\n状态: \(.latest_stage.name)"'

2. 部署文件到 Pages

PROJECT_NAME="my-project"

# 使用 multipart/form-data 上传文件
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -F "manifest={}" \
  -F "branch=main" \
  -F "_worker.js=@./_worker.js"

Python 脚本部署示例(用户提供的成功脚本):

files = {
    'manifest': (None, '{}'),
    'branch': (None, 'main'),
    '_worker.js': ('_worker.js', worker_content, 'text/javascript'),
}

response = requests.post(url, headers=headers, files=files)

3. 获取部署详情

PROJECT_NAME="my-project"
DEPLOYMENT_ID="6387f5d9"

curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments/$DEPLOYMENT_ID" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

🌐 Zone (域名) 管理

1. 列出所有 Zones

curl -X GET "https://api.cloudflare.com/client/v4/zones" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

简化输出:

curl -s -X GET "https://api.cloudflare.com/client/v4/zones" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" | jq -r '.result[] | "\(.name) - \(.status)"'

2. 创建 Zone(添加域名)

curl -X POST "https://api.cloudflare.com/client/v4/zones" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account": {
      "id": "'$ACCOUNT_ID'"
    },
    "name": "example.com",
    "type": "full"
  }'

获取 Nameservers:

curl -s -X POST "https://api.cloudflare.com/client/v4/zones" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account": {"id": "'$ACCOUNT_ID'"},
    "name": "example.com",
    "type": "full"
  }' | jq -r '.result.name_servers[]'

3. 获取 Zone 详情

ZONE_ID="your-zone-id"

curl -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

4. 查看 Nameservers

ZONE_ID="your-zone-id"

curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" | jq -r '.result.name_servers[]'

5. 删除 Zone

ZONE_ID="your-zone-id"

curl -X DELETE "https://api.cloudflare.com/client/v4/zones/$ZONE_ID" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

🔗 域名绑定

1. 绑定域名到 Pages 项目

PROJECT_NAME="my-project"
DOMAIN_NAME="example.com"

curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/domains" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "'$DOMAIN_NAME'"
  }'

2. 列出项目的域名

PROJECT_NAME="my-project"

curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/domains" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

3. 获取域名状态

PROJECT_NAME="my-project"
DOMAIN_NAME="example.com"

curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/domains/$DOMAIN_NAME" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

4. 删除项目域名

PROJECT_NAME="my-project"
DOMAIN_NAME="example.com"

curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/domains/$DOMAIN_NAME" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

⚡ Worker 路由

1. 创建 Worker 路由

ZONE_ID="your-zone-id"

curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "pattern": "example.com/api/*",
    "script": "my-worker-script"
  }'

2. 列出 Worker 路由

ZONE_ID="your-zone-id"

curl -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

3. 添加 Worker 自定义域名

curl -X PUT "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/workers/domains" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "hostname": "api.example.com",
    "service": "my-worker",
    "zone_id": "your-zone-id",
    "environment": "production"
  }'

4. 删除 Worker 路由

ZONE_ID="your-zone-id"
ROUTE_ID="route-id"

curl -X DELETE "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes/$ROUTE_ID" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY"

🛠️ 实用技巧

1. 美化 JSON 输出

使用 jq 格式化输出:

curl -s ... | jq '.'

2. 只看成功状态

curl -s ... | jq -r '.success'

3. 提取特定字段

# 提取项目名称
curl -s ... | jq -r '.result[].name'

# 提取 Nameservers
curl -s ... | jq -r '.result.name_servers[]'

4. 保存响应到文件

curl ... > response.json

5. 显示 HTTP 状态码

curl -w "\nHTTP Status: %{http_code}\n" ...

🧪 测试脚本

运行完整测试:

./curl_tests.sh

或查看测试脚本内容:

cat curl_tests.sh

📚 完整工作流示例

示例 1: 创建并部署 Pages 项目

# 1. 创建项目
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-site", "production_branch": "main"}'

# 2. 部署文件
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/my-site/deployments" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -F "manifest={}" \
  -F "branch=main" \
  -F "index.html=@./index.html"

# 3. 查看部署状态
curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/my-site/deployments" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" | jq -r '.result[0] | "URL: \(.url)"'

示例 2: 添加域名并获取 Nameservers

# 1. 创建 Zone
RESPONSE=$(curl -s -X POST "https://api.cloudflare.com/client/v4/zones" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account": {"id": "'$ACCOUNT_ID'"},
    "name": "example.com",
    "type": "full"
  }')

# 2. 提取 Nameservers
echo "$RESPONSE" | jq -r '.result.name_servers[]'

# 3. 绑定域名到 Pages
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/my-site/domains" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "example.com"}'

✅ 测试结果

所有 curl 命令已验证通过:

  • ✅ 账号信息获取
  • ✅ Pages 项目列表
  • ✅ Pages 项目创建
  • ✅ Pages 项目详情
  • ✅ 部署历史查询
  • ✅ Zone 列表
  • ✅ Zone 创建和 Nameservers

Account ID: af2863fcfbc1f170e5ef3b7a648c417d
认证方式: API Key (X-Auth-Email + X-Auth-Key)


🔗 相关链接


最后更新: 2024-01-27
测试状态: ✅ 全部通过