【问题标题】:Finding all the websites which are on a particular hostname查找位于特定主机名上的所有网站
【发布时间】:2018-06-04 20:39:15
【问题描述】:

我确实在stackoverflow上找到了这个函数,它提取了hostnamealiaslistipaddrlist, 但是如何创建一个函数来获取主机名并搜索与其相关联的所有网站(由它托管)?

>>> 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/eggswww.spam.com/beans 实际上是独立的站点(想想 github.io 或 Geocities)。 http://spam.comhttps://spam.com 是否是同一个站点取决于 SpamCo 想要做什么。有时,具有不同域名的多个站点与虚拟服务器共享相同的 IP 地址。以此类推。
  • 假设我需要所有托管在 squarespace.com 上的网站,例如 http://www.slowtravelmagazine.com/
  • SquareSpace 宣传的一件事是,您在 SquareSpace 上托管的事实对您的客户是不可见的,包括通过 whois 搜索等方式。因此,除非他们在广告中撒谎,否则您所要求的应该是不可能的。
  • 请在我的查询中查看上面的代码,它将主机名显示为元组中的第一个元素。我不确定他们是否在撒谎。但在我的情况下,我想要相反,我有主机名,我需要找到与之关联的所有网站。
  • 这个 (gethostbyname_ex) 结果并不能证明什么,也不能证明你想做的事。第一个元素只是附加到 IP 的反向名称。它可以是任何东西,所以你会有误报和误报。它也不支持现在是个问题的 IPv6。如果您提供更多上下文,您的限制是什么以及您想要为哪些名称执行此操作,您可能会得到更有帮助的回复...

标签: python python-3.x sockets networking dns


【解决方案1】:

你不能。至少没有内置功能。您需要一个包含所有网站及其相关 IP 地址的数据源。

可能有一些提供者为此提供了 API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 2013-03-22
    • 2010-10-08
    • 1970-01-01
    相关资源
    最近更新 更多