如何处理whois数据

时间:2011-05-06 11:35:55

标签: php mysql xml whois

我需要将whois数据放在像

这样的表中
  • 注册,
  • 创建日期,
  • 到期日等。

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

例如,对于.com个域名,注册人详细信息作为总地址,.org个域名称为注册人名称,street1,street2,street3等。

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

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

3 个答案:

答案 0 :(得分:5)

实际上这个问题远大于此。

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

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

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

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

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

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

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

祝你好运!

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

远程服务提供的数据采用不同的格式,如您所述。因此,您需要分离获取数据和解析数据的问题,因为这两者之间是相互独立的。例如,一个TLD的格式可以随时间改变

首先,您要获取每个域的纯文本数据并存储它的元数据:

  • whois服务器
  • 获取操作的时间戳
  • 响应
  • 状态代码(如果协议有此)

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

解析后,你得到了标准化的格式,这就是你的目标。

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

参见: