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 .