# Cloudflare-API操作

## 批量添加域名

```bash
export CF_API_EMAIL=XXX
export CF_API_KEY=XXX
for domain in $(cat a); do curl -X POST -H "X-Auth-Key: $CF_API_KEY" -H "X-Auth-Email: $CF_API_EMAIL" -H "Content-Type: application/json" "https://api.cloudflare.com/client/v4/zones" --data '{"name":"'$domain'","jump_start":false}'; done
```

## 添加域名

```python
# jump_start， 是自动扫描二级记录，但是获取不到一级记录
# 账户ID： 7f677a8f70ac44f3f7d3e4006952ced2
import requests

url = "https://api.cloudflare.com/client/v4/zones"

payload = "{\"account\": {\"id\": \"7f677a8f70ac44f3f7d3e4006952ced2\"}, \"name\": \"a.com\",\"jump_start\": false}"
headers = {
  'X-Auth-Email': 'xxxxxxxxx@gmail.com',
  'X-Auth-Key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

```

## 删除域名

```python
# 
import requests

url = "https://api.cloudflare.com/client/v4/zones" + '/' + '域名ID'

headers = {
  'X-Auth-Email': 'xxxxxxxxx@gmail.com',
  'X-Auth-Key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json'
}

response = requests.request("DELETE", url, headers=headers, data = payload)

print(response.text.encode('utf8'))
```

## 添加记录

https://dash.cloudflare.com/api/v4/zones/626ae693d2f81dfe13f36290fd2e5502/dns\_records

```bash
# 域名ID： 101b56350bd48d345a30a195a4190fb9

import requests

url = "https://api.cloudflare.com/client/v4/zones/101b56350bd48d345a30a195a4190fb9/dns_records"

payload = "{\"content\": \"2.2.2.2\",\"data\": {},\"name\": \"www\",\"proxiable\": true,\"proxied\": false,\"ttl\": 1,\"type\": \"A\",\"zone_id\":\"101b56350bd48d345a30a195a4190fb9\",\"zone_name\": \"b.com\"}"

headers = {
  'X-Auth-Email': 'xxxxxxxxx@gmail.com',
  'X-Auth-Key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

```

## 获取域名的所有记录

* 首先需要获取域名所有 记录ID https://api.cloudflare.com/client/v4/zones/626ae693d2f81dfe13f36290fd2e5502/dns\_records/f01e9c9d277982804208ba38ca005916

```python

# 域名ID: 626ae693d2f81dfe13f36290fd2e5502
import requests

url = "https://api.cloudflare.com/client/v4/zones/626ae693d2f81dfe13f36290fd2e5502/dns_records"

payload  = {}
headers = {
  'X-Auth-Email': 'xxxxxxxxx@gmail.com',
  'X-Auth-Key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json'
}

response = requests.request("GET", url, headers=headers, data = payload)

print(response.text.encode('utf8'))
```

## 删除某个域名的某一条记录

```python

# 域名ID： 626ae693d2f81dfe13f36290fd2e5502
# 记录ID： a724ce45f9d130a30cd085133779f729
import requests

url = "https://api.cloudflare.com/client/v4/zones/626ae693d2f81dfe13f36290fd2e5502/dns_records/a724ce45f9d130a30cd085133779f729"

payload  = {}
headers = {
  'X-Auth-Email': 'xxxxxxxxx@gmail.com',
  'X-Auth-Key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json'
}

response = requests.request("DELETE", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

```

## 获取所有域名

```python
import requests

# 分页显示： https://api.cloudflare.com/client/v4/zones?page=1&per_page=20&order=type&direction=asc
url = "https://api.cloudflare.com/client/v4/zones"

payload  = {}
headers = {
  'X-Auth-Email': 'xxxxxxxxx@gmail.com',
  'X-Auth-Key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json'
}

response = requests.request("GET", url, headers=headers, data = payload)

print(response.text.encode('utf8'))
```

## 修改某一个域名的某条记录

```bash

# 域名ID： 101b56350bd48d345a30a195a4190fb9
# 域名记录ID： aed0976a6507842946b982186872e3e5
import requests

url = "https://api.cloudflare.com/client/v4/zones/101b56350bd48d345a30a195a4190fb9/dns_records/aed0976a6507842946b982186872e3e5"

payload = "{\"content\": \"1.1.1.2\",\"data\": {},\"name\": \"www.b.com\",\"proxiable\": true,\"proxied\": false,\"ttl\": 1,\"type\": \"A\",\"zone_id\":\"101b56350bd48d345a30a195a4190fb9\",\"zone_name\": \"b.com\"}"
headers = {
  'X-Auth-Email': 'xxxxxxxxx@gmail.com',
  'X-Auth-Key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json'
}

response = requests.request("PUT", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

```

