簡體   English   中英

如何僅從 IP 地址獲取域名以進行 whois 查找?

[英]How to get domain name only from an IP address for whois lookup?

我正在嘗試在任意 IP 地址上運行 who-is 命令供我內部使用(無公共訪問),如下所示:

function echo_whois($ip)
{
    $host = gethostbyaddr($ip);

    //How to get domain from host?
    //$domain = ?

    echo("<pre>");
    echo(shell_exec("whois ".$domain));
    echo("</pre>");
}

問題是我似乎找不到從host name獲取domain name的方法。

這是一個例子,假設 IP 114.237.31.186解析為186.31.237.114.broad.lyg.js.dynamic.163data.com.cn

PHP中有沒有可以做到這一點的函數?

問題是我似乎找不到從主機名中獲取域名的方法。

因為沒有或者你在沖突各種事情。

在 DNS 級別,您可能擁有從一個 IP 地址到名稱的PTR記錄。 然而,這根本不是強制性的。 有關更多詳細信息,請參閱我的完整答案https://superuser.com/a/1530362/693623

如果我們對您的情況這樣做,我們確實有答案,但這不是通用規則:

$ dig -x 114.237.31.186

; <<>> DiG 9.11.5-P4-5.1ubuntu2.1-Ubuntu <<>> -x 114.237.31.186
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40422
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1480
;; QUESTION SECTION:
;186.31.237.114.in-addr.arpa.   IN  PTR

;; ANSWER SECTION:
186.31.237.114.in-addr.arpa. 86400 IN   PTR 186.31.237.114.broad.lyg.js.dynamic.163data.com.cn.

這純粹是 DNS,沒有關於 whois 的內容。 並且您擁有 PHP(或任何其他語言)的 DNS 庫,可以代表您進行 DNS 查詢(不要出於與下面詳述的 whois 相同的原因而運行 dig)。

現在,既然您在談論 whois,您可能會考慮其他事情。

由於 IP 地址(更准確地說是 IP 塊)是在一些稱為 RIR 的中央注冊機構注冊的,並且由於這些注冊機構擁有 whois 服務器,您確實可以向它們查詢 IP 地址。 但是,輸出不會是域名,而是有關擁有該 IP 地址的公司的詳細信息。

現代 whois 客戶通常會正確找到要聯系的 RIR 以獲取數據,在您的情況下,這將導致:

$ whois 114.237.31.186
% [whois.apnic.net]
% Whois data copyright terms    http://www.apnic.net/db/dbcopyright.html

% Information related to '114.224.0.0 - 114.239.255.255'

% Abuse contact for '114.224.0.0 - 114.239.255.255' is 'anti-spam@ns.chinanet.cn.net'

inetnum:        114.224.0.0 - 114.239.255.255
netname:        CHINANET-JS
descr:          Chinanet Jiangsu Province Network
descr:          China Telecom
descr:          No.31,jingrong street
descr:          Beijing 100032
country:        CN
admin-c:        CH93-AP
tech-c:         CJ186-AP
mnt-by:         APNIC-HM
mnt-lower:      MAINT-CHINANET-JS
mnt-routes:     MAINT-CHINANET-JS
status:         ALLOCATED PORTABLE
remarks:        --------------------------------------------------------
remarks:        To report network abuse, please contact mnt-irt
remarks:        For troubleshooting, please contact tech-c and admin-c
remarks:        Report invalid contact via www.apnic.net/invalidcontact
remarks:        --------------------------------------------------------
last-modified:  2016-05-04T00:13:17Z
source:         APNIC

等等。

您可以使用 RIR 網站在網上找到明顯相同的內容。

至於 whois 其他兩個相關的重要事項:

  • 從程序中,不要發出 whois 命令,這只有缺點。 所有編程語言都有執行 whois 查詢的庫,您應該使用它。 如果沒有,至少因為 whois 是一個非常簡單的命令/回復協議,您可以自己完成:只需在端口 43 上打開一個 TCP 套接字,發送您的查詢(通常是域名或 IP 地址),然后是\\r\\n並閱讀回復(此時遠程方將自動關閉連接)。 當然,這里的困難在於找出要聯系的服務器,這取決於您的查詢
  • 特別是對於 RIR,現在有 RDAP,它是一種比 whois 優越得多的協議,您應該始終嘗試使用它; 它的輸出是 JSON,比原始的非結構化 whois 輸出更容易解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM