0

我需要把 whois 数据放在一个像这样的表中

  • 注册人,
  • 创建日期,
  • 到期日等

我有从 whois 服务器中提取数据的脚本,但是每个域扩展的输出都不同。

例如,对于.com域,注册人详细信息以总地址的形式出现,对于.org域,它以注册人名称、street1、street2、street3 等形式出现。

所以我无法将注册人详细信息作为一个单元提取到数据库中。

有些地方我听说如果我们得到 xml 数据,我们可以提取它,有人可以帮助解决这个问题吗?谢谢!。

4

3 回答 3

5

其实问题远不止于此。

  • 请求没有统一的语法
  • 也没有定义一组能力
  • 没有明确的答案方案
  • 地方立法使内容不同
  • 没有标准化错误集
  • 记录信息质量差
  • 你必须处理内化

WHOIS 服务由 RFC3912 定义。它是一个非常基本的请求协议,根本没有定义应答内容的格式。因此,答案通常反映了包含数据的数据库的格式,并且您可能会为每个数据库获得不同的语法。由于 WHOIS 可用于您想要的任何内容,因此您不能对您将获得的答案格式做出太多假设。但是,希望您可以期望收到可解析的内容,以及每个请求的类似格式的答案。

因此,您需要为每个服务器开发一个解析逻辑,您必须以非常经验的方式进行。

然而,这里有一些来自 RFC 的开发技巧。

  • 您需要使用 TCP 端口 43 发送请求,单行以 CR+LF ASCII 字符结尾

  • 您必须期望 TCP 连接结束仅意味着答案已完成。

特别是关于域名,您可能需要注意,以前对 ASCII 编码的限制使一些注册人使用 Punycode 对 DNS 系统中的一些(通过示例强调)字符串进行编码,因此您可能希望能够在 Whois 答案中期待这些如果你遇到一些回复。自 2003 年以来国际化域名的存在将要求您支持 unicode 编码。转换名称的算法很复杂,RFC 3490 应该为您提供一些有用的细节。

祝你好运 !

于 2012-06-28T08:56:33.673 回答
1

您需要检测格式并为它们使用不同的正则表达式。或者,正如您提到的,您可以使用 XML 甚至 JSON API http://whoisxmlapi.com/ http://www.domaintools.com/api/docs/

于 2011-05-06T11:41:06.117 回答
0

您需要扩展数据库和处理以更好地处理问题。

正如您已经注意到的,远程服务提供的数据采用不同的格式。所以你需要将获取数据和解析数据的关注点分开,因为这两件事是相互独立的。例如,一个 TLD 的格式会随着时间而改变。

因此,首先您获取每个域的纯文本数据并将其存储为元数据:

  • 领域
  • whois 服务器
  • 获取操作的时间戳
  • 回复
  • 状态码(如果协议有这个)

然后,您可以稍后在第二个处理中进行解析。您可以使用已经存在的元数据来决定您需要哪种解析算法。这也有助于您随着时间的推移维护您的应用程序。

解析正确后,您就获得了您想要的标准化格式。

除了这些技术处理之外,您还应该注意 whois 服务提供的使用条件。并非所有技术上可行的,在法律上或道德上都被接受。以应有的尊重照顾和对待他人的个人记录。保护您收集的数据,例如存档和加扰/锁定您不再需要的数据以进行持续处理。

另见:

于 2012-06-28T10:11:13.857 回答