在不解析的情況下獲取 WHOIS 數據欄位?
使用通用 GNU/Linux 發行版(例如 Fedora/Debian/Ubuntu/etc)中可用的命令行工具,有沒有一種通用的方法來獲取某些特定 WHOIS 欄位(例如註冊人的組織名稱)的值,理想情況下不必建構一個硬編碼的自定義 WHOIS 解析器來處理每個系統資料庫輸出之間的差異?
這似乎值得一問,因為
whois
命令的輸出似乎不是很一致。例如,比較:$ whois trigger.io [...] Owner OrgName : Amir Nathoo [...]
和:
$ whois facebook.com [...] Registrant Organization: Facebook, Inc. [...]
相反,我希望能夠作為參數傳遞給某些命令:
- 域名
- 所需欄位
並讓輸出只是所需欄位的值。例如,基於上面的範例,類似:
$ some_whois_command -field organization_name trigger.io Amir Nathoo $ some_whois_command -field organization_name facebook.com Facebook, Inc.
這可能嗎?
理想情況下,我希望解決方案以
whois
命令為中心,例如適當使用-i
、-q
、-t
和/或-v
,因為我想學習如何有效地使用這些選項。但是,如有必要,我會接受另一種正確的解決方案。
問題似乎至少有兩個方面:
- WHOIS 響應不共享一個通用架構,並且
- 能夠解析 WHOIS 響應並將其欄位(例如,使用合適的本體)映射到單一模式的 WHOIS 客戶端很少。Ruby Whois項目是我發現的最廣泛的工作。它的目標是為 500 多個不同的 WHOIS 伺服器中的每一個提供解析器,它的開發人員值得稱讚,但它仍在進行中。
這是一種令人遺憾的狀況。
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
.