【项目案例】域名到期监控系统:域名分散在多个厂商,到期前自动提醒

阅读约 5 分钟
【项目案例】域名到期监控系统:域名分散在多个厂商,到期前自动提醒

「项目案例」系列:我做过的定制项目,写清楚客户要什么、解决了什么问题。这类项目不提供源码,文中截图都是演示数据(虚构的 example 域名和账号),不涉及任何客户信息。有类似需求可以直接联系我,文末有方式。

客户的需求

域名这件事的麻烦在于:它平时没人管,一出事就是大事。

  • 域名分散在不同的厂商和账号里(阿里云、Cloudflare、GoDaddy、Namecheap……),没有一个地方能看到全部;
  • 每个域名服务于不同的项目,到期了影响哪个业务,要翻记录才知道;
  • 到期时间靠人记,或者靠厂商发的邮件,邮件还可能进垃圾箱;
  • 一旦忘了续费,网站和邮箱直接打不开,还可能被别人抢注。

所以需要的是:一个能集中看、自动查、提前喊你的小系统。

我做的东西

一个页面看清所有域名

域名列表:项目、厂商、账户、到期时间、剩余天数和状态

图:首页(演示数据)。最上面是总数、将到期、已到期、异常的统计。

  • 每个域名记录所属项目、厂商、账户、注册时间、到期时间、名称服务器;
  • 按到期时间从近到远排序,最该处理的永远排在最上面;
  • 状态分四种:正常、将到期(30 天内)、已到期、异常(查不到到期时间,需要人工看一眼);
  • 可以按项目、状态筛选,也可以搜索域名、厂商、账户、项目;
  • 能勾选多个批量刷新、编辑、删除。

批量添加、导入导出

批量添加域名:一行一个,选项目,选厂商模板

图:批量添加。

  • 一次粘贴一批域名,一行一个,选好所属项目就行;
  • 厂商和账户可以先建成模板,添加时一选就带出来,不用每次手填;
  • 支持导出成 CSV,也支持批量导入。

到期时间自动查,不用手填

  • 点“刷新”或“查询”,系统会联网通过 RDAP(域名注册信息的公开查询服务)取注册时间、到期时间,再用 DNS 查名称服务器;
  • 自动查询时限速、重试:请求之间留间隔,遇到对方限速会按要求等待,不会一口气把对方服务打爆;
  • 每天在本地重新计算一遍剩余天数和状态(不联网);每隔 30 天分批联网校准一次,每批之间暂停,避免被限流;
  • 有的后缀不提供公开的到期信息,查不到的会标成“异常”,这时可以手动编辑填上到期时间。

到期前 Telegram 提醒

系统设置:Telegram 机器人、聊天 ID、提醒天数

图:系统设置。提醒天数可以自己定,默认是 30、15、7、3、1 天。

  • 填上机器人和聊天 ID,勾上启用,域名进入设定的某一档(比如剩余 30 天以内)就推送一次,之后每进入更紧的一档(15 天、7 天……直到已过期)再推送一次,同一批会汇总成一条消息;
  • 不会因为服务停了一天就漏掉:按“档位”而不是“正好某一天”判断,下次运行会补上;发送失败也不会当成已提醒,第二天自动重试;
  • 续费之后,剩余天数回到最远一档之外,记录自动清零,下次临近到期会重新提醒;
  • 有“测试推送”按钮,先发一条确认收得到;
  • 页面通过 WebSocket 实时刷新,别人改了数据,你这边不用手动刷新。

解决了什么问题

以前现在
域名散在各个厂商后台,要逐个登录看一个页面看全部,按项目分组
到期时间靠记忆或厂商邮件自动联网查,到期前 Telegram 推送
不知道某个域名到期会影响哪个业务每个域名挂在项目下,一眼可知
新买一批域名要逐个登记一行一个批量添加,厂商账户用模板
想对账、交接时没有清单一键导出 CSV

安全方面

  • 登录防暴力破解:同一个 IP 连续输错密码(默认 5 次)就会被封,首次封 1 小时,再被封时长翻倍,最长一天;每次输错还会多等 1 秒;有人被封时,Telegram 里会收到一条通知。封禁记录放在内存里,服务重启后清空。
  • 没设密码、或用了 admin123 这类常见弱口令,服务直接拒绝启动,不会带着默认密码上线。
  • 默认只监听本机,前面放 nginx 做 HTTPS;页面和接口同源,默认不开放跨域。
  • 实时刷新通道也要登录:页面的实时推送连接,必须先出示登录令牌才会收到任何更新,登出或令牌过期后自动断开。

使用上要知道的几点

  • 到期时间来自公开查询服务,不是厂商后台的“续费状态”。你刚续费完,页面里的到期时间要等下一次刷新才会更新,可以手动点“刷新”。
  • 查询服务不是所有后缀都支持,查不到的需要手动填,也可以先标记为异常再处理。
  • 这个系统只读公开信息,不需要你的域名厂商账号密码,也不会替你续费。账户一栏只是备注,用来提醒你这个域名在哪个账号里。
  • Telegram 机器人令牌保存在服务器自己的数据库里,请把服务器本身保护好。

技术栈和交付

后端是 Python(FastAPI),数据存在 SQLite,前端是单页,部署在你自己的服务器上,数据完全在你手里。交付内容包括程序、配置说明和启动脚本,我会帮你部署并跑通第一轮查询和 Telegram 推送。

想要类似的系统?

这个项目不提供源码,但同类的“资产到期提醒”我可以按你的需求来做:域名、SSL 证书、服务器、软件订阅都可以放进同一个后台,提醒渠道也能换成你习惯的方式。

  • 官网留言:kuaibuild.com(说一句想做什么就够)
  • Telegram:@kuaibuild
想要类似的东西?网站、Telegram 机器人、运维工具,说说你的需求。
发布需求

有想法或问题?去留言板留言 →