Обнаружение доменного имени - PullRequest
1 голос
/ 29 апреля 2019

Я хочу получить фильтр законных доменных имен, используя этот код Python.Я не вижу никаких проблем с кодом и просмотрел много сайтов.Невозможно разделить правильные и неправильные доменные имена.

def getDomains():
    with open('domains.txt', 'r+') as f:
        for domainName in f.read().splitlines():
            domains.append(domainName)

def run():
    for dom in domains:
       if dom is not None and dom != '':
           details = pythonwhois.get_whois(dom)
           if str(details) is None:
               unavailable.append(dom)
           else:
               available.append(dom)

результат должен выглядеть следующим образом:

доступные домены

google.com youtube.com


недоступные домены

xcdv345.hgt.com letstrythis12398.net

Ответы [ 3 ]

1 голос
/ 29 апреля 2019

Строка if str(details) is None: всегда будет False, даже если details равен None.

Запуск str(None) дает вам строку 'None', которая не совпадает сзначение None:

str(None) is None  # False
None is None       # True
1 голос
/ 29 апреля 2019

Даже если домен не зарегистрирован, pythonwhois.get_whois не None.

Попробуйте напечатать результат pythonwhois.get_whois('jjj876686.njerfjr'), например, поле contacts всегда присутствует (результат и str (результат) отличаются от None) (см. http://cryto.net/pythonwhois/usage.html#pythonwhois_get_whoisdomainnormalized)

0 голосов
/ 29 апреля 2019

Проверьте, существует ли ключ id в возвращенном dictionary из pythonwhois.get_whois()

Пример:

import pythonwhois

domains = ['google.com', 'i-n-v-a-l-i-d.com']

for dom in domains:
  if dom is not None and dom != '':
    details = pythonwhois.get_whois(dom)

    # Check if 'id' key exists in the 'details' dictionary
    # if the 'id' key exists the domain is already registerd
    if 'id' in details:
      print('{} available'.format(dom))
    else:
      print('{} unavailable'.format(dom))

Выход:

google.com available
i-n-v-a-l-i-d.com unavailable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...