如何编写域名过期提醒脚本

wen 实用脚本 24

自动化监控与预警实战指南

目录导读

  1. 为什么需要域名过期提醒脚本?
  2. 核心原理:域名WHOIS信息与检测机制
  3. 工具与环境准备
  4. 编写基础提醒脚本(Python+whois库)
  5. 进阶:多域名批量检测与邮件/钉钉/微信通知
  6. 高频问题答疑(FAQ)
  7. SEO优化建议:让脚本内容被更多人搜索到

为什么需要域名过期提醒脚本?

域名过期是网站运营中“最隐蔽的灾难”——根据统计,全球每年有超过3000万个域名因未续费被释放,其中大量属于企业核心业务,手动检查每个域名的到期日不仅效率低下,且容易遗漏,一个自动化的过期提醒脚本,能在域名到期前30天、7天、1天分别发送警报,避免因“忘记续费”导致网站宕机、品牌被抢注、SEO权重归零等严重后果。

如何编写域名过期提醒脚本

核心价值:

  • 降低人力监控成本
  • 实现24/7实时检测
  • 支持多域名、多种通知渠道(邮件、IM工具、短信)

核心原理:域名WHOIS信息与检测机制

所有域名注册信息都存储在WHOIS数据库中,包含:

  • 注册日期(Creation Date)
  • 到期日期(Expiration Date)
  • 域名状态(Active/Expired/RedemptionPeriod)

检测流程:

  1. 通过公共WHOIS服务器或API获取域名的WHOIS记录
  2. 解析出Expiration Date字段
  3. 计算当前时间与到期日的时间差
  4. 根据预设阈值(30天)触发提醒

注意: WHOIS查询有频率限制(通常每秒1-5次),且部分注册商(如国内的阿里云、腾讯云)会屏蔽频繁请求,需使用缓存或付费API(如Whois XML API)。


工具与环境准备

推荐技术栈

  • 编程语言: Python(库丰富,跨平台)
  • 核心库: python-whois(免费,支持大多数顶级域名)
  • 通知库: smtplib(邮件)、requests(Webhook如钉钉、企业微信)
  • 调度工具: Linux Crontab(定时任务)或Windows任务计划程序

安装命令

pip install python-whois requests schedule

编写基础提醒脚本(Python+whois库)

以下是一个单域名检测脚本,输出剩余天数并发送邮件警报:

import whois
import smtplib
from email.mime.text import MIMEText
from datetime import datetime
# 配置
DOMAIN = "example.com"          # 请替换为实际域名
ALERT_DAYS = [30, 7, 1]         # 触发提醒的天数阈值
SMTP_SERVER = "smtp.qq.com"     # 邮件服务器
SMTP_PORT = 587
EMAIL_ADDR = "your@email.com"
EMAIL_PASS = "your_app_password"  # 使用授权码,不要用登录密码
def check_domain_expiry(domain):
    try:
        w = whois.whois(domain)
        if w.expiration_date:
            # whois返回可能是列表或单个日期
            exp_date = w.expiration_date[0] if isinstance(w.expiration_date, list) else w.expiration_date
            days_left = (exp_date - datetime.now()).days
            return days_left, ex_date
    except Exception as e:
        print(f"查询失败: {e}")
    return None, None
def send_alert(domain, days_left, ex_date):
    subject = f"[警告] 域名 {domain} 将在 {days_left} 天后过期!"
    body = f"域名:{domain}\n到期日:{ex_date}\n剩余天数:{days_left}\n请尽快续费!"
    msg = MIMEText(body)
    msg['Subject'] = subject
    msg['From'] = EMAIL_ADDR
    msg['To'] = EMAIL_ADDR
    with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
        server.starttls()
        server.login(EMAIL_ADDR, EMAIL_PASS)
        server.send_message(msg)
    print(f"警报邮件已发送至 {EMAIL_ADDR}")
