Cách Sử Dụng APIs Cloudflare Hiệu Quả

Ashley Innocent

Ashley Innocent

24 tháng 3 2026

Cách Sử Dụng APIs Cloudflare Hiệu Quả

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

Tóm tắt

Cloudflare API cho phép bạn quản lý DNS, vùng, Workers, bảo mật và phân tích một cách tự động. Xác thực bằng mã thông báo API (khuyên dùng) hoặc khóa toàn cục, gọi đến api.cloudflare.com/client/v4 và xử lý giới hạn tốc độ một cách linh hoạt. Để kiểm thử, hãy sử dụng Apidog để xác thực các thay đổi DNS, kiểm thử triển khai Worker và tự động hóa cấu hình trên các môi trường khác nhau.

Giới thiệu

Cloudflare đứng trước hàng triệu trang web. Nó xử lý DNS, CDN, bảo vệ DDoS, WAF, các hàm phi máy chủ Workers, và nhiều hơn nữa. Việc quản lý tất cả thông qua bảng điều khiển hoạt động tốt cho các thiết lập nhỏ. Nhưng ở quy mô lớn, bạn cần tự động hóa.

Cloudflare API bao gồm mọi thứ mà bảng điều khiển làm được. Bạn có thể tạo vùng, cập nhật bản ghi DNS, cấu hình quy tắc trang, triển khai Workers, quản lý cài đặt SSL và lấy dữ liệu phân tích. Tất cả đều theo chương trình.

Các nhà phát triển sử dụng Cloudflare API cho:

💡
Nếu bạn đang xây dựng trên Cloudflare, Apidog giúp bạn kiểm thử các cuộc gọi API, xác thực phản hồi và tài liệu hóa quá trình tích hợp của bạn. Bạn có thể lưu các cấu hình vùng dưới dạng các yêu cầu có thể tái sử dụng và chia sẻ chúng với nhóm của mình.
nút

Kiểm thử Cloudflare API với Apidog - miễn phí

Khi kết thúc hướng dẫn này, bạn sẽ có thể:

Xác thực

Cloudflare cung cấp hai phương pháp xác thực. Hãy sử dụng mã thông báo API, không phải khóa toàn cục.

Phương pháp 1: Mã thông báo API (khuyên dùng)

Mã thông báo API được giới hạn trong các quyền cụ thể. Nếu một mã thông báo bị lộ, thiệt hại sẽ bị hạn chế.

Tạo mã thông báo:

  1. Truy cập Bảng điều khiển Cloudflare → Hồ sơ của tôi → Mã thông báo API
  2. Tạo mã thông báo
  3. Chọn một mẫu (Chỉnh sửa DNS vùng, triển khai Workers, v.v.) hoặc tùy chỉnh
  4. Đặt các vùng cụ thể hoặc tất cả các vùng
  5. Sao chép mã thông báo

Sử dụng mã thông báo:

curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Phương pháp 2: Khóa API toàn cục (không khuyên dùng)

Khóa toàn cục có quyền truy cập đầy đủ vào tài khoản. Tránh sử dụng nó.

curl -X GET "https://api.cloudflare.com/client/v4/user" \
  -H "X-Auth-Email: your-email@example.com" \
  -H "X-Auth-Key: YOUR_GLOBAL_API_KEY"

Định dạng phản hồi

Tất cả các phản hồi của Cloudflare API đều tuân theo cấu trúc này:

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

Luôn kiểm tra success trước khi xử lý result.

Quản lý vùng

Vùng đại diện cho các tên miền trong Cloudflare.

Liệt kê các vùng

curl -X GET "https://api.cloudflare.com/client/v4/zones" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Phản hồi:

{
  "result": [
    {
      "id": "023e105f4ecef8ad9ca31a8372d0c353",
      "name": "example.com",
      "status": "active",
      "paused": false,
      "type": "full",
      "development_mode": 0,
      "name_servers": [
        "ns1.cloudflare.com",
        "ns2.cloudflare.com"
      ],
      "original_name_servers": [
        "ns1.example.com"
      ],
      "original_registrar": null
    }
  ],
  "success": true
}

Tạo một vùng

curl -X POST "https://api.cloudflare.com/client/v4/zones" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "newdomain.com",
    "account": {
      "id": "ACCOUNT_ID"
    },
    "type": "full"
  }'

Lấy chi tiết vùng

curl -X GET "https://api.cloudflare.com/client/v4/zones/ZONE_ID" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Quản lý bản ghi DNS

Bản ghi DNS ánh xạ tên miền tới địa chỉ IP và dịch vụ.

Liệt kê các bản ghi DNS

curl -X GET "https://api.cloudflare.com/client/v4/zones/ZONE_ID/dns_records" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Tạo một bản ghi DNS

curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/dns_records" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "A",
    "name": "www",
    "content": "192.0.2.1",
    "ttl": 3600,
    "proxied": true
  }'

Các loại bản ghi:

Cập nhật một bản ghi DNS

