2020年6月21日日曜日

dnspython を使って Python で名前解決してみた

概要

dnspython を使うと簡単に実現できます
今回は単純に A レコードの取得を行ってみました

環境

  • macOS 10.15.5
  • Python 3.8.3
    • dnspython 1.16.0

インストール

  • pipenv install dnspython

サンプルコード

  • vim test.py
# カスタムのリゾルバを作成
# configure=True にするとデフォルトの DNS がシステムに設定されている DNS になる
resolver = dns.resolver.Resolver(configure=True)
# システム以外の DNS リゾルバを使いたい場合は設定する
resolver.nameservers = ["8.8.8.8", "8.8.4.4"]
# リゾルバを確認するためのデバッグ
print(resolver.nameservers)

try:
    # 名前解決できない場合はエラーが発生する
    anser = resolver.query("hawksnowlog.blogspot.com", "a")
    # Anser -> RRset -> IN.A.A という順番で IP アドレスを取得します
    for item in anser.rrset.items:
        print(item.address)
except NXDOMAIN as e:
    print(e)

参考サイト

1 件のコメント:

  1. dnspython 2.0.0 から anser.rrset.items が dict になっているので注意ください

    返信削除