前言
whois信息在当下不同以前,以前可以获取到域名所有者的一些联系信息,后面为了保护个人隐私,我们能查到的whois信息已经相当有限,当然如果能拖运营商的库就令当别论了;
那么我为啥还要获取域名的whois信息呢?很简单,为了域名到期监控,如果我有一个非常值钱的域名,我又忘记续费被人抢注了,那岂不非常可惜;
当然使用whois获取到期信息也不一定是准确的,因为有些运营商可能会在域名到期后更新到期时间(即时没有续费),用这种手段防止别人抢注,比如阿里收购的新网;
获取whois
我们这里不是使用第三方的api,而是直接找INAN机构问我们在哪个二级分销商买的域名,我们可以从二级分销商拿到whois,所以我们分两部走;
- 获取注册的whois机构
- 获取whois信息
这里使用linux中的nc
命令简单获取,当然其实使用telnet客户端也是可以的;
#!/bin/bash
utc2local()
{
local utc_date=$1
unix_timestamp="$(date -u -d "${utc_date}" '+%s')"
date -d "@${unix_timestamp}" "+%F %T"
}
check_domain="cnvito.top"
refer="$(nc -w 15 whois.iana.org 43 <<<"${check_domain}" | awk '/refer/{print $2}')"
if [ -z "${refer}" ]; then
echo "failed to get whois refer"
exit 1
fi
data="$(nc -w 15 ${refer} 43 <<<"${check_domain}")"
created_at="$(awk '/Creation Date/{print $3}' <<<"${data}")"
expired_at="$(awk '/Registry Expiry Date/{print $4}' <<<"${data}")"
printf '{"domain": "%s", "created_at": "%s", "expired_at": "%s"}\n' \
"${check_domain}" \
"$(utc2local ${created_at})" \
"$(utc2local ${expired_at})"
得到结果:
{
"domain": "cnvito.top",
"created_at": "2018-07-15 16:14:16",
"expired_at": "2024-07-15 16:14:16"
}