⭐ 推荐:社区规则条款 V1.0

如何通过Whois判断域名是否即将过期?

lqyyzz
lqyyzz 观望站长
发布于 2026-10-24 06:42 ·5 浏览 ·0 回复
内容摘要

通过识别 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 客户端工具。

第三步:网页查询(不装工具也能查)

这一步要做的,是在浏览器里拿到同样的数据,适合临时查一两个域名。三个入口任选:

  1. ICANN 官方查询:打开 lookup.icann.org,输入域名,看 "Registry Expiry Date" 一行
  2. 域名注册商官网的 Whois 查询页(如你域名所在服务商官网的"域名查询"入口)
  3. 各类第三方 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 协议整理,不同注册局、注册商的返回格式与续费宽限期政策存在差异,实际到期时间与续费状态请以域名所在注册商后台显示为准。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2472.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 0

还没有回复,来抢沙发~