curl -X PUT "https://api.cloudflare.com/client/v4/zones/ZONE_ID/dns_records/RECORD_ID" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "A",
    "name": "www",
    "content": "192.0.2.2",
    "ttl": 3600,
    "proxied": true
  }'

Xóa một bản ghi DNS

curl -X DELETE "https://api.cloudflare.com/client/v4/zones/ZONE_ID/dns_records/RECORD_ID" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Cloudflare Workers

Workers chạy JavaScript ở biên, gần người dùng.

Liệt kê Workers

curl -X GET "https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/workers/scripts" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Tải lên một Worker

curl -X PUT "https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/workers/scripts/my-worker" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/javascript" \
  --data-binary @worker.js

Ví dụ về Worker:

export default {
  async fetch(request, env, ctx) {
    const url = new URL(request.url)
    
    if (url.pathname === '/api/hello') {
      return new Response(JSON.stringify({ message: 'Hello from the edge!' }), {
        headers: { 'Content-Type': 'application/json' }
      })
    }
    
    return fetch(request)
  }
}

Liên kết một tuyến đường

curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/workers/routes" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "pattern": "example.com/api/*",
    "script": "my-worker"
  }'

Không gian tên Worker KV

Lưu trữ dữ liệu có thể truy cập từ Workers:

curl -X POST "https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/storage/kv/namespaces" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "my-kv-namespace"
  }'

Bảo mật và WAF

Quy tắc trang

curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/pagerules" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "targets": [
      {
        "target": "url",
        "constraint": {
          "operator": "matches",
          "value": "example.com/*"
        }
      }
    ],
    "actions": [
      {
        "id": "ssl",
        "value": "flexible"
      },
      {
        "id": "cache_level",
        "value": "aggressive"
      }
    ]
  }'

Quy tắc tường lửa

curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/firewall/rules" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": {
      "expression": "ip.geoip.country eq \"CN\"",
      "paused": false
    },
    "action": "block",
    "description": "Block traffic from China"
  }'

Giới hạn tốc độ

curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/rate_limits" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "disabled": false,
    "description": "Rate limit API endpoints",
    "match": {
      "request": {
        "methods": ["POST"],
        "url_pattern": "*/api/*"
      }
    },
    "threshold": 100,
    "period": 60,
    "action": {
      "mode": "ban",
      "timeout": 600
    }
  }'

Phân tích và nhật ký

Phân tích vùng

curl -X GET "https://api.cloudflare.com/client/v4/zones/ZONE_ID/analytics/dashboard?since=-1440&continuous=true" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Phản hồi:

{
  "result": {
    "totals": {
      "requests": {
        "all": 1000000,
        "cached": 800000,
        "uncached": 200000
      },
      "bandwidth": {
        "all": 50000000000,
        "cached": 40000000000
      },
      "threats": {
        "all": 5000
      },
      "pageviews": {
        "all": 250000
      }
    }
  }
}

Nhật ký vùng (Logpush)

Bật Logpush để gửi nhật ký đến bộ nhớ của bạn:

curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/logpush/jobs" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Logpush Job",
    "destination_conf": "s3://my-bucket/logs?region=us-east-1",
    "dataset": "http_requests",
    "logpull_options": "fields=ClientIP,ClientRequestPath,EdgeResponseStatus&timestamps=rfc3339"
  }'

Kiểm thử với Apidog

Các thay đổi của Cloudflare ảnh hưởng đến lưu lượng truy cập sản xuất. Hãy kiểm thử kỹ lưỡng.

Apidog Cloudflare API

1. Thiết lập môi trường

CLOUDFLARE_API_TOKEN: your_token
CLOUDFLARE_ACCOUNT_ID: abc123
ZONE_ID: xyz789
BASE_URL: https://api.cloudflare.com/client/v4

2. Xác thực phản hồi

pm.test('Request was successful', () => {
  const response = pm.response.json()
  pm.expect(response.success).to.be.true
  pm.expect(response.errors).to.be.empty
})

pm.test('DNS record created correctly', () => {
  const response = pm.response.json()
  pm.expect(response.result.type).to.eql('A')
  pm.expect(response.result.name).to.eql('www')
  pm.expect(response.result.proxied).to.be.true
})

3. Kiểm thử triển khai Worker

Lưu tập lệnh Worker dưới dạng tệp trong Apidog và kiểm thử việc tải lên:

pm.test('Worker uploaded', () => {
  const response = pm.response.json()
  pm.expect(response.result.id).to.eql('my-worker')
})

Kiểm thử Cloudflare API với Apidog - miễn phí


Các lỗi thường gặp và cách khắc phục

403 Bị cấm

Nguyên nhân: Mã thông báo thiếu quyền cần thiết.

Cách khắc phục: Kiểm tra quyền của mã thông báo trong bảng điều khiển Cloudflare. Chỉnh sửa DNS cần Zone:DNS:Edit. Workers cần Account:Workers:Edit.

1003: Vùng không hợp lệ hoặc bị thiếu

Nguyên nhân: ID vùng không tồn tại hoặc mã thông báo không thể truy cập nó.

Cách khắc phục: Xác minh ID vùng trong URL và kiểm tra phạm vi mã thông báo bao gồm vùng này.

81057: Bản ghi đã tồn tại

Nguyên nhân: Bản ghi DNS với cùng tên và loại đã tồn tại.

Cách khắc phục: Sử dụng PUT để cập nhật thay vì POST để tạo, hoặc xóa trước.

Vượt quá giới hạn tốc độ

Nguyên nhân: Quá nhiều yêu cầu (mặc định 1200/5 phút).

Cách khắc phục: Thực hiện backoff và hoạt động theo lô.

async function updateRecords(records) {
  for (const record of records) {
    try {
      await updateRecord(record)
      await sleep(100) // Rate limit buffer
    } catch (error) {
      if (error.status === 429) {
        await sleep(60000) // Wait a minute
        await updateRecord(record) // Retry
      }
    }
  }
}

Các lựa chọn thay thế và so sánh

Tính năng Cloudflare AWS Route 53 Fastly
API DNS
API CDN API CloudFront
Các hàm biên Workers Lambda@Edge Compute@Edge
API WAF AWS WAF
Gói miễn phí Rộng rãi Thanh toán theo mức sử dụng Hạn chế
Định dạng phản hồi JSON XML/JSON JSON

API của Cloudflare được thống nhất hơn so với các dịch vụ phân mảnh của AWS. Workers cung cấp tính linh hoạt cao hơn Lambda@Edge.

Các trường hợp sử dụng thực tế

SaaS đa người thuê. Một nền tảng tự động tạo các vùng Cloudflare khi khách hàng thêm tên miền tùy chỉnh. Workers xử lý định tuyến, các bản ghi DNS được tạo thông qua API và chứng chỉ SSL được cấp phát tự động.

Triển khai Blue-green. Một nhóm kỹ sư sử dụng cập nhật bản ghi DNS để chuyển đổi lưu lượng truy cập giữa các môi trường. API cập nhật bản ghi A trong quá trình triển khai, với sự lan truyền tức thì qua mạng của Cloudflare.

Tự động hóa phản ứng DDoS. Một nhóm bảo mật giám sát lưu lượng truy cập thông qua API phân tích. Khi các mẫu tấn công xuất hiện, các quy tắc tường lửa được thêm vào thông qua API để chặn các IP độc hại, giảm thời gian phản ứng từ hàng giờ xuống còn vài giây.

Tổng kết

Đây là những gì bạn đã học được:

nút

Câu hỏi thường gặp

Sự khác biệt giữa vùng (zone) và tên miền (domain) là gì?Một vùng là cách Cloudflare biểu diễn một tên miền. Khi bạn thêm một tên miền vào Cloudflare, bạn tạo một vùng. ID vùng được sử dụng trong các cuộc gọi API cho tên miền đó.

Làm cách nào để tìm ID vùng của tôi?Truy cập Bảng điều khiển Cloudflare → chọn tên miền của bạn → Tổng quan → cuộn xuống phần API. ID vùng được hiển thị ở đó.

Tôi có thể sử dụng Cloudflare API mà không cần gói trả phí không?Có. Hầu hết các tính năng API hoạt động trên các gói miễn phí. Workers có một gói miễn phí hào phóng. Một số tính năng nâng cao (quy tắc WAF nâng cao, Logpush) yêu cầu gói trả phí.

Các thay đổi DNS mất bao lâu?Các thay đổi thông qua API là tức thì trong hệ thống của Cloudflare. Sự lan truyền đến máy chủ tên miền của Cloudflare mất vài giây. Sự lan truyền toàn cầu phụ thuộc vào TTL và các trình phân giải đệ quy, thường là vài phút.

Giới hạn tốc độ là bao nhiêu?Mặc định: 1200 yêu cầu mỗi 5 phút cho mỗi mã thông báo. Kiểm tra tiêu đề X-RateLimit-Remaining. Các gói Enterprise có giới hạn cao hơn.

Tôi có thể quản lý nhiều tài khoản bằng một mã thông báo không?Không. Mã thông báo được giới hạn cho một tài khoản. Đối với nhiều tài khoản, hãy tạo các mã thông báo riêng biệt hoặc sử dụng các mã thông báo cấp người dùng có quyền truy cập vào nhiều tài khoản.

Workers khác gì so với Lambda?Workers chạy ở các vị trí biên của Cloudflare (hơn 300 thành phố), không ở các khu vực cụ thể. Thời gian khởi động lạnh là tối thiểu. Chúng lý tưởng cho việc thao tác yêu cầu/phản hồi, không phải các tiến trình chạy dài.

Tôi có thể sử dụng API để xóa bộ nhớ đệm không?Có:

curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/purge_cache" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "files": ["https://example.com/style.css"]
  }'

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API

Cách Sử Dụng APIs Cloudflare Hiệu Quả