Replies: 31 comments 13 replies
-
获取 API 密钥或 API 令牌任何 API 操作都需要提供账号邮箱和 API 密钥或 API 令牌用来验证身份。
|
Beta Was this translation helpful? Give feedback.
-
# 准备依赖我比较习惯用 cURL 来 POST 提交数据,所以以下用的都是 cURL 命令。 ## Linux 系统虽然大部分的 Linux 系统都自带了 cURL,但是还是提前检查一下是否已安装: curl --help 如果提示没找到命令,那么就需要手动安装了: # CentOS 系统
yum install -y curl
# Debian/Ubuntu 系统
apt-get install -y curl ## Windows 系统为了方便,我在 Windows 系统上也用的是 cURL,下载(32位 / 64位)并解压到任意位置。
解压 cURL 压缩包后,进入 |
Beta Was this translation helpful? Give feedback.
-
# 获取域名 ID域名 ID 指的是你在 Cloudflare 中托管一级/顶级域名的 ID(如
## Linux 系统curl -X GET "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: 账号邮箱" \
-H "X-Auth-Key: 前面获取的 API 密钥" \
-H "Content-Type: application/json"
-H "Authorization: Bearer 前面获取的 API 令牌" \ ## Windows 系统"D:\Program Files\curl\bin\curl.exe" -X GET "https://api.cloudflare.com/client/v4/zones" ^
-H "X-Auth-Email: 账号邮箱" ^
-H "X-Auth-Key: 前面获取的 API 令牌" ^
-H "Content-Type: application/json"
-H "Authorization: Bearer 前面获取的 API 令牌" ^ # 查找域名 ID运行命令后,会输出一大串 JSON 内容,因为没有经过格式化,所以看起毫无可读性,可以随便找个在线 JSON 格式化网站,复制 JSON 内容到左边输入框中即可在右边看到格式化后的 JSON 内容,然后找到以下内容:
保存好这个域名 ID,后面还需要用到。 |
Beta Was this translation helpful? Give feedback.
-
# 获取域名解析记录 ID域名解析记录 ID 指的是域名解析的完整子域名的 ID(完整子域名如
## Linux 系统curl -X GET "https://api.cloudflare.com/client/v4/zones/域名ID/dns_records?page=1&per_page=20&order=type&direction=asc" \
-H "X-Auth-Email: 账号邮箱" \
-H "X-Auth-Key: 前面获取的 API 密钥" \
-H "Content-Type: application/json"
-H "Authorization: Bearer 前面获取的 API 令牌" \ ## Windows 系统"D:\Program Files\curl\bin\curl.exe" -X GET "https://api.cloudflare.com/client/v4/zones/域名ID/dns_records?page=1&per_page=20&order=type&direction=asc" ^
-H "X-Auth-Email: 账号邮箱" ^
-H "X-Auth-Key: 前面获取的 API 密钥" ^
-H "Content-Type: application/json"
-H "Authorization: Bearer 前面获取的 API 令牌" ^ # 查找域名的解析记录 ID运行命令后,会输出一大串 JSON 内容,因为没有经过格式化,所以看起毫无可读性,可以随便找个在线 JSON 格式化网站,复制 JSON 内容到左边输入框中即可在右边看到格式化后的 JSON 内容,然后找到以下内容:
"id":"yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
"zone_id":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"zone_name":"yyy.zzz",
"name":"xxx.yyy.zzz",
"type":"A",
"content":"X.X.X.X",
"proxied":true,
"ttl":1,
保存好这些信息,后面还需要用到。 |
Beta Was this translation helpful? Give feedback.
-
# 更新域名解析记录即修改指定子域名的解析记录信息。
## Linux 系统curl -X PUT "https://api.cloudflare.com/client/v4/zones/域名ID/dns_records/解析记录ID" \
-H "X-Auth-Email: 账号邮箱" \
-H "X-Auth-Key: 前面获取的 API 密钥" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"xxx.yyy.zzz","content":"最快 IP","ttl":1,"proxied":true}'
# 如果你只需要更新该域名解析记录中单独 “一个” 信息(上面那个只能同时设置域名解析记录的所有信息),那么可以改成这样:
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/域名ID/dns_records/解析记录ID" \
-H "X-Auth-Email: 账号邮箱" \
-H "X-Auth-Key: 前面获取的 API 密钥" \
-H "Content-Type: application/json" \
--data '{"content":"最快 IP"}'
-H "Authorization: Bearer 前面获取的 API 令牌" \ ## Windows 系统"D:\Program Files\curl\bin\curl.exe" -X PUT "https://api.cloudflare.com/client/v4/zones/域名ID/dns_records/解析记录ID" ^
-H "X-Auth-Email: 账号邮箱" ^
-H "X-Auth-Key: 前面获取的 API 密钥" ^
-H "Content-Type: application/json" ^
--data "{\"type\":\"A\",\"name\":\"xxx.yyy.zzz\",\"content\":\"最快 IP\",\"ttl\":1,\"proxied\":true}"
# 如果你只需要更新该域名解析记录中单独 “一个” 信息(上面那个只能同时设置域名解析记录的所有信息),那么可以改成这样:
"D:\Program Files\curl\bin\curl.exe" -X PATCH "https://api.cloudflare.com/client/v4/zones/域名ID/dns_records/解析记录ID" ^
-H "X-Auth-Email: 账号邮箱" ^
-H "X-Auth-Key: 前面获取的 API 密钥" ^
-H "Content-Type: application/json" ^
--data "{\"content\":\"最快 IP\"}"
-H "Authorization: Bearer 前面获取的 API 令牌" ^ # 成功?失败?运行命令后,会输出的一大串 JSON 内容,在其末尾看到,
# 关于命令中的 JSON 数据说明指的就是更新解析记录命令中的这段内容: {"type":"A","name":"xxx.yyy.zzz","content":"最快 IP","ttl":1,"proxied":true}
|
Beta Was this translation helpful? Give feedback.
-
# 自动更新脚本因为时间优先,我就先简单的写了两个脚本,可能比较简陋。。。所以有什么建议可以跟我说。 脚本见:https://github.com/XIU2/CloudflareSpeedTest/tree/master/script ## Linux 系统[ 点击展开 查看内容 ]下载脚本后,需要先赋予其执行权限,后续才能运行: chomd +x cfst_ddns.sh 然后复制以下内容修改后,一起粘贴运行,即可生成配置文件 echo -e "FOLDER=/root/CloudflareST
ZONE_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DNS_RECORDS_ID=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
[email protected]
KEY=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
TYPE=A
NAME=xxx.yyy.zzz
TTL=1
PROXIED=true" > cfst_ddns.conf
配置文件说明:
然后运行脚本试试看: bash cfst_ddns.sh ## 其他说明
## Windows 系统[ 点击展开 查看内容 ]下载脚本后,只需 右键脚本 - 编辑,会看到脚本内容。 修改其中的域名 ID、域名解析记录 ID、账号邮箱、API 密钥、完整域名等信息。 最后保存,双击运行脚本试试看。
## 其他说明
如果你只需要在测速后获得最快的 IP,那么可以看一下这个 Issues! |
Beta Was this translation helpful? Give feedback.
-
# 定时任务## Linux 系统Linux 自然要用 Cron 来定时执行脚本。 [ 点击展开 查看内容 ]### 安装 Cron一般各 Linux 系统都自带了 Cron,执行 # 确认你是哪个系统,然后选择对应的命令安装 Cron 程序。
# CentOS 系统:
yum install vixie-cron
yum install crontabs
# Debian/Ubuntu 系统:
apt-get install cron ### 配置 Cron开始编辑定时任务, crontab -e 首次使用可能会提示你如下内容: # 这就是让你选一个文本编辑器,新手建议用默认的 nano,直接回车即可。
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed 然后就会看到一大片的文本,不用管,那些只是注释(井号 # 开头的都是注释),写的是使用方法。
定时任务格式其实很简单: * * * * * cd /xxx && ./cfst_ddns.sh
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 7) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59) 还是看不懂?没关系,我直接给你几个示例(脚本下载): # 假设脚本位于 /root 目录下(其他位置自己改下面示例),那么:
# 每天凌晨 5 点 0 分,执行一次脚本
0 5 * * * cd /root && ./cfst_ddns.sh
# 每天凌晨 5 点 30 分,执行一次脚本
30 5 * * * cd /root && ./cfst_ddns.sh
# 每 6 个小时(0 分时),执行一次脚本
0 */6 * * * cd /root && ./cfst_ddns.sh
# 每小时 0 分,执行一次脚本
0 * * * * cd /root && ./cfst_ddns.sh 写入后,保存定时任务:
这时候再去查看定时任务,看看是否保存成功: crontab -l ## Windows 系统Windows 自带了一个任务计划程序,虽然比较简陋,但还能凑活着用。 [ 点击展开 查看内容 ]按下 点击右上角的 [创建基本任务...] 选项。 输入任务名称(随意,必填),描述(可留空),点击 [下一步] 继续。 任务触发时间选择 [每天](或其他的),点击 [下一步] 继续。 选择开始时间(每日),不用管日期,只需要修改后面的时间(即每天这个时间开始运行),点击 [下一步] 继续。 选择启动程序,点击 [下一步] 继续。 点击 [浏览] 按钮,选择
确认没什么问题,点击 [完成]。 这时候还不能运行该任务,还需要简单修改下 D:
cd "D:\Program Files\CloudflareST"
# 这两行代码的意思是进入 D 盘分区,再进入 CloudflareST 文件夹内
# 所以记得把 D: 改成你的 CloudflareST 所在分区的盘符,例如 C:
# 把 D:\Program Files\CloudflareST 改成你电脑上 CloudflareST 所在文件夹路径 以下是完整脚本示例: @echo off
Setlocal Enabledelayedexpansion
d:
cd "D:\Program Files\CloudflareST"
CloudflareST.exe -p 0
for /f "tokens=1 delims=," %%i in (result.csv) do (
Set /a n+=1
If !n!==2 (
Echo %%i
curl -X PUT "https://api.cloudflare.com/client/v4/zones/域名ID/dns_records/域名解析记录ID" ^
-H "X-Auth-Email: 账号邮箱" ^
-H "X-Auth-Key: 前面获取的 API 令牌" ^
-H "Content-Type: application/json" ^
--data "{\"type\":\"A\",\"name\":\"完整域名\",\"content\":\"%%i\",\"ttl\":1,\"proxied\":true}"
goto :END
)
)
:END
pause 另外,如果你想要每次运行完自动退出,请记得删除脚本末尾的
|
Beta Was this translation helpful? Give feedback.
-
这个得出的最快ip,直接就填在域名的A记录里面,然后cdn代理又为真开启。那我域名本身对应的ip,应该是我服务器的ip,这样就没法用了。 |
Beta Was this translation helpful? Give feedback.
-
该教程的目的是更新 Cloudflare 域名解析记录为最快 IP,受众面窄。 前几天有个人想要在他的路由器上自动运行并更新域名解析记录(V2ray 梯子),我远程协助帮他搞了搞,不过他的域名解析商用的不是 Cloudflare ,正好我有个 Github 文件下载加速网站(将域名解析为最快 IP 可以提高速度),因此我也自己捣鼓过自动更新域名解析记录,干脆就把我自用的脚本改了改写成教程了。 看看有没有人需要,反正这教程受众比较小,闲的没事写着玩。 |
Beta Was this translation helpful? Give feedback.
-
@doutuo |
Beta Was this translation helpful? Give feedback.
-
@doutuo |
Beta Was this translation helpful? Give feedback.
-
谢谢,辛苦你了! |
Beta Was this translation helpful? Give feedback.
-
@doutuo |
Beta Was this translation helpful? Give feedback.
-
和 @doutuo 有同样的疑问(且没看懂 @XIU2 下面的回复): 如果我的域名 |
Beta Was this translation helpful? Give feedback.
-
这个教程针对的是其他情况,比如:
一开始写这个教程的时候,我没拐过来弯(还想着上两种情况),写完上面那个人一说,才发现这个教程有点鸡肋,受众面太窄了,所以我又写了个自动更新 Hosts 的脚本。 |
Beta Was this translation helpful? Give feedback.
-
在第三方网站用 CNAME 接入 Cloudflare CDN,然后在其他的域名解析网站(如 DNSPOD)去指定自选 IP。 但我在 DNSPOD 没有域名(连账号都没注册,因为还要实名验证),而要写 API 相关教程/脚本我必须要亲自测试过才行。 不过网上似乎已经有人写过使用 API 自动更新 DNSPOD 域名解析记录的脚本了。
|
Beta Was this translation helpful? Give feedback.
-
You cannot use this API for domains with a .cf, .ga, .gq, .ml, or .tk TLD (top-level domain). To configure the DNS settings for this domain, use the Cloudflare Dashboard 免费的域名,,用不了这个API |
Beta Was this translation helpful? Give feedback.
-
华为云应该怎样用,给了三个API |
Beta Was this translation helpful? Give feedback.
-
你可以看看这个:#56 |
Beta Was this translation helpful? Give feedback.
-
「在第三方网站用 CNAME 接入 Cloudflare CDN,然后在其他的域名解析网站(如 DNSPOD)去指定自选 IP」大佬能否实现自动化脚本,定时去执行直接第三方解析最快的API,小弟可以提供DNSPOD子账号,供大佬测试~ |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
大佬,怎么批量更新啊,有很多cfworkers |
Beta Was this translation helpful? Give feedback.
-
@beer-on-ice 多复制几个脚本中的 curl 代码呗,如果是在同一个根域名下,那么只需要改改域名就行了。 |
Beta Was this translation helpful? Give feedback.
-
嗯嗯成 |
Beta Was this translation helpful? Give feedback.
-
Success'':false,errors'':((code'':10000,message'':Authentication error)) 这种如何解决呢,令牌和ID准确无误 |
Beta Was this translation helpful? Give feedback.
-
大佬是否可以解析到阿里云 |
Beta Was this translation helpful? Give feedback.
-
这个有用配合paopao dns,不要太好用,可以直接本地cname,自动更新cname后的那个域名,这样本地的IP也更新了 |
Beta Was this translation helpful? Give feedback.
-
按照步骤来了 但是重定向太多 |
Beta Was this translation helpful? Give feedback.
-
Linux自动更新的脚本在哪个压缩包里啊,找了好久没找到 |
Beta Was this translation helpful? Give feedback.
-
{"success":false,"errors":[{"code":7000,"message":"No route for that URI"}],"mes 大佬 我的密码和KEY都是对的 可是各种报错 可以帮忙看看什么情况吗 |
Beta Was this translation helpful? Give feedback.
-
如果你的域名托管在 Cloudflare,那么其实可以通过 Cloudflare 官方提供的 API 去更新域名解析记录。
写完才反应过来受众面比较窄,不过可以用于 Cloudflare Workers 的自选 IP~
自动更新 Hosts 为最快 IP(Windows/Linux 脚本)
还在一个个添加 Hosts?完美本地加速所有使用 Cloudflare CDN 的网站方法来了!
# 操作步骤观看顺序:
如果看不到图片,只需把下面这条内容添加到
C:\Windows\System32\drivers\etc\hosts
文件中并重启浏览器:Beta Was this translation helpful? Give feedback.
All reactions