if __name__ == "__main__":
    days_left, ex_date = check_domain_expiry(DOMAIN)
    if days_left is not None and days_left in ALERT_DAYS:
        send_alert(DOMAIN, days_left, ex_date)
    elif days_left is not None:
        print(f"域名 {DOMAIN} 剩余 {days_left} 天,未触发警报")

运行方式:

python domain_checker.py

进阶:多域名批量检测与邮件/钉钉/微信通知

1 批量读取域名列表

创建 domains.txt,每行一个域名,脚本统一读取:

def load_domains(file_path="domains.txt"):
    with open(file_path, 'r') as f:
        return [line.strip() for line in f if line.strip() and not line.startswith('#')]

2 多通知渠道集成

钉钉机器人(Webhook):

import requests
def send_dingtalk(domain, days_left):
    webhook_url = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"
    data = {"msgtype": "text", "text": {"content": f"域名{domain}即将过期(剩余{days_left}天)"}}
    requests.post(webhook_url, json=data)

企业微信机器人:

def send_wechat(domain, days_left):
    webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY"
    data = {"msgtype": "text", "text": {"content": f"⚠️域名过期提醒:{domain}剩余{days_left}天"}}
    requests.post(webhook, json=data)

3 定时任务配置(Linux Crontab)

每天8点执行检测:

0 8 * * * /usr/bin/python3 /home/user/domain_checker.py

高频问题答疑(FAQ)

Q1:脚本检测结果是“None”或报错,怎么回事?
A:可能原因:

  • 域名刚刚注册或WHOIS缓存未更新(建议等待10分钟)
  • 域名后缀不被python-whois支持(如大部分.cn域名)→ 改用微软的Whois.net API或国内服务商
  • 网络被WHOIS服务器屏蔽→ 添加随机延迟(time.sleep(1))或更换WHOIS服务器

Q2:如何让提醒更智能,比如只在我需要的时候发?
A:增加“静默模式”变量(如SILENT_DAYS = [0, -1]),仅当剩余天数恰好等于阈值时触发;或者使用“每减少1天仅提醒1次”的日志记录机制。

Q3:免费WHOIS库有查询次数限制吗?
A:大部分公共WHOIS服务器限制单个IP每秒1次查询,若要监控100个以上域名,建议购买付费API(如Whois API 0.02美元/次)或使用注册商自带的监控功能。

Q4:脚本能检测域名注册商变更吗?
A:可以,通过WHOIS的“Registrar”字段监控注册商名称变化,若有变更则发送警报(防范域名被盗)。


SEO优化建议:让脚本内容被更多人搜索到

1 关键词布局策略

  • 主要关键词: “域名过期提醒脚本”、“WHOIS检测脚本”、“Python域名监控”
  • 长尾关键词: “钉钉域名到期提醒”、“企业微信域名监控”、“Linux定时检测域名”
  • 自然融入: 在标题、H2/H3标签、首段、结尾各出现1-2次

2 提升文章可读性

  • 使用表格对比不同WHOIS库的优缺点(如python-whois vs whoisx)
  • 提供完整代码的GitHub Gist链接(增加外链权重)
  • 添加真实案例:某公司因未续费导致品牌域名被竞品抢注的损失数据

3 移动端适配与加载速度

  • 代码块使用短行(不超过60字符),避免横向滚动
  • 图片使用WebP格式,压缩至200KB以内
  • 内链链接到相关文章(如“Linux Crontab教程”、“SMTP发送邮件指南”)

编写域名过期提醒脚本的核心在于:精准获取WHOIS时间 + 灵活的警报机制 + 稳定的定时调度,本文从零开始的Python实现、多通知渠道集成到SEO优化完全覆盖,您可直接复制代码,搭配Crontab即可拥有一套自动化的域名监控系统,建议定期(每季度)更新脚本中的WHOIS解析库,并添加异常日志记录(logging模块),以应对注册商接口变化。

抱歉,评论功能暂时关闭!