Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何处理whois数据_Php_Mysql_Xml_Whois - Fatal编程技术网

Php 如何处理whois数据

Php 如何处理whois数据,php,mysql,xml,whois,Php,Mysql,Xml,Whois,我需要把whois数据放在一个表中,比如 注册人 创建日期 到期日期等 我有一个从whois服务器提取数据的脚本,但是每个域扩展的输出是不同的 例如,对于.com域,注册人详细信息以总地址的形式出现;对于.org域,注册人详细信息以注册人姓名、街道1、街道2、街道3等形式出现 所以我无法提取注册人的详细信息作为一个单元放入数据库 我听说如果我们把xml数据提取出来,有人能帮忙解决这个问题吗?谢谢 您需要检测格式并使用不同的正则表达式。或者,正如您所提到的,您可以使用XML甚至JSON API

我需要把whois数据放在一个表中,比如

  • 注册人
  • 创建日期
  • 到期日期等
我有一个从whois服务器提取数据的脚本,但是每个域扩展的输出是不同的

例如,对于
.com
域,注册人详细信息以总地址的形式出现;对于
.org
域,注册人详细信息以注册人姓名、街道1、街道2、街道3等形式出现

所以我无法提取注册人的详细信息作为一个单元放入数据库


我听说如果我们把xml数据提取出来,有人能帮忙解决这个问题吗?谢谢

您需要检测格式并使用不同的正则表达式。或者,正如您所提到的,您可以使用XML甚至JSON API

您需要检测格式并使用不同的正则表达式。或者,正如您所提到的,您可以使用XML甚至JSON API

事实上,问题远不止于此

  • 请求没有统一的语法
  • 未定义的功能集
  • 答案没有明确的方案
  • 地方立法使内容不同
  • 没有标准化错误集
  • 记录的信息质量很差
  • 你必须处理内在化
WHOIS服务由RFC3912定义。它是一个非常基本的请求协议,根本不定义应答内容的格式。因此,答案通常反映包含数据的数据库的格式,您可能会得到每个数据库的不同语法。因为WHOIS可以用于你想要的任何内容,所以你不能对你将得到的答案的格式做出很多假设。不过,希望您能够收到可解析的内容,以及每个请求的类似格式的答案

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

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

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

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

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


祝你好运

事实上,问题远不止于此

  • 请求没有统一的语法
  • 未定义的功能集
  • 答案没有明确的方案
  • 地方立法使内容不同
  • 没有标准化错误集
  • 记录的信息质量很差
  • 你必须处理内在化
WHOIS服务由RFC3912定义。它是一个非常基本的请求协议,根本不定义应答内容的格式。因此,答案通常反映包含数据的数据库的格式,您可能会得到每个数据库的不同语法。因为WHOIS可以用于你想要的任何内容,所以你不能对你将得到的答案的格式做出很多假设。不过,希望您能够收到可解析的内容,以及每个请求的类似格式的答案

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

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

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

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

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


祝你好运

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

远程服务提供的数据的格式与您已经注意到的不同。因此,您需要分离获取数据和解析数据的关注点,因为这两个方面是相互独立的。例如,一个TLD的格式可以随时间而改变

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

  • 领域
  • 谁是服务器
  • 提取操作的时间戳
  • 回应
  • 状态代码(如果协议有此代码)
然后,您可以稍后在第二个处理中进行解析。您可以使用已经存在的元数据来决定需要哪种解析算法。这也有助于您长期维护应用程序

解析正确后,您就得到了您想要的规范化格式

在这些技术处理之后,您应该注意whois服务提供的使用条件。并不是所有技术上可行的东西都能在法律上或道德上被接受。注意并尊重他人的个人记录。保护您收集的数据,例如归档和加密/锁定不再需要的数据