メインコンテンツへスキップ

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

スクレイパーの概要

スクレイパーの概要

ドメインに関するデータは、ドメインゾーンに応じて RDAP (HTTP, JSON) または WHOIS (ポート 43) を介して収集されます。各 TLD に対して、スクレイパーには RDAP および WHOIS サーバーが設定されています。そのゾーンで RDAP が利用可能な場合は、まず RDAP を介してリクエストが実行され、エラーが発生した場合は WHOIS が試行されます。

詳細: RDAP (英語), WHOIS.

A-Parserの機能により、スクレイピング設定を保存して後で再利用(プリセット)したり、スクレイピングスケジュールを設定したりすることが可能です。クエリの自動増殖、ファイルからのサブクエリの置換、英数字の組み合わせやリストの総当たりを使用して、最大限の結果を得ることができます。

内蔵された強力なテンプレートエンジン Template Toolkit により、結果に必要なロジックを適用し、JSON、SQL、CSV を含む様々な形式で、必要な構造のまま結果を保存できます。

スクレイパーの活用事例

収集データ

  • ドメインが登録されているかどうか
  • ドメインの登録有効期限
  • ドメインの登録日
  • レコードの最終更新日
  • 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で名前が見つからない場合(registrarrdapnone)、WHOISの値が出力され、それ以外はRDAPの値が出力されます。

サンプルをダウンロード

A-Parser へのサンプルインポート方法

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 queryWHOIS の詳細バージョンを取得できます
WHOIS server独自の WHOIS サーバーを指定できます
RDAP server独自の RDAP サーバーを指定できます
Checking by DNSドメインの IP の存在に基づいて、ドメインが登録されているか確認できます
Checking domains by DNS recordIP を確認し、ステータスが ALLOCATED の場合はドメインが登録済みであると判断します。このオプションが無効な場合、IP の確認は行われません
Force DNS check for not found domainsドメインが未登録と判定された場合に強制的に再確認を行います