# 介绍

通过这个脚本进行定时自动筛选 CloudFlare 优选 IP 并自动解析 Aliyun(阿里云)DNS。

项目地址:https://github.com/GoodBoyboy666/BestCF

# 准备

  • CloudflareSpeedTest (用于测速筛选 CloudFlare IP)
  • BestCF (用于解析测速结果并同步至阿里云 DNS)
  • Python (Python 的脚本肯定需要 Python 来运行)

# 食用

# API KEY

脚本使用的是阿里云 DNS,因此需要获取阿里云的 AK 和 SK 用于进行 DNS 操作。

为安全起见,我们采用 RAM 生成的 AK 和 SK

点击 https://ram.console.aliyun.com/users 进入子用户控制台,点击 创建用户

2024-04-21_145711

登录名称随便填(因为我们并不用它来登录控制台),然后访问方式勾选 OpenAPI 调用访问

2024-04-21_145836

完成验证后保存 AccessKey IDAccessKey Secret (关闭后将无法再次查看)

然后点击用户登录名称,进行子用户权限配置。

2024-04-21_150337

# DNS 解析

因为使用的是修改已有解析的接口,因此需要预先创建一个解析用于修改。

在控制台解析管理中新增一个 A 解析即可,解析指向什么地方都行,可以是 0.0.0.0

# 配置

拿到 AK,SK 和完成解析设置后就可以开始配置脚本了。

# Windows 版

首先将这两个项目下载至本地,将 CloudflareSpeedTest 内的主程序和 ip.txt 放至 BestCF 同一文件夹

2024-04-21_144140

然后安装此次 Python 脚本所需要的依赖

打开命令行执行

1
pip install -r requirements.txt

安装完依赖后接着打开 main.py 文件进行编辑

2024-04-21_144507

下面是需要修改的地方

STFile 用于指定 CloudflareSpeedTest 程序的名称,Windows 下一般不用变动,Linux 则需要修改为相应的名称。

IPFile 一般不用修改

AliDDNS_DomainName 则为你需要同步 DNS 解析的主域名,例如我的域名 goodboyboy.top

AliDDNS_SubDomainName 为你想要用于同步解析的子域名,但只要填主机名即可,例如我想要用 cf.goodboyboy.top 来解析到 cf 的优选 IP,那么我只需要填写 cf 即可。

AliDDNS_TTL 一般不用动

AliDDNS_AKAliDDNS_SK 就填刚刚拿到的 AccessKey IDAccessKey Secret

Time 则是填写每日执行脚本的时间,当然你也可以自行更改代码达到不同的执行安排,例如多少分钟执行一次或者几天执行一次。(注:执行时间间隔必须大于每轮脚本执行任务完成的时间)

CheckTime 一般不用动

ResultIP 不用动,充当一个全局变量

# 运行

首次运行检查可以先将定时部分的代码注释掉,例如

1
2
3
4
5
schedule.every().day.at(Time).do(testIP) 

while True:
schedule.run_pending()
time.sleep(CheckTime) #检查间隔

将其改为

1
2
3
4
5
6
#schedule.every().day.at(Time).do(testIP) 

#while True:
# schedule.run_pending()
# time.sleep(CheckTime) #检查间隔
testIP()

则运行脚本后会立即触发任务以此检查是否成功解析。

检查无误后还原脚本即可。

# Linux 版

Linux 下和 Windows 大同小异,唯一不同的就是 Linux 下的 CloudflareSpeedTest 程序名称没有后缀名,修改一下脚本的 STFile 即可。

# 后台运行

因为是定时任务,所以要保证一直运行才能起到定时触发任务的作用。

Windows 下直接把窗口挂着就行,Linux 下可以尝试创建系统服务或者使用 screen 来挂后台。

# 开机启动

Windows 下开机启动只需要按 Win + R ,输入 shell:startup ,给脚本创建一个快捷方式扔到弹出的文件夹中即可。

Linux 下创建系统服务或者写进开机脚本里都行。