たとえば、2500 に相当するドメイン名のファイルがあります。
これらのドメイン名で whois を実行したいと考えています。
問題は、私がそれをしたことがなく、どこから始めればよいかわからないことです。何かアイデアがあれば、私はすべて耳にします。
ティア。
すでに役立つ回答がいくつかあるようですが、WHOIS ルックアップを一括で (そして一般的に) 実行する際の課題についてもう少し説明し、いくつかの代替ソリューションを提供することをお勧めします。
単一のドメイン名を検索するには、通常、そのドメインに関連する WHOIS サーバーを見つけてから、ポート 43 経由で情報を要求する必要があります。UNIX ライクなシェル (Bash など) にアクセスできる場合whois
は、これを簡単に行うことができます (前述のとおり)。他の人によって):
$ whois example.com
非常によく似た WHOIS ツールも、膨大な数のプログラミング言語のモジュールとして利用できるようになっています。Python の pywhois モジュールはその一例です。
最も単純な形式では、バルク WHOIS ルックアップは、ドメインのリストをループして、各ドメインの whois 要求を発行し、レコードを出力に書き込みます。
ファイルからドメインを読み取り、各 WHOIS レコードを個別のファイルに書き込む Bash の例を次に示しdomains.txt
ます (Windows を使用している場合は、Cygwin を試してみてください)。
#!/bin/bash
domain_list="domains.txt"
while read line
do
name=$line
echo "Looking up ${line}..."
whois $name > ${line}.txt
sleep 1
done < $domain_list
一括での WHOIS ルックアップの次の複雑さに注意してください。
一部の WHOIS サーバーでは、完全な WHOIS レコードが提供されない場合があります。これは、国固有のドメイン (.de や .fr など) や特定のレジストラに登録されたドメイン (GoDaddy など) に特に当てはまります。
可能な限り完全な記録が必要な場合は、多くの場合、レジストリの Web サイトにアクセスするか、記録をキャッシュしているサードパーティのサービス (DomainTools など) にアクセスする必要があります。これを自動化するのははるかに難しく、手動で行う必要がある場合があります。それでも、レコードには必要なものが含まれていない場合があります (例: 登録者の連絡先の詳細)。
一部の WHOIS サーバーでは、特定の時間内に作成できるリクエストの数に制限を課しています。制限に達した場合、レコードを再度要求するために数時間後に戻る必要がある場合があります。たとえば、.org ドメインの場合、1 分間に 3 回までしかルックアップに制限されず、レジストラによっては 24 時間禁止されます。
ルックアップの合間に数秒間一時停止するか、TLD ごとにドメインのリストをシャッフルして、同じサーバーに何度も連続して迷惑をかけないようにすることをお勧めします。
一部の WHOIS サーバーは頻繁にダウンし、リクエストがタイムアウトになるため、戻ってこれらのルックアップをやり直す必要がある場合があります。ICANN は、whois サーバーにはかなりの稼働時間が必要であると規定していますが、レコードの提供がひどいサーバーを 1 つまたは 2 つ見つけました。
WHOIS レコードの解析 (登録者の連絡先情報など) は、次の理由で難しい場合があります。
レコードは常に一貫した形式であるとは限りません。これは、特に .com ドメインで見られます。.com レコードは、(.com レジストリである Verisign ではなく) 世界中の何千ものレジストラのいずれかに保持されている可能性があり、すべてが ICANN が推奨する解析しやすい形式でレコードを提示することを選択しているわけではありません。
繰り返しますが、抽出したい情報は、ルックアップから返されたレコードに含まれていない場合があります。
既に述べたように、pywhois は WHOIS データを解析するための 1 つのオプションです。これは、各ドメインの WHOIS レコードを検索し、登録者名を抽出して (可能な場合*)、結果を CSV ファイルに書き込む、非常に単純な Python スクリプトです。必要に応じて、他のフィールドも含めることができます。
import whois
import csv
with open("domains.txt", "r") as f:
domains = f.readlines()
with open("output_file.csv", "wb") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["Domain", "Registrant Name"])
for domain in domains:
domain = domain.rstrip()
record = whois.whois(domain)
try:
r_name = record.registrant_name
except AttributeError:
r_name = "error"
writer.writerow([domain, r_name])
* このスクリプトを簡単にテストしたところ、pywhois による登録者名の抽出はあまり信頼できませんでした。代わりに試すことができる別の同様のライブラリはpythonwhois
.
Microsoft の whois ツールをhttp://technet.microsoft.com/en-us/sysinternals/bb897435.aspxからダウンロードしてインストールします。
ドメイン名のリストとヘッダー行を含むテキスト ファイルを作成します。
name
google.com
yahoo.com
stackoverflow.com
PowerShell スクリプトを作成します。
$domainname = Import-Csv -Path "C:\domains.txt"
foreach($domain in $domainname)
{
.\whois.exe $domain.name Export-Csv -Path "C:\domain-info.csv" -Append
}
PowerShell スクリプトを実行します。