dnspython будет очень хорошо выполнять мой поиск в DNS, но полностью игнорирует содержимое /etc/hosts
.
Есть ли вызов библиотеки Python, который будет делать правильные вещи? т.е. сначала зарегистрируйтесь etc/hosts
, а в противном случае вернитесь только к поиску DNS?
socket.gethostbyname
, для более сложных запросов используйте dnspython.Ответы:
Я не совсем уверен , что если вы хотите сделать поиск в DNS самостоятельно , или если вы просто хотите , И. П. хозяина. Если вы хотите последнее,
источник
nscd
иnslcd
в Unix-ящиках это можно сделать. Он также может быть кэширован локальным сервером имен, настроенным для кэширования (обычная установка, когда-то. Вероятно, не так много сейчас). К сожалению, это не прямой ответ «нет». Такие вещи случаются редко. :)Нормальное разрешение имен в Python работает нормально. Зачем для этого нужен DNSpython. Просто используйте сокет ,
getaddrinfo
который следует правилам, настроенным для вашей операционной системы (в Debian это следующее/etc/nsswitch.conf
:источник
addrs = [ str(i[4][0]) for i in socket.getaddrinfo(name, 80) ]
дает мне список IPS.дает вам список адресов для www.example.com. (ipv4 и ipv6)
источник
Этот код хорошо подходит для возврата всех IP-адресов, которые могут принадлежать определенному URI. Поскольку многие системы сейчас находятся в размещенной среде (AWS / Akamai и т. Д.), Системы могут возвращать несколько IP-адресов. Лямбда была «позаимствована» у @Peter Silva.
источник
Приведенный выше ответ был предназначен для Python 2. Если вы используете Python 3, вот код.
источник
Я нашел этот способ расширить имя хоста DNS RR, которое расширяется в список IP-адресов, в список имен хостов участников:
Который, когда я его запускаю, перечисляет несколько имен хостов 1e100.net:
источник