介绍

通过这个脚本进行定时自动筛选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下创建系统服务或者写进开机脚本里都行。