Python — создание инструмента поиска домена

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. Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы или предложения.

Удачного кодинга!


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE