WHOIS_Share

前言

whois信息在当下不同以前,以前可以获取到域名所有者的一些联系信息,后面为了保护个人隐私,我们能查到的whois信息已经相当有限,当然如果能拖运营商的库就令当别论了;

那么我为啥还要获取域名的whois信息呢?很简单,为了域名到期监控,如果我有一个非常值钱的域名,我又忘记续费被人抢注了,那岂不非常可惜;

当然使用whois获取到期信息也不一定是准确的,因为有些运营商可能会在域名到期后更新到期时间(即时没有续费),用这种手段防止别人抢注,比如阿里收购的新网;

获取whois

我们这里不是使用第三方的api,而是直接找INAN机构问我们在哪个二级分销商买的域名,我们可以从二级分销商拿到whois,所以我们分两部走;

  1. 获取注册的whois机构
  2. 获取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"
}