Pythonでwhois情報を検索できるpython-whoisを使う


Linuxだとwhoisコマンドでwhois情報を取得できるけれど私のパソコンはWindowsなのでそんな器用なことはできない。

そこでPythonでWhois検索できるpython-whoisライブラリがあったので使ってみたいと思う。

https://pypi.org/project/python-whois/

Whois検索する

ライブラリのバージョンは0.9.5。

検索するには

from whois import whois

print(whois("google.com"))

こんな感じで書く。

上記のgoogle.comだとこんな感じ。

{
"domain_name": "GOOGLE.COM",
"registrar": "MarkMonitor, Inc.",
"registrar_url": "http://www.markmonitor.com",
"reseller": null,
"whois_server": "whois.markmonitor.com",
"referral_url": null,
"updated_date": [
"2019-09-09 15:39:04",
"2024-08-02 02:17:33+00:00"
],
"creation_date": [
"1997-09-15 04:00:00",
"1997-09-15 07:00:00+00:00"
],
"expiration_date": [
"2028-09-14 04:00:00",
"2028-09-13 07:00:00+00:00"
],
"name_servers": [
"NS1.GOOGLE.COM",
"NS2.GOOGLE.COM",
"NS3.GOOGLE.COM",
"NS4.GOOGLE.COM"
],
"status": [
"clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited",
"clientTransferProhibited https://icann.org/epp#clientTransferProhibited",
"clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited",
"serverDeleteProhibited https://icann.org/epp#serverDeleteProhibited",
"serverTransferProhibited https://icann.org/epp#serverTransferProhibited",
"serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited",
"clientUpdateProhibited (https://www.icann.org/epp#clientUpdateProhibited)",
"clientTransferProhibited (https://www.icann.org/epp#clientTransferProhibited)",
"clientDeleteProhibited (https://www.icann.org/epp#clientDeleteProhibited)",
"serverUpdateProhibited (https://www.icann.org/epp#serverUpdateProhibited)",
"serverTransferProhibited (https://www.icann.org/epp#serverTransferProhibited)",
"serverDeleteProhibited (https://www.icann.org/epp#serverDeleteProhibited)"
],
"emails": [
"abusecomplaints@markmonitor.com",
"whoisrequest@markmonitor.com"
],
"dnssec": "unsigned",
"name": null,
"org": "Google LLC",
"address": null,
"city": null,
"state": "CA",
"registrant_postal_code": null,
"country": "US"
}

ちゃんとレジストラやネームサーバーも取得できている。

前まではjpドメインはそのままでは使えなかったけど、最新バージョンで使えるようになっていた。

docomo.jpだとこんな感じ↓

{
"domain_name": "DOCOMO.JP",
"registrant_org": "NTT DOCOMO, INC.",
"organization_type": null,
"creation_date": "2001-03-26 00:00:00",
"technical_contact_name": null,
"administrative_contact_name": "NTT DOCOMO, INC.",
"administrative_contact_email": "domain-admin@nttdocomo.com",
"administrative_contact_phone": "03-5156-3721",
"administrative_contact_fax": null,
"administrative_contact_post_code": "100-6150",
"administrative_contact_postal_address": "Sanno Park Tower, 2-11-1, Nagata-cho, Chiyoda-ku, Tokyo",
"expiration_date": "2025-03-31 00:00:00",
"name_servers": "[Signing Key]",
"updated_date": "2024/07/01 17:41:41 (JST)",
"signing_key": null,
"status": "Active"
}

ネームサーバーが取得できてないけど一応、まともなデータは返ってくる。

docomo.ne.jpだと

{
"domain_name": "DOCOMO.NE.JP",
"registrant_org": null,
"organization_type": "Network Service",
"creation_date": null,
"technical_contact_name": "AG3600JP",
"administrative_contact_name": "AY30606JP",
"administrative_contact_email": null,
"administrative_contact_phone": null,
"administrative_contact_fax": null,
"administrative_contact_post_code": null,
"administrative_contact_postal_address": null,
"expiration_date": null,
"name_servers": [
"ns001.docomo.ne.jp",
"ns002.docomo.ne.jp"
],
"updated_date": "2024/12/05 16:48:55 (JST)",
"signing_key": null,
"status": "Connected (2025/07/31)"
}

こんな感じでネームサーバーは取得できるけどadministrative_contactがNullになっている。これはたぶんドメインによると思う。

あとne.jpやco.jpはちゃんと取得できたけど、or.jpやgo.jpなんかはエラーが出たのでそういったドメインの情報が欲しければライブラリを直すか別のライブラリを使った方がいい。

その他、netやxyz、今流行りのioやaiドメインもWhois検索することができた。

使われていないドメインの場合

検索したドメインが使われていない場合No match!みたいなエラー文が返ってくるので、使われていないドメインを探している人はtryでエラー処理をした方がいい。

でもエラーが返ってくるのはcomやnetやjpの昔からあるドメインで、appやdevみたいな最近できたドメインだと普通にNullが返ってくるんだよなあ。

参考:https://qiita.com/hirachan/items/6787cb146838aade2d56