Net::Whois - RDAPおよびWHOIS経由でドメインデータをチェックするスクレイパー
スクレイパーの概要

ドメインに関するデータは、ドメインゾーンに応じて RDAP (HTTP, JSON) または WHOIS (ポート 43) を介して収集されます。各 TLD に対して、スクレイパーには RDAP および WHOIS サーバーが設定されています。そのゾーンで RDAP が利用可能な場合は、まず RDAP を介してリクエストが実行され、エラーが発生した場合は WHOIS が試行されます。
A-Parserの機能により、スクレイピング設定を保存して後で再利用(プリセット)したり、スクレイピングスケジュールを設定したりすることが可能です。クエリの自動増殖、ファイルからのサブクエリの置換、英数字の組み合わせやリストの総当たりを使用して、最大限の結果を得ることができます。
内蔵された強力なテンプレートエンジン Template Toolkit により、結果に必要なロジックを適用し、JSON、SQL、CSV を含む様々な形式で、必要な構造のまま結果を保存できます。
スクレイパーの活用事例
🔗 任意のデータの抽出
Net::Whoisで任意のデータを選択して抽出します
🔗 ドメインパラメータ
ドメインごとのパラメータ取得
🔗 ドメイン期限の通知
ドメインの登録期限終了についてTelegramで通知を受け取ります
🔗 メールアドレスベースの収集
Whoisサービスを通じてドメインのメールアドレスを収集できるプリセットです。
収集データ
- ドメインが登録されているかどうか
- ドメインの登録有効期限
- ドメインの登録日
- レコードの最終更新日
- RDAPサーバーのURL(RDAPリクエスト成功時)
- 使用されたWHOISサーバー(WHOISリクエスト時、RDAPでは空の場合が多い)
- ドメインのネームサーバーリスト
- ドメイン登録業者(レジストラ)
- ドメインの現在のステータス
- ドメインの解放予定日
- 生のレスポンス — WHOISテキストまたはRDAP JSON
機能
- ドメインゾーンに応じたRDAPまたはWHOISの自動選択(RDAP優先)
- 国際化ドメイン(IDN、例: яндекс.рф)のサポート
ユースケース
- 空きドメインまたは間もなく解放されるドメインの収集
- ネームサーバー(NS)リストの収集
- ドメインステータスの取得
クエリ
クエリとして、検索対象のドメインを指定する必要があります。例:
a-parser.com
yandex.ru
google.com
vk.com
facebook.com
結果の出力例
A-Parserは、内蔵のテンプレートエンジン Template Toolkit により柔軟な結果フォーマットをサポートしており、任意の形式やCSV、JSONなどの構造化された形式で結果を出力できます。
デフォルト出力
結果フォーマット:
$query - registered: $registered, expire: $expire_date, creation: $creation_date
結果には、ドメイン、登録の有無、有効期限、およびドメイン登録日が表示されます:
facebook.com - registered: 1, expire: 30.03.2028, creation: 29.03.1997
a-parser.com - registered: 1, expire: 25.02.2022, creation: 25.02.2012
vk.com - registered: 1, expire: 23.06.2021, creation: 24.06.1997
yandex.ru - registered: 1, expire: 01.10.2021, creation: 23.09.1997
google.com - registered: 1, expire: 14.09.2028, creation: 15.09.1997
NSリストの出力
結果フォーマット:
$ns.format('$server\n')
結果の例:
demi.ns.cloudflare.com
vern.ns.cloudflare.com
ドメイン期限データをCSVで出力
結果フォーマット:
[% tools.CSVline(query, registered, expire_date, creation_date, updated_date, free_date, whoisserver, rdapserver, registrar) %]
結果の例(.com ドメイン、RDAP経由の回答 — whoisserver は空、rdapserver が入力済み):
a-parser.com,1,25.02.2027,25.02.2012,10.02.2026,none,,https://rdap.verisign.com/com/v1/domain/a-parser.com,"Squarespace Domains II LLC"
NSリストをCSVテーブルに出力
結果フォーマット:
[% FOREACH ns;
tools.CSVline(query, server);
END %]
結果の例:
a-parser.com,demi.ns.cloudflare.com
a-parser.com,vern.ns.cloudflare.com
結果をJSONにダンプ
共通結果形式:
[% IF notFirst;
",\n";
ELSE;
notFirst = 1;
END;
obj = {};
obj.query = query;
obj.registered = p1.registered;
obj.expire_date = p1.expire_date;
obj.creation_date = p1.creation_date;
obj.updated_date = p1.updated_date;
obj.free_date = p1.free_date;
obj.whoisserver = p1.whoisserver;
obj.rdapserver = p1.rdapserver;
obj.registrar = p1.registrar;
obj.domains = [];
FOREACH item IN p1.ns;
obj.domains.push({
server = item.server
});
END;
obj.json %]
開始テキスト:
[
終了テキスト:
]
結果の例 (RDAP):
[{
"registered": 1,
"rdapserver":"https://rdap.verisign.com/com/v1/domain/a-parser.com",
"query":"a-parser.com",
"free_date":"none",
"domains":[
{
"server":"demi.ns.cloudflare.com"
},
{
"server":"vern.ns.cloudflare.com"
}
],
"registrar":"Squarespace Domains II LLC",
"expire_date":"25.02.2027",
"creation_date":"25.02.2012",
"whoisserver":"",
"updated_date":"10.02.2026"
}]
タスクエディタで「Prepend text」と「Append text」のオプションを使用するには、「More options」を有効にする必要があります。
結果の処理
A-Parserではスクレイピング中に直接結果を処理できます。このセクションでは、Net::Whoisスクレイパーの最も一般的なケースを紹介します。
ドメイン登録業者の取得
WHOIS経由の回答では $p1.data フィールドにテキストが含まれ、RDAPでは JSON が含まれます。両方のケースで登録業者を取得するには、2つの結果ビルダーを追加します。
Result Builders (結果ビルダー)を追加し、ドロップダウンリストからソース: $p1.data を選択します。タイプ: RegEx Match を選択します。「正規表現」フィールドに Registrar:\s*(.+) と入力し、変数 registrarwhois に保存します。
再度Result Builders (結果ビルダー)を追加し、ドロップダウンリストからソース: $p1.data を選択します。タイプ: RegEx Match を選択します。「正規表現」フィールドに "entities"[\s\S]+?"vcardArray"[\s\S]+?"fn"[\s\S]+?"text"[\s\S]+?"([^"]+?)" と入力し、変数 registrarrdap に保存します。
Result format (結果フォーマット)に次を追加します: [% IF registrarrdap == 'none' %]$query - $registrarwhois[% ELSE %]$query - $registrarrdap[% END %] — RDAPで名前が見つからない場合(registrarrdap が none)、WHOISの値が出力され、それ以外はRDAPの値が出力されます。
サンプルをダウンロード
eJyVVNtO20AQ/RVrFEQoJioPfbGEqkATiSpNKAH1wU6lVTxJt6x3ze46EEX5987Y
jh1TpKpP9lzPmdvuYIPWSaMhugzBC/fk7iw69A6ieAd5+Q8RWFxL562wEEIurKMg
cohhij6Kfvwy0pEhxZUolIdwB36bI4UZym5limSUKckrYzPhKWnpBhuhCnaLT4Lb
cdBg2FTkwdVVcKqNxtPgZNF7LtBug4ug1/i8MCbFjSbz0fsenIUdpl/InmjYLxYh
VNBuXPIg5F5+OaiLbIxzscEHw2ylwlY9JmkqMubbS4VHtg6qgvpnA//KGUSaSk/d
FKpC4Ca1qI9aPnO9K6EchsCUJbqxNRnl9FhmKOs40IuhqgsoR1EGf69imhyOuI4F
MUnfWqRHK7yxs5wJkX4HRg+VmuAGleuQ2F4XUqU00uGKgm7rwPddZn/l2Df1HUPR
4F8scWiylNL17FsblZqJWTd2JTPpSeFuTKGp9o8hPCHmh57B1FB3MmOxQakDa3Ba
2xw1L1k7smHeqjpVdMZypNyBM4VdEl5M+DRlwa2vl5k2C1/L5PyN4P6waVGSuA/9
wfnZwfhQBZDoDU+xu7Ww2If/BZQAak97hS6BmLCSZL44/5zAZilsOrRWbLv6le7K
vFpdTT/+mQD9nSXwT858R0SZ6C2NXsn1rL7pQxML/UDPxkzfmCxXyBPXhVK0sA7v
28sZunpBWWhn9zb4poQgHs1bQnSMcl/nFbfcSmL3iTlntGPHqHXKpVDq8X5ybOFA
500+0yNr3yx2eTIgLqpHbbCkW2wvs6TKRS7p3teGDpEk7kT9BDZP5Y7W+be7q7Qc
Vur2fwBx19yZ
設定可能な項目
| パラメータ | デフォルト値 | 説明 |
|---|---|---|
| Recursive query | ☐ | WHOIS の詳細バージョンを取得できます |
| WHOIS server | 独自の WHOIS サーバーを指定できます | |
| RDAP server | 独自の RDAP サーバーを指定できます | |
| Checking by DNS | ☑ | ドメインの IP の存在に基づいて、ドメインが登録されているか確認できます |
| Checking domains by DNS record | ☑ | IP を確認し、ステータスが ALLOCATED の場合はドメインが登録済みであると判断します。このオプションが無効な場合、IP の確認は行われません |
| Force DNS check for not found domains | ☑ | ドメインが未登録と判定された場合に強制的に再確認を行います |