2015-10-24 1 views
0

Mon code:Comment obtenir le nom de domaine dans les sockets Python?

def getHostName(ip_addr): 
    host_name = socket.gethostbyaddr(ip_addr) 
    if host_name != "": 
      return host_name 

Quand je plugin 216.58.220.46 en tant que valeur IP dans la fonction ci-dessus, elle renvoie le nom de domaine comme: maa03s19-in-f14.1e100.net au lieu de google.com. Quelle méthode de socket devrais-je utiliser pour obtenir le nom de domaine habituel?

+2

'hôte 216.58.220.46' renvoie' maa03s19-in-f14.1e100.net' qui est le nom d'hôte correct (dns). 'host google.com' me donne' 173.194.112.69' (et autres). – PeterMmm

+1

"1e100.net" est également détenue par google (dans le sens traditionnel, un google == 10 ** 100) –

+0

Bon, non seulement google mais aussi ce nom étrange vient pour de nombreux sites Web –

Répondre

1

Il n'y a pas de nom unique garanti pour une adresse IP, Internet ne fonctionne pas comme ça.

Vous ne pouvez pas le faire dans des sockets Python - parce que vous ne pouvez pas le faire du tout, car "le nom de domaine" n'est pas un concept qui existe. De nombreux noms de domaine peuvent être résolus en une adresse IP, et l'entrée de recherche inversée dans DNS pour une adresse IP n'a pas nécessairement de relation avec eux.

par exemple. maa03s19-in-f14.1e100.netest un nom valide pour cette adresse IP, mais pas celui que vous reconnaissez.

C'est une question qui n'a aucun sens avec le fonctionnement de l'adressage DNS et IP.