Как в Python проверить, свободен домен или нет?
Мне нужно проверять, свободен домен или нет.
Подскажите функцию, которая принимает на вход имя домена, например "ya.ru", а на выходе выдает статус свободен домен True или занят False, ну или любую другую информацию о домене, из которой можно понять статус домена?
Ранее, в python2.7 я делал проверку через модуль whois
whois.whois('google.com')
Но в python 3 это уже не работает, я получаю ошибки. Привожу скрины с ошибками.
Ответы (2 шт):
Модуль под капотом запускает консольную утилиту whois с помощью библиотеки subprocess.
Она скорее всего не установлена. Команда, которая должна помочь:
sudo apt-get install whois
а на windows поможет утилита Whois v1.21
чтобы не качать под windows exeшник whois:
import socket
for dom in ['ya.ru', 'error.qwerty']:
try:
s = socket.getaddrinfo(dom, 80)
print(f'занят {dom} {s}')
except socket.gaierror:
print(f'свободен {dom}')
# занят ya.ru [(<AddressFamily.AF_INET: 2>, 0, 0, '', ('87.250.250.242', 80))]
# свободен error.qwerty
или pip install python-whois
import whois
for dom in ['ya.ru', 'error.qwerty']:
details = whois.whois(dom)
print(f'\n{dom}:\n {details}')
# ya.ru:
# {
# "domain_name": "YA.RU",
# "registrar": "RU-CENTER-RU",
# "creation_date": "1999-07-12 14:40:22",
# "expiration_date": "2021-07-31 21:00:00",
# "name_servers": [
# "ns1.yandex.ru.",
# "ns2.yandex.ru."
# ],
# "status": "REGISTERED, DELEGATED, VERIFIED",
# "emails": null,
# "org": "YANDEX, LLC."
# }
# error.qwerty:
# {
# "domain_name": null,
# "registrar": null,
# "whois_server": null,
# "referral_url": null,
# "updated_date": null,
# "creation_date": null,
# "expiration_date": null,
# "name_servers": null,
# "status": null,
# "emails": null,
# "dnssec": null,
# "name": null,
# "org": null,
# "address": null,
# "city": null,
# "state": null,
# "zipcode": null,
# "country": null
# }

