API不要!空きドメインをターミナルやスクリプトで調べる方法(Bash & Python対応)

ドメインを新しく取得したいとき、通常はレジストラのWebサイトで検索しますが、複数ドメインを一括で確認したいときはスクリプト化が便利です。

この記事では、APIを使わずに、ターミナルやスクリプト(bash / Python)で空きドメインを確認する方法を丁寧に解説します。


1. ターミナルで whois コマンドを使う基本

まずは1件ずつ調べる基本コマンド。

whois example-storage.com

出力に次のようなメッセージが含まれていれば、ドメインは未登録(=取得可能)です。

No match for domain "EXAMPLE-STORAGE.COM".

登録済みの場合は、登録者情報やステータス情報が表示されます。


2. 複数ドメインを一括で確認する Bash スクリプト

スクリプト(check_domains.sh)

#!/bin/bash

DOMAIN_FILE="domains.txt"
OUTPUT_FILE="domain_check_result.txt"
> "$OUTPUT_FILE"

while read -r domain; do
  echo "Checking: $domain"
  result=$(whois "$domain" 2>/dev/null)

  if echo "$result" | grep -qiE "No match|NOT FOUND|Status:\s*AVAILABLE"; then
    echo "$domain: AVAILABLE" | tee -a "$OUTPUT_FILE"
  else
    echo "$domain: TAKEN" | tee -a "$OUTPUT_FILE"
  fi
done < "$DOMAIN_FILE"

ドメインリスト(domains.txt)

example-storage.com
example.jp
example.app

出力結果(domain_check_result.txt)

example-storage.com: AVAILABLE
example.jp: TAKEN
example.app: AVAILABLE

3. Pythonでwhoisを扱うスクリプト

Bashと同様の処理をPythonで行う方法です。

スクリプト(check_domains.py)

import subprocess

def check_domain(domain):
    try:
        result = subprocess.run(['whois', domain], capture_output=True, text=True, timeout=5)
        output = result.stdout.lower()

        if any(keyword in output for keyword in ['no match', 'not found', 'status: available']):
            return f"{domain}: AVAILABLE"
        else:
            return f"{domain}: TAKEN"
    except Exception as e:
        return f"{domain}: ERROR ({e})"

with open('domains.txt', 'r') as f:
    domains = [line.strip() for line in f if line.strip()]

with open('domain_check_result.txt', 'w') as out:
    for domain in domains:
        result = check_domain(domain)
        print(result)
        out.write(result + '\n')

出力結果の意味

ステータス意味
AVAILABLEドメインは未登録。取得可能です。
TAKEN登録済み。既に誰かが使っています。
ERRORタイムアウトやネットワークエラーなど。

注意点と補足

  • whois コマンドはドメインのTLD(.com、.jpなど)によって出力形式が異なります。
  • そのため No match, NOT FOUND, Status: AVAILABLE など、複数のキーワードで判定しています。
  • .jp の場合、whois.jprs.jp サーバを使うため、環境によっては whois -h whois.jprs.jp example.jp のように指定が必要です。
  • 短時間に大量のリクエストを行うとアクセス制限がかかる可能性があるため、sleep を入れるなどの工夫も有効です。

応用編(拡張したい場合)

  • 空きドメインだけを別ファイルに抽出
  • CSV出力に対応
  • レート制限対策で sleep 1 をループ内に追加
  • GUI化やWeb UI化(Flaskなど)も可能

まとめ

APIを使わずに空きドメインを調べる方法は、ターミナルのwhoisとスクリプトを組み合わせることで十分実現可能です。少量のチェックにはコマンドラインで、一括チェックにはBashやPythonを使うことで、効率よくドメイン名の取得準備ができます。

コメント

タイトルとURLをコピーしました