BestCF——一个CloudFlare优选IP自动解析的Python脚本
# 介绍
通过这个脚本进行定时自动筛选 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 进入子用户控制台,点击 创建用户
登录名称随便填(因为我们并不用它来登录控制台),然后访问方式勾选 OpenAPI 调用访问
完成验证后保存 AccessKey ID
和 AccessKey Secret
(关闭后将无法再次查看)
然后点击用户登录名称,进行子用户权限配置。
# DNS 解析
因为使用的是修改已有解析的接口,因此需要预先创建一个解析用于修改。
在控制台解析管理中新增一个 A 解析即可,解析指向什么地方都行,可以是 0.0.0.0
# 配置
拿到 AK,SK 和完成解析设置后就可以开始配置脚本了。
# Windows 版
首先将这两个项目下载至本地,将 CloudflareSpeedTest
内的主程序和 ip.txt
放至 BestCF
同一文件夹
然后安装此次 Python 脚本所需要的依赖
打开命令行执行
1 | pip install -r requirements.txt |
安装完依赖后接着打开 main.py
文件进行编辑
下面是需要修改的地方
STFile
用于指定 CloudflareSpeedTest
程序的名称,Windows 下一般不用变动,Linux 则需要修改为相应的名称。
IPFile
一般不用修改
AliDDNS_DomainName
则为你需要同步 DNS 解析的主域名,例如我的域名 goodboyboy.top
。
AliDDNS_SubDomainName
为你想要用于同步解析的子域名,但只要填主机名即可,例如我想要用 cf.goodboyboy.top
来解析到 cf 的优选 IP,那么我只需要填写 cf
即可。
AliDDNS_TTL
一般不用动
AliDDNS_AK
和 AliDDNS_SK
就填刚刚拿到的 AccessKey ID
和 AccessKey Secret
Time
则是填写每日执行脚本的时间,当然你也可以自行更改代码达到不同的执行安排,例如多少分钟执行一次或者几天执行一次。(注:执行时间间隔必须大于每轮脚本执行任务完成的时间)
CheckTime
一般不用动
ResultIP
不用动,充当一个全局变量
# 运行
首次运行检查可以先将定时部分的代码注释掉,例如
1 | schedule.every().day.at(Time).do(testIP) |
将其改为
1 | #schedule.every().day.at(Time).do(testIP) |
则运行脚本后会立即触发任务以此检查是否成功解析。
检查无误后还原脚本即可。
# Linux 版
Linux 下和 Windows 大同小异,唯一不同的就是 Linux 下的 CloudflareSpeedTest
程序名称没有后缀名,修改一下脚本的 STFile
即可。
# 后台运行
因为是定时任务,所以要保证一直运行才能起到定时触发任务的作用。
Windows 下直接把窗口挂着就行,Linux 下可以尝试创建系统服务或者使用 screen
来挂后台。
# 开机启动
Windows 下开机启动只需要按 Win
+ R
,输入 shell:startup
,给脚本创建一个快捷方式扔到弹出的文件夹中即可。
Linux 下创建系统服务或者写进开机脚本里都行。
Use this card to join MyBlog and participate in a pleasant discussion together .
Welcome to GoodBoyboy 's Blog,wish you a nice day .