4

我想从 IP 地址分配的注册表中将 IP(v4)地址解析为所有者组织。为此,我不想成为whois 协议和模板或注册管理机构本身结构方面的专家。我只想要一个函数,它接受一个 IP 地址(分配在世界任何地方)并返回一个短字符串,如“IBM Corporation”。通过键入“whois nnnn”并观察结果,我会发现同样的事情。反向 DNS 不是我想要的。应该是免费软件并在 Linux 上运行。

令我难以置信的是,我找不到这个。whois 程序(在 Debian 上)和其他面向用户的前端为我提供了任何 IP 地址的结果,但采用各种原始格式。我找到了解析结果的 whois 库,但他们似乎认为我是 whois 专家并且知道哪个注册表有我的查询记录。我认为这些碎片只需要放在一起,但似乎没有人这样做。我错过了什么,还是比我想象的更容易?

作为奖励,我想维护这些查找的缓存。缓存应存储 whois 结果的网络范围,以便返回同一网络中另一个 IP 地址的命中。理想情况下,随着缓存的增长,缓存应该比线性搜索执行得更好。

目的?我会发现这对于分析服务器日志非常有帮助。如今,反向 DNS 大多没用,但我仍然想知道谁对请求负责。

4

4 回答 4

2

我想我找到了解决这个问题的更好方法。我错误地认为反向 DNS 是无用的:反向 DNS 比我知道的要多!例如,给定 IP 地址8.12.3.96,没有 PTR 记录96.3.12.8.in-addr.arpa

host -t ptr 96.32.12.8.in-addr.arpa
Host 96.32.12.8.in-addr.arpa not found: 3(NXDOMAIN)

但我刚刚了解到,您可以查询委托记录3.12.8.in-addr.arpa

host -t ns 32.12.8.in-addr.arpa 
32.12.8.in-addr.arpa name server dns1.textdrive.com.
32.12.8.in-addr.arpa name server dns2.textdrive.com.
32.12.8.in-addr.arpa name server dns3.textdrive.com.
32.12.8.in-addr.arpa name server dns4.textdrive.com.

内容丰富!我们可以查找公共后缀并将地址与textdrive.com域相关联。

我知道这一点是因为jdresolve做到了(带有--recursive选项)。它可以缓存。这似乎是一个分析网络日志的好工具,用一种巧妙和创新的方式来解决“无法解析”的 IP 地址。它完成了我试图使用 WHOIS 做的同样的事情。

于 2012-05-28T15:48:38.073 回答
1

whois 信息没有真正的固定格式。您将不得不解析数据并做出猜测。我建议寻找OrgName:, Organisation:, Organization:, 可能还有很多其他的。

如果您只是为自己的网站执行此操作,我建议您使用 Analytics 软件包为您完成此工作。Google Analytics 很棒,但不会分析您的网络服务器的日志。您将不得不使用 Web Trends 之类的东西。

于 2010-10-14T16:30:56.217 回答
1

我的服务http://ipinfo.io提供了一个 API,将公司名称作为 org 字段返回:

$ curl http://ipinfo.io/198.252.206.16
{
  "ip": "198.252.206.16",
  "hostname": "stackoverflow.com",
  "city": null,
  "region": null,
  "country": "US",
  "loc": "38.0000,-97.0000",
  "org": "AS25791 Stack Exchange, Inc."
}

您可以通过将 /org 添加到 URL 来获取该字段:

$ curl http://ipinfo.io/198.252.206.16/org
AS25791 Stack Exchange, Inc.

添加您自己的客户端缓存应该不会太棘手。您可以在http://ipinfo.io/developers找到有关 API 的更多详细信息。

于 2014-08-30T15:56:45.243 回答
0

正如布拉德在他的回答中正确指出的那样,没有标准,也没有办法为所有响应检测相同的信息。

您需要为每种响应格式创建一个解析器,这需要付出巨大的努力。

一年前,我开始了创建纯红宝石 WHOIS 客户端和解析器的项目。该库是开源的,因此请随意分叉并回馈。

目前它提供了 150 多种不同的解析器。并非所有解析器都支持组织信息,但该库具有非常灵活的 DSL,因此您可以轻松添加它。

于 2010-10-21T08:29:00.703 回答