pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

pythonのcymruwhoisモジュールでIPアドレスからwhois情報取得

使い方が簡単

#! /usr/bin/env python3
# -*- coding: utf-8 -*-


from cymruwhois import Client

# 一個だけデータを取得する場合
c = Client()
r = c.lookup('8.8.8.8')
print('ANS:    ' + r.asn)
print('IP :    ' + r.ip)
print('PREFIX: ' + r.prefix)
print('CC:     ' + r.cc)
print('OWNER:  ' + r.owner)

# 複数データを取得する場合

# 悪い例
# 同じCIDR内だが、都度クエリが発生
# 以下URLにも注意書きがあり。loop内で使うと性能悪い
# http://pythonhosted.org/cymruwhois/api.html
for i in range(256):
    ip = '8.8.8.' + str(i + 1)
    r = c.lookup(ip)
    print(r.asn)


# 良い例
# 同じCIDR内なので、通信は最初の一回だけ。
ips = list()
for i in range(254):
    ips.append('8.8.8.' + str(i + 1))

for r in c.lookupmany(ips):
    print(r.asn)


信頼性もありそう

・CentOS7のwgetコマンドは引数に指定されたIPを管理するレジストラを探すためにDNS(逆引き&TXTレコード)を使っている。
 その問い合わせ先がcymruのサーバであった。ここでIPアドレスを管理するレジストラ情報を得て、whoisプロトコルで情報を得ている。
 →CentOSwgetに組み込まれているサービスに関与している組織。

・cymruとは?
 
www.team-cymru.org

 Googleや名だたるITサービスプロバイダーがパートナー

備考

whoisはレスポンスの規則がないとの情報あり。RDAPなるものを知り、これがいいと思ったがCentOS7環境でRDAP対応のipwhoisが上手く動かず、困っていたところで見つけたモジュール。
Macではipwhois正常に動く。。。使いやすメリットでcymruwhoisを使おう。cymruwhoisはRDAP未対応?(デフォルト動作ではwhoisプロトコルを利用)