Python — создание инструмента поиска домена
15 ноября 2022 г.В этом руководстве мы будем использовать библиотеку whois для создания простого инструмента поиска доменов. С помощью этого инструмента мы можем получить информацию о доменном имени, такую как дата создания, срок действия, адрес, страна владельца и многое другое.
Если вы готовы, давайте начнем.
Установка WHOIS
Whois – это протокол запросов и ответов, позволяющий находить информацию о доменном имени. В Whois есть библиотека Python с именем python-whois.
Чтобы установить python-whois через pip, выполните следующую команду:
pip install python-whois # 👉️ Python 2
pip3 install python-whois # 👉️ Python 3
Как использовать WHOIS
Пользоваться WHOIS довольно просто. В следующем примере мы получим всю информацию о
hackernoon.com
import whois # 👉️ Import whois module
dm_info = whois.whois("hackernoon.com") # 👉️ Get Domain Info
print(dm_info)
Метод whois() возвращает информацию о данном доменном имени.
Вывод:
{
"domain_name": [
"HACKERNOON.COM",
"hackernoon.com"
],
"registrar": "GoDaddy.com, LLC",
"whois_server": "whois.godaddy.com",
"referral_url": null,
"updated_date": [
"2022-11-03 15:45:14",
"2022-04-04 12:33:12"
],
"creation_date": [
"2016-04-03 23:11:48",
"2016-04-03 18:11:48"
],
"expiration_date": [
"2023-04-03 23:11:48",
"2023-04-03 18:11:48"
],
"name_servers": [
"AMBER.NS.CLOUDFLARE.COM",
"GUY.NS.CLOUDFLARE.COM"
],
"status": [
"clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited",
"clientRenewProhibited https://icann.org/epp#clientRenewProhibited",
"clientTransferProhibited https://icann.org/epp#clientTransferProhibited",
"clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited"
],
"emails": "abuse@godaddy.com",
"dnssec": "unsigned",
"name": "Registration Private",
"org": "Domains By Proxy, LLC",
"address": [
"DomainsByProxy.com",
"2155 E Warner Rd"
],
"city": "Tempe",
"state": "Arizona",
"registrant_postal_code": "85284",
"country": "US"
}
Теперь давайте посмотрим, как получить конкретную информацию.
print("Registar:", dm_info.registrar) # 👉️ Get Registar
print("Creation Date:", dm_info.creation_date) # 👉️ Get Creation Date
print("Expiration Date:", dm_info.expiration_date) # 👉️ Expiration Date
print("Country:", dm_info.country) # 👉️ Get Country
Вывод:
Registar: GoDaddy.com, LLC
Creation Date: 2016-04-03 23:11:48
Expiration Date: 2023-04-03 23:11:48
Country: US
Обратите внимание, что! Вы получите сообщение об ошибке, если доменное имя не зарегистрировано. Например:
dm_info = whois.whois("xysqsw.com") # 👉️ xysqsw.com isn't registered
Вывод:
whois.parser.PywhoisError: No match for "XYSQSW.COM"
Однако нам нужно использовать try и кроме для обработки ошибки.
try:
dm_info = whois.whois("xysqsw.com") # 👉️ Get Domain Info
print(dm_info)
except:
print("Something Went Wrong")
Вывод:
Something Went Wrong
Если вы хотите узнать, как проверить доступность домена, см. раздел Проверить, доступен ли домен.
Создать поиск домена
Изучив, как использовать библиотеку whois, давайте напишем простую функцию поиска домена. Эта функция проверит данное доменное имя и вернет информацию о домене.
Во-первых, нам нужно установить пакеты валидаторов.
pip install validators # 👉️ Python 2
pip3 install validators # 👉️ Python 2
Validators – это библиотека проверки, используемая для проверки электронной почты, даты, IBAN и домена. ..
Теперь давайте напишем функцию поиска домена.
import validators # pip install validators
def domain_lookup(dm):
if validators.domain(dm): # Check if Domain is Valid
try:
dm_info = whois.whois(dm) # 👉️ Get Domain Info
return dm_info
except:
return f"{dm} is not registered"
else:
return f"Enter a valid domain"
Протестируйте нашу функцию с зарегистрированным доменом.
d_i = domain_lookup("facebook.com")
print(d_i)
Вывод:
{
"domain_name": "FACEBOOK.COM",
"registrar": "RegistrarSafe, LLC",
"whois_server": "whois.registrarsafe.com",
"referral_url": null,
"updated_date": "2022-01-26 16:45:06",
"creation_date": "1997-03-29 05:00:00",
"expiration_date": "2031-03-30 04:00:00",
"name_servers": [
"A.NS.FACEBOOK.COM",
"B.NS.FACEBOOK.COM",
"C.NS.FACEBOOK.COM",
"D.NS.FACEBOOK.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",
"serverUpdateProhibited https://www.icann.org/epp#serverUpdateProhibited",
"clientDeleteProhibited https://www.icann.org/epp#clientDeleteProhibited",
"clientTransferProhibited https://www.icann.org/epp#clientTransferProhibited",
"serverDeleteProhibited https://www.icann.org/epp#serverDeleteProhibited",
"serverTransferProhibited https://www.icann.org/epp#serverTransferProhibited",
"clientUpdateProhibited https://www.icann.org/epp#clientUpdateProhibited"
],
"emails": [
"abusecomplaints@registrarsafe.com",
"domain@fb.com"
],
"dnssec": "unsigned",
"name": "Domain Admin",
"org": "Meta Platforms, Inc.",
"address": "1601 Willow Rd",
"city": "Menlo Park",
"state": "CA",
"registrant_postal_code": "94025",
"country": "US"
}
Незарегистрированный домен:
d_i = domain_lookup("blabla123.com")
print(d_i)
Вывод:
blabla123.com is not registered
Недействительный домен:
d_i = domain_lookup("blabla123 h.com")
print(d_i)
Вывод:
Enter a valid domain
Заключение
Отлично! Вы успешно научились получать информацию из любого домена с помощью WHOIS. Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы или предложения.
Удачного кодинга!
Оригинал