Python

Pythonでドメインチェック

More than 3 years have passed since last update.

あるプロジェクトで、渡された文字列がドメインかどうかチェックしなければならかったので、そこで対処したメモ。

import socket

domain = "qiita.com"

class DomainError(BaseException): pass

def check_domain(domain):
if domain.find(".") != -1:
try:
host = socket.gethostbyname(domain)
return True

except socket.gaierror:
raise DomainError("domain not found.")
else:
raise DomainError("this is not domain.")

まず、ドメイン文字列にドットが入ってるかどうかをしらべて、そのあと socket モジュールの socket.gethostbyname 関数を使って、 ドメイン文字列をIPアドレスに変換する。 これで正常に変換できれば、与えられたドメイン文字列は正常なドメインなので、Trueを返す。関数がエラーを出せば、正常なドメインではないので、エラーを投げる。