Net::DNS - ドメインをIPアドレスに解決するスクレイパー
スクレイパーの概要

Net::DNS – ドメイン名のDNSレコードを収集します。ドメインデータベースの自動一括レゾルビング、ドメインの可用性チェックが可能です。A-Parserの機能により、Net::DNSスクレイパーのスクレイピング設定を将来の使用のために保存(プリセット)したり、スクレイピングのスケジュールを設定したりすることが可能です。
内蔵された強力なテンプレートエンジン Template Toolkit により、結果に必要なロジックを適用し、JSON、SQL、CSVを含む様々な形式でデータを出力するなど、必要な形式と構造で結果を保存できます。
収集データ
- IPアドレスのリスト
- リクエスト成功時に使用されたDNSサーバー
- 任意のタイプのDNSレコード(JSON形式で出力されるため、個別のパラメータを便利に取得可能)
ユースケース
- ドメインデータベースのレゾルビング
- ドメインの可用性確認
クエリ
クエリとしてドメインのリストを指定する必要があります。例:
a-parser.com
yandex.ru
google.com
vk.com
facebook.com
youtube.com
結果の出力例
A-Parserは、内蔵されたテンプレートエンジン Template Toolkit により柔軟な結果フォーマットをサポートしており、任意の形式や、CSVやJSONなどの構造化された形式で結果を出力できます。
デフォルト出力
結果フォーマット:
$query: $ip ($ips.format('$ip, '))\n
結果にはドメインとそのIPアドレスが表示されます:
youtube.com: 173.194.70.136 (173.194.70.136, 173.194.70.190, 173.194.70.93, 173.194.70.91, )
google.com: 46.28.247.98 (46.28.247.98, 46.28.247.89, 46.28.247.84, 46.28.247.108, 46.28.247.119, 46.28.247.114, 46.28.247.88, 46.28.247.94, 46.28.247.99, 46.28.247.109, 46.28.247.93, 46.28.247.104, 46.28.247.113, 46.28.247.118, 46.28.247.123, 46.28.247.103, )
facebook.com: 173.252.110.27 (173.252.110.27, )
a-parser.com: 176.9.9.90 (176.9.9.90, )
vk.com: 87.240.143.244 (87.240.143.244, 87.240.131.120, )
yandex.ru: 93.158.134.11 (93.158.134.11, 213.180.193.11, 213.180.204.11, 77.88.21.11, 87.250.250.11, )
SQL形式での保存
結果フォーマット:
[% "INSERT INTO dns VALUES('" _ query _ "', '" _ ip _ "', '" _ ips.format('$ip, ') _ "')\n" %]
結果の例:
INSERT INTO dns VALUES('vk.com', '87.240.190.67', '87.240.190.67, 87.240.190.72, 87.240.190.78, 93.186.225.208, 87.240.137.158, 87.240.139.194, ')
INSERT INTO dns VALUES('a-parser.com', '176.9.9.90', '176.9.9.90, ')
INSERT INTO dns VALUES('yandex.ru', '5.255.255.50', '5.255.255.50, 77.88.55.50, 77.88.55.88, 5.255.255.5, ')
INSERT INTO dns VALUES('facebook.com', '157.240.19.35', '157.240.19.35, ')
INSERT INTO dns VALUES('youtube.com', '172.217.171.238', '172.217.171.238, ')
JSONへの結果ダンプ
共通結果形式:
[% IF notFirst;
",\n";
ELSE;
notFirst = 1;
END;
obj = {};
obj.query = query;
obj.ips = p1.ips;
obj.json %]
開始テキスト:
[
終了テキスト:
]
結果の例:
[
{"ips":[{"ip":"176.9.9.90"}],"query":"http://a-parser.com/"},
{"ips":[{"ip":"172.217.173.78"}],"query":"http://google.com/"},
{"ips":[{"ip":"77.88.55.60"},{"ip":"77.88.55.66"},{"ip":"5.255.255.55"},{"ip":"5.255.255.60"}],"query":"http://yandex.ru/"},
{"ips":[{"ip":"172.217.25.14"}],"query":"http://youtube.com/"},
{"ips":[{"ip":"87.240.190.78"},{"ip":"93.186.225.208"},{"ip":"87.240.137.158"},{"ip":"87.240.139.194"},{"ip":"87.240.190.67"},{"ip":"87.240.190.72"}],"query":"http://vk.com/"},
{"ips":[{"ip":"157.240.196.35"}],"query":"http://facebook.com/"}
]
ヒント
「Prepend text」と「Append text」のオプションをタスクエディタで利用するには、「More options」を有効にする必要があります。
設定可能な項目
| パラメータ | デフォルト値 | 説明 |
|---|---|---|
| DNS Servers | 208.67.220.220, 8.8.8.8 | カンマ区切りで複数のサーバーをサポート |
| Not found is error | ☐ | DNSサーバーからの誤った応答を再確認可能 |
| Rotation type | Consistently | 次のDNSサーバーの選択方法(順次/ランダム) |
| Ban not working servers | ☑ | ヒューリスティックアルゴリズムにより動作していないサーバーを20分間バン。サーバーが1つしか残っていない場合はバンされません |
| Query type | A - Address record | レコードタイプの選択が可能 |