使用 Python 编写 Cloudflare DDNS 系统

0x00 前言

最近在学习Python语言。因为Python的功能库太过庞大,内置对象的常用函数的记忆成了一个问题。
所以准备开一个Python坑来将自己学到的理论知识付诸实践。
刚好发现原来的开MC服务器的时候,用批处理(对没错就是Windows的屑批处理)写过一个Cloudflare(以下简称CF)的DDNS脚本。
由于批处理处理JSON的时候非常不灵活,代码晦涩难懂,而且非常依赖于CF API返回JSON的结构。只要一点点不一样就可以出让你想不到的bug……
所以就打算把这个脚本用Python重写一版,以后或许自己还能用上。

0x01 工程摘要

0x02 主要特性

  1. 多域名支持
  2. IPv6支持
  3. 接受专用API token和全局API key
  4. 使用AES-EAX加密API token(或key)
  5. 使用JSON存储配置,便于修改
  6. 我编不下去了

0x03 参数设置

DDNSMon.py

  • 可修改变量SLEEPSEC:DDNS的轮询休眠时长,单位是秒。

conf.json

值类型 描述 举例
Zone-ID 字符串:32位 hex token DNS Zone标识符 "53f2f9875a13605a67a666e58353f549"
Domains 字符串数组 目标域名 ["ddns1.wxx9248.tk", "ddns2.wxx9248.tk"]
E-mail 字符串 CF帐户邮箱 "[email protected]"
APIKey 字符串:32位 hex token 或 base64 (可能被加密,此时请不要修改)
API key 或者 API token
"55c3047806f47ccd5dcb64c9cc2bcb50"

剩下的参数请不要直接修改,推荐将conf.json删除,然后进入程序,按照提示输入信息。

0x04 使用方法

  • Windows:
    • 如果Python文件关联正确,直接双击DDNSMon.py运行即可。
    • 如果此方法不行,参见下一种方法。
  • 其它系统(命令行操作): Python3 DDNSMon.py

文章作者: wxx9248
文章链接: https://blog.wxx9248.tk/2020/02/16/Project-Cloudflare-DDNS-System/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 wxx9248 的博客