01 / 本文
結論:ドメインの生死を確かめるなら RDAP を使う
AdSense に12サイト登録したまま放置していた。整理するために、それぞれのドメインがまだ生きているか調べた。
whois で照会したところ、6件のうち3件が「登録あり」に見えた。ところが RDAP で照会し直すと、6件すべてが失効していた。
原因は単純だ。whois の応答形式は TLD ごとにバラバラで、「登録がない」ことの伝え方も統一されていない。私のスクリプトは No match という文字列だけを見ていたので、別の言い回しを使う TLD で判定を誤った。
02 / 本文
何が起きたか
調べたのは次の6件だ。すべて数年前に取得して、サイトを作ったまま放置していたもの。
.net と .blog は No match for ... と返ってきたので、失効と判定できた。
問題は .info、.live、.online の3件だった。応答に No match が含まれず、注意書きやレジストリの案内文だけが返ってきた。スクリプトは「登録あり」と扱ってしまった。
「登録あり」なのに有効期限が取れないという結果になり、そこで異常に気づいた。
# 判定を誤った書き方
whois example.info | grep -q 'No match' && echo '失効' || echo '登録あり'
# → 「登録あり」と出るが、実際は失効している03 / 本文
RDAP なら、HTTPのステータスで判定できる
RDAP(Registration Data Access Protocol)は、whois の後継として作られた仕組みだ。応答が JSON で統一されていて、文字列を読み解く必要がない。
そして何より、登録がないドメインは HTTP 404 を返す。ステータスコードだけで判定できる。
https://rdap.org/domain/<ドメイン> に投げると、その TLD の RDAP サーバーへ転送してくれる。TLD ごとに問い合わせ先を用意しなくて済む。
import json, urllib.request, urllib.error
def is_registered(domain):
req = urllib.request.Request(
f'https://rdap.org/domain/{domain}',
headers={'Accept': 'application/rdap+json'})
try:
with urllib.request.urlopen(req, timeout=30) as r:
data = json.loads(r.read().decode())
ns = [n.get('ldhName', '') for n in data.get('nameservers', [])]
events = {e['eventAction']: e['eventDate'][:10]
for e in data.get('events', [])}
return True, ns, events.get('expiration')
except urllib.error.HTTPError as e:
if e.code == 404:
return False, [], None # 失効している
raise04 / 本文
RDAP で分かること
返ってくる JSON には、判断に必要なものが揃っている。
status — active、client transfer prohibited など。
nameservers — 現在のネームサーバー。ここが空なら、登録はあってもDNSが設定されていない。
events — registration(取得日)、expiration(期限)、last changed(最終変更)。
last changed は特に役に立つ。 ネームサーバーを変更したのに反映されないとき、この日時が動いていなければ、申請自体が届いていないと分かる。反映待ちではない。
05 / 本文
whois が使えない TLD も増えている
.shop は 2026年5月に whois が廃止された。照会すると、RDAP へ移行した旨の案内だけが返る。
ICANN の方針で、他の TLD も順次 RDAP へ移行している。新しく書くなら、最初から RDAP を使ったほうがいい。
ただし .jp は例外だ。JPRS は RDAP に対応しておらず、whois を使う。ドメイン名のあとに /e を付けると英語で返る。
# .jp は JPRS の whois。英語で返させる
whois -h whois.jprs.jp 'example.jp/e' \n | grep -E 'Name Server|Status|Last Updated'06 / 本文
放置したドメインを整理する意味
調べた結果、AdSense に登録した12サイトのうち 6件はドメインが失効していた。存在しないサイトを登録したままにしていた。
審査ではアカウント全体が見られる。動いていないサイトが半数を占めている状態は、印象として良くない。
取得したまま忘れているドメインは、意外と溜まる。年に一度でも棚卸しをしておくと、更新料の無駄も防げる。
07 / 本文
まとめ
whois は TLD ごとに応答形式が違う。No match だけを見る判定は当てにならない。
RDAP なら HTTP 404 で判定できる。 https://rdap.org/domain/<ドメイン> に投げれば、TLD ごとの問い合わせ先を意識しなくて済む。
.jp は RDAP 非対応なので whois を使う。.shop は whois が廃止済み。
判定が怪しいと感じたら、別の方法で照会し直す。 今回は「登録ありなのに期限が取れない」という不整合が手がかりになった。
08 / 本文
AdSense対策シリーズ
審査に落ちてから、申請の準備が整うまでの記録です。
/articles/manual/adsense-low-value-content-measured/ — 落ちた原因を、記事340本の文字数を測って特定した
/articles/manual/noindex-does-not-hide-from-adsense/ — noindex は審査には効かない。検索から消しても審査員には見えている
/articles/manual/adsense-required-pages-checklist/ — 申請に必要なページ一式。プライバシーポリシーに何を書くか
/articles/manual/whois-rdap-expired-domain-check/ — 登録したまま放置したドメインの生死を調べる(whois と RDAP)(この記事)
コメント
この記事へのコメント
お名前だけで投稿できます。アカウント登録やログインは不要です。 いただいたコメントは確認のうえ公開します。