2013-10-03 9 views
0

У меня возникла проблема с получением имени хоста при использовании socket.gethostbyaddr(ip_addr) на определенных сайтах.Python Sockets: gethostbyaddr: Обратный поиск DNS-сбоев

Я не буду вдаваться в подробности о том, на каком сайте это не работает.

поэтому получение хозяина по имени отлично подходит для каждого сайта, который я пробовал до сих пор, но затем, когда я пытаюсь получить имя сайта, я получаю сообщение об ошибке ing host not found.

Исправление или альтернатива были бы хороши для получения полных данных. Если нет исправления, я могу просто оставить имя хоста. нет biggie. Спасибо за помощь.

# not full code 
hostip = socket.gethostbyname(hostname) 
print socket.gethostbyaddr(hostip) 

Error: socket.herror: [Errno 11004] host not found 
+2

Не на каждом сайте настроен обратный DNS. Иногда это специально, иногда это потому, что вы смотрите на внутренний адрес, и нет необходимости в нем внутри сети, поэтому его не стоит настраивать, иногда кто-то просто прищурился. Это все, о чем вы спрашивали? Или вы спрашиваете, есть ли где-нибудь вы можете загрузить все данные DNS второго уровня и создать свою собственную обратную карту с разными правилами? Или… ? – abarnert

+0

@abarnert Да, вы ответили на мой вопрос. Благодарю. извините, если вопрос запутался – Crispy

ответ

2

Не каждый IP-адрес имеет обратный DNS. Иногда это специально, иногда это потому, что вы смотрите на внутренний адрес, и нет необходимости в нем внутри сети, поэтому его не стоит настраивать, иногда кто-то просто прищурился.

Зачем кому-либо это делать нарочно? Чаще всего, поскольку несколько доменных имен сопоставляются с одним и тем же IP-адресом.

Например, сайт совместного размещения может отображать сайты для трех своих клиентов: www.foo.com, www.bar.com и www.baz.com, все для 1.2.3.4. HTTP дает вам запрошенное имя хоста в заголовке Host:, поэтому он может определить, на каком сайте должен идти ваш браузер. Но вне HTTP (или какого-либо другого протокола более высокого уровня) нет никакого способа определить, какое из трех названий вы имели в виду с 1.2.3.4. Таким образом, они ничего не могут обеспечить, что было бы полезно для вас. Также может быть имя, подобное shared_1234.hostingcompany.com, которое полезно для своих ИТ-специалистов, и в этом случае они могут предоставить это, но в противном случае они не будут беспокоиться о любом обратном DNS.