【发布时间】:2018-06-04 20:39:15
【问题描述】:
我确实在stackoverflow上找到了这个函数,它提取了hostname、aliaslist和ipaddrlist,
但是如何创建一个函数来获取主机名并搜索与其相关联的所有网站(由它托管)?
>>> import socket
>>> def get_ips_for_host(host):
try:
ips = socket.gethostbyname_ex(host)
except socket.gaierror:
ips=[]
return ips
>>> ips = get_ips_for_host('www.slowtravelmagazine.com')
>>> print(repr(ips))
('ext-cust.squarespace.com', ['www.slowtravelmagazine.com'],
['198.185.159.144', '198.185.159.145', '198.49.23.144',
'198.49.23.145'])
【问题讨论】:
-
“与它相关的所有网站(由它托管)”到底是什么意思?通常,一个主机名,甚至一个 IP,后面会有一堆相同的 Web 服务器,它们都托管同一个站点。有时,
www.spam.com/eggs和www.spam.com/beans实际上是独立的站点(想想 github.io 或 Geocities)。http://spam.com和https://spam.com是否是同一个站点取决于 SpamCo 想要做什么。有时,具有不同域名的多个站点与虚拟服务器共享相同的 IP 地址。以此类推。 -
假设我需要所有托管在 squarespace.com 上的网站,例如 http://www.slowtravelmagazine.com/。
-
SquareSpace 宣传的一件事是,您在 SquareSpace 上托管的事实对您的客户是不可见的,包括通过
whois搜索等方式。因此,除非他们在广告中撒谎,否则您所要求的应该是不可能的。 -
请在我的查询中查看上面的代码,它将主机名显示为元组中的第一个元素。我不确定他们是否在撒谎。但在我的情况下,我想要相反,我有主机名,我需要找到与之关联的所有网站。
-
这个 (
gethostbyname_ex) 结果并不能证明什么,也不能证明你想做的事。第一个元素只是附加到 IP 的反向名称。它可以是任何东西,所以你会有误报和误报。它也不支持现在是个问题的 IPv6。如果您提供更多上下文,您的限制是什么以及您想要为哪些名称执行此操作,您可能会得到更有帮助的回复...
标签: python python-3.x sockets networking dns