无需解析即可获取 WHOIS 数据字段?

6 linux command-line gnu whois

使用通用 GNU/Linux 发行版(例如 Fedora/Debian/Ubuntu/等)中提供的命令行工具,是否有一种通用的方法来获取某些特定 WHOIS 字段(例如注册人的组织名称)的值,理想情况下无需构建一个硬编码的自定义 WHOIS 解析器来处理每个注册表输出之间的差异?

这似乎值得一问,因为whois命令的输出似乎不太一致。例如,比较:

$ whois trigger.io

[...]

Owner OrgName : Amir Nathoo

[...]
Run Code Online (Sandbox Code Playgroud)

和:

$ whois facebook.com

[...]

Registrant Organization: Facebook, Inc.

[...]
Run Code Online (Sandbox Code Playgroud)

相反,我希望能够作为参数传递给某些命令:

  • 域名
  • 所需的字段

并让输出只是所需字段的值。例如,基于上面的例子,类似于:

$ some_whois_command -field organization_name trigger.io
Amir Nathoo

$ some_whois_command -field organization_name facebook.com
Facebook, Inc.
Run Code Online (Sandbox Code Playgroud)

这可能吗?

理想情况下,我想解决中心在whois与一些适合使用的命令,例如-i-q-t,和/或-v,因为我想学习如何有效地使用这些选项。但是,如有必要,我会接受另一个正确的解决方案。

小智 5

问题似乎至少有两个方面:

这是令人遗憾的事态。

IETF针对此问题和其他 WHOIS 问题提出解决方案称为注册数据访问协议 (RDAP)

引用RFC 7485,它解释了 RDAP 的基本原理:

在本文件发布时,域名空间中已有 200 多个国家代码
顶级域名 (ccTLD) 和 400 多个通用顶级域名(gTLD)。
不同的域名
注册管理机构可能有不同的 WHOIS 响应对象和格式。
对所有这些数据格式的共同理解对于 为每个对象构建单一数据模型
至关重要。

(强调我的。)

遗憾的是,尽管大多数(全部?)TLD 注册管理机构为其子域提供 WHOIS 服务器,但迄今为止,只有两个TLD 注册管理机构正式为其子域部署 RDAP 服务器:CZNIC(针对 .cz 域)和 NIC Argentina(针对 .ar 域)。因此,这(还)不是广泛适用的 TLD 解决方案。我们只能希望所有其他注册管理机构能够尽快部署 RDAP 服务器。

至于软件,迄今为止我发现的唯一适用于 POSIX 系统的 RDAP 命令行客户端是nicinfo.