如何通过Whois判断域名是否即将过期?
通过识别 whois 中 Registry Expiry Date 等真实到期字段、过滤查询并计算剩余天数,判断域名是否即将过期,同时提醒 Updated Date 并不代表续费到期。
学完这篇你能自己查出任意域名的到期时间、算出还剩多少天,并且分清哪些"到期日"是假的、哪些是真要过期的。下面按操作顺序讲。
第一步:先认识 whois 结果里哪几个字段才管到期
这一步要做的,是在一大堆 whois 输出里锁定真正表示"域名什么时候到期"的字段,避免被其它日期误导。执行 whois example.com 后,重点看这几个键名(不同后缀叫法不同):
Registry Expiry Date:注册局记录的到期日,最权威,.com/.net/.org等通用后缀常见Registrar Registration Expiration Date:注册商记录的到期日,一般与上面一致Expiry Date/Expiration Date:部分后缀的简写形式paid-till:.ru等后缀用这个词表示已付费到期日
注意:
Creation Date(注册时间)、Updated Date(信息最后更新时间)跟到期完全无关。很多人看到Updated Date是最近的就以为域名刚续费,这是误判。
第二步:命令行一条命令过滤出到期日
这一步要做的,是用 grep 把上面那几个字段一次性捞出来,得到干净的到期时间字符串。Linux 下先确认装了 whois:
apt install whois -y
# CentOS/RHEL
yum install whois -y
whois example.com | grep -iE "expir|paid-till"
输出通常长这样:
Registry Expiry Date: 2026-03-18T04:00:00Z
Registrar Registration Expiration Date: 2026-03-18T04:00:00Z
Windows 自带没有 whois 命令,别在 CMD 里硬试 whois,直接用第三步的网页查询,或者装一个 Whois 客户端工具。
第三步:网页查询(不装工具也能查)
这一步要做的,是在浏览器里拿到同样的数据,适合临时查一两个域名。三个入口任选:
- ICANN 官方查询:打开
lookup.icann.org,输入域名,看 "Registry Expiry Date" 一行 - 域名注册商官网的 Whois 查询页(如你域名所在服务商官网的"域名查询"入口)
- 各类第三方 Whois 查询站,输入域名即可,注意这类站点可能缓存旧数据
注意:如果 whois 结果里出现
REDACTED FOR PRIVACY、Privacy Protect、Whois Privacy等字样,说明注册人信息被隐私保护了,但到期日字段一般仍会正常显示,不影响判断。真正查不到到期日的情况(比如部分.de域名)只能去注册商后台看。
第四步:算出剩余天数
这一步要做的,是把到期日换算成"还剩几天",方便判断紧急程度。Linux 一行搞定:
exp=$(whois example.com | grep -i "Registry Expiry Date" | head -1 | awk '{print $NF}')
echo $(( ( $(date -d "$exp" +%s) - $(date +%s) ) / 86400 ))
输出 312 就表示还剩 312 天。
注意:whois 返回的时间是 UTC(末尾带
Z),date -d会自动按 UTC 解析,不用手动加时差。macOS 上date -d不可用,改用date -j -f "%Y-%m-%dT%H:%M:%SZ" "$exp" +%s。
判断标准可以简单记成:剩余 >180 天属正常;30–180 天该安排续费;<30 天进入高风险区;≤0 已经不叫"即将过期",而是进入宽限期甚至赎回期了。
第五步:批量监控多个域名
这一步要做的,是把上面的逻辑套进循环,一次跑完一整个清单,得到每个域名的剩余天数表格。
for d in example.com example.net example.org; do
exp=$(whois $d | grep -i "Registry Expiry Date" | head -1 | awk '{print $NF}')
days=$(( ( $(date -d "$exp" +%s) - $(date +%s) ) / 86400 ))
echo -e "$d\t$exp\t$days"
done
结果丢进 crontab,每天跑一次,days 小于 30 就发邮件提醒,基本就不会再出现忘记续费的情况。
第六步:用 RDAP 交叉验证,避免读到过期缓存
这一步要做的,是用结构化接口复核一次到期日,防止 whois 端口返回的缓存数据不准。RDAP 是 whois 的替代协议,返回 JSON:
curl -s https://rdap.verisign.com/com/v1/domain/example.com \
| grep -A3 '"eventAction":"expiration"'
.com/.net 用上面的地址,其他后缀可以把域名丢给 rdap.org 自动跳转查询。两个来源的到期日一致,就可以放心了。
注意:注册商开启"自动续费"时,到期日往往会被提前延长一年,whois 显示的日期会比你以为的晚。所以 whois 只能判断"域名会不会掉",判断不了"你有没有被扣费",扣费情况要看注册商后台的账单记录。
小结
- 只认
Registry Expiry Date/Registrar Registration Expiration Date/Expiry Date/paid-till这几个字段,Creation Date、Updated Date与到期无关 whois 域名 | grep -iE "expir|paid-till"是最快的取到期日方法,Windows 没有内置 whois 就用网页查询- 剩余天数 =(到期时间戳 − 当前时间戳)/ 86400,whois 时间是 UTC
- 剩余 <30 天要立即处理,≤0 已进入宽限期或赎回期,成本会明显上升
- 关键域名建议 RDAP 交叉验证 + 脚本每日巡检 + 注册商自动续费三重保险
有具体的 whois 输出看不懂,或者批量脚本跑出异常结果,可以到本站「站长资源 → 域名 🌐」版块发帖,把脱敏后的原始输出贴出来一起看。
免责声明:本文命令与字段说明基于通用 whois/RDAP 协议整理,不同注册局、注册商的返回格式与续费宽限期政策存在差异,实际到期时间与续费状态请以域名所在注册商后台显示为准。
转载请注明出处,版权归原作者所有。