ドメインを新しく取得したいとき、通常はレジストラの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を使うことで、効率よくドメイン名の取得準備ができます。
コメント