pythonでJPドメインの情報を取得してみる

こんにちは、ysです。

 

さて、早速1回目の記事を書きます。

 

インフラ管理では、ドメインの管理も重要な業務の一環になります。

今までですと、whoisコマンドで情報の確認を行っていましたが、

Lambdaでコードを書いて自動化し、工数削減することも業務の一つになっており、

今回は、pythonで一括で情報を取得してみようということになりました。

当初は簡単に出来るかな、、と思いきや、当初の目論見より時間がかかりましたので備忘もかねて記載します。

 

pythonではpython-whoisモジュールを使えば、ドメインの情報を取得できます。

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

 

import whois

 

if __name__ == '__main__':
    result = whois.whois('google.com')
    print(result)

 

 

 

 

ただ、jpドメインについては情報がなぜか取得できませんでした。

全てnullになってます。

 

{
  "domain_name": null,
  "registrant_org": null,
  "creation_date": null,
  "name_servers": null,
  "updated_date": null,
  "status": null
}

 

結論としては、

whoisモジュールを使用することで対応できるようです。

上記で使用しているpython-whoisとはモジュール名が重複するようなので、

どちらか片方をインストールしてもう一方をアンインストールしたほうがよさそうです。

 

ドキュメントはこちらです。

https://github.com/DannyCork/python-whois

 

インストールコマンドはこちらです。

pip install whois

 

google.jpのドメインを取得するコードはこちらです。

 

 

import whois

domain = whois.query('google.jp')
print(domain.__dict__)

 

結果は下記の通りです。日付の出力が独特なので、変更を行います。

 

{'name': 'google.jp', 'registrar': '', 'registrant_country': '', 'creation_date': datetime.datetime(2005, 5, 30, 0, 0), 'expiration_date': 
datetime.datetime(2022, 5, 31, 0, 0), 'last_updated': datetime.datetime(2021, 6, 1, 1, 5, 9), 'status': 'Active', 'statuses': ['Active'], 'dnssec': False, 'name_servers': {'ns2.google.com', 'ns4.google.com', 'ns1.google.com', 'ns3.google.com'}, 'registrant': 'Google LLC'}  

 

●試行錯誤その1

python-whois-extendedであればJPドメイン対応可能!となっていましたが、DNSサーバくらいで、期限等の情報は取れませんでした。。

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

 

●試行錯誤その2

ここで引用されているclass(WhoisEntry,WhoisJp)を追加してみましたが、

https://github.com/richardpenman/whois/blob/master/whois/parser.py

 

co.jpドメインは可能、jpドメインは不可能という結果になりました。

 

●試行錯誤その3

pythonLinuxのコマンドであるwhoisを使用すれば情報は取得できそうです。

 

import subprocess
from subprocess import PIPE

def command():
    response = subprocess.run("whois google.jp", shell=True, stdout=PIPE, stderr=PIPE, text=True)
    print(response.stdout)

if __name__ == '__main__':
    command()

 

ただ、これはPythonというよりもシェルスクリプトを書いているようなので

やめました。

 

blogを書いてみて

マークダウン形式で書きたいのですが、うまくいきませんでした。。

次回までに勉強しておきます。

 

 

 

はじめまして、ysと申します。

 

このblogは自分が勉強した技術的な記事を書いていこうと思いますが、

まずは0回目ということで自己紹介をさせてください。

 

インフラ管理を主な業務としてキャリアを積んできました。

ただ、昨今のクラウド環境の移行で、オンプレ環境からクラウド環境の管理へ移行しています。

その中で、自分が今までやってきたこともない業務(pythonコード作成して業務効率化、データ分析)も今年3月から行うことになりましたが、日々苦戦しています。

スキル的にもまだまだなので、日々の勉強、苦戦したことをアウトプットして少しでも理解を進めたいと思い、このblogを立ち上げた次第です。

 

 

今自分が注力している分野は下記となりますので、

それを中心に書いていこうと思います。

python

・データ分析

(実はAWS 専門知識データ分析取得済みですが、まだまだ経験が足りていないので勉強の日々です)

 

同じ分野で活躍されている方、ここをこうしたほうが良いよ、などアドバイス等ございましたらお気軽にコメントいただけますと幸いです。