即whois命令會(huì)列出給出的域名的域名所有者的信息。
最常用的兩條命令
whois 202.102.224.68 //查詢某個(gè)IP的注冊(cè)信息
whois www.jb51.net //查詢某個(gè)域名的注冊(cè)信息
如果系統(tǒng)里沒有安裝whois 可以用以下命令安裝
一般查詢whois信息會(huì)去一些網(wǎng)站查,比如 whois.chinaz.com
[root@jb51.net tmp]# yum list |grep whois
jwhois.i386 3.2.3-8.el5 base
安裝whois:
[root@jb51.net tmp]# yum install jwhois.i386
語法
whois [參數(shù)] 查詢
whois [ -h HostName ] [ . | ! ] [ * ] Name [ . . . ]
Name [ . . . ] 參數(shù)代表用戶標(biāo)識(shí)、主機(jī)名、網(wǎng)絡(luò)地址或用于執(zhí)行目錄搜索的alias.html' target='_blank'>別名。
主要參數(shù)
. 強(qiáng)制執(zhí)行“僅按名稱”搜索,查找Name參數(shù)指定的名稱。
! 顯示在 Name 參數(shù)中指定的別名或句柄標(biāo)識(shí)的幫助信息。
* 顯示一個(gè)組或組織的完整會(huì)員資格列表。如果有很多成員,這可能要花費(fèi)一些時(shí)間。
? 向 ARPANET 主機(jī)請(qǐng)求幫助。
-h HostName 指定一個(gè)備用的主機(jī)名。在 ARPANET 上的缺省主機(jī)名是 internic.net。
通過指定 -h HostName 標(biāo)志,可以聯(lián)系其他主要的 ARPANET 用戶名數(shù)據(jù)庫(nic.ddn.mil)。
-p 連接到指定端口。
使用說明
/usr/bin/whois 命令搜索一個(gè)用戶名目錄并顯示 Name 參數(shù)指定的用戶標(biāo)識(shí)和別名的信息。whois 命令試圖到達(dá)ARPANET主機(jī) internic.net,在那里它檢查用戶名數(shù)據(jù)庫以獲取信息。whois命令應(yīng)該僅能由ARPANET上的用戶使用。
請(qǐng)參考RFC 812以獲取更完整的信息和對(duì)whois命令的最近更改。
注:如果您的網(wǎng)絡(luò)是在美國(guó)國(guó)內(nèi)網(wǎng)絡(luò)(例如 ARPANET)上,則主機(jī)名和internic.net一樣是硬編碼的。
whois 命令執(zhí)行通配符搜索,查找與任選的 …(三個(gè)句點(diǎn))之前的字符匹配的所有名稱。
實(shí)例 資料整理 www.jb51.net Linux安全網(wǎng)
# 要顯示用戶名稱為 Smith 的 ARPANET 注冊(cè)用戶的相關(guān)信息,請(qǐng)輸入
whois Smith
# 要顯示使用句柄 Hobo 的 ARPANET 注冊(cè)用戶的相關(guān)信息,請(qǐng)輸入
whois !Hobo
# 要顯示用戶名稱為 John Smith 的 ARPANET 注冊(cè)用戶的相關(guān)信息,請(qǐng)輸入
whois .Smith, John
# 要顯示用戶名稱或句柄以字母 HEN 開頭的 ARPANET 注冊(cè)用戶的相關(guān)信息,請(qǐng)輸入
whois HEN ...
# 要獲取關(guān)于 whois 命令的幫助信息,請(qǐng)輸入
whois ?
# 查詢Google域名信息
whois google.com
# 查詢gooss.org的域名信息,可以看到whois命令將域名的所有人、地址、郵箱都列出來了
whois gooss.org
下面是一些實(shí)現(xiàn)whois命令功能的網(wǎng)管類網(wǎng)站的域名查詢的系統(tǒng):
http://whois.911cha.com/linux-city.net.html
http://whois.hichina.com
http://whois.chinaz.com
http://ewhois.cnnic.cn
http://www.whois-search.com
http://www.whois.com
http://whois.domaintools.com
http://www.whois.net
http://who.is
http://www.internic.net/whois.html
http://www.nic.edu.cn/cgi-bin/reg/otherobj
http://whois.domaintools.com/china.com
http://www.101domain.com/whois-cn.php用PHP實(shí)現(xiàn)標(biāo)準(zhǔn)的IPWhois查詢
由于Internet的歷史原因,apin負(fù)責(zé)整個(gè)網(wǎng)絡(luò)IP的整體規(guī)劃以及北美區(qū) 還有部分非洲地區(qū)的IP分配管理,與此相應(yīng)的是,whois.apin.net是IP whois的root server,標(biāo)準(zhǔn)的IP whois查詢方法是,首先向whois.apin.net查詢某個(gè)IP屬于哪個(gè)大區(qū),然后再向該區(qū)的whois 服務(wù)器查詢此IP的whois詳細(xì)信息。
目前負(fù)責(zé)IPV4的大區(qū)
whois.arin.net 美洲區(qū) 北美,包含非洲地區(qū)的查詢
whois.apnic.net 亞太區(qū) 包括亞洲和澳大利亞
whois.ripe.net 歐洲區(qū) 歐洲/中東(西亞)/北非
whois.lacnic.net 拉美區(qū) 拉丁美洲和加勒比海區(qū)域向某個(gè)whois服務(wù)器提交whois查詢的過程
打開一個(gè)到whois服務(wù)器的43端口的連接,然后發(fā)送要查詢的域名 和一個(gè)回車換行。如果要查詢多個(gè)域名,請(qǐng)用空格分開然后從sokect中讀取結(jié)果。最后服務(wù)器將自動(dòng)斷開連接。
用PHP實(shí)現(xiàn)
驗(yàn)證IP(用 ip2long代替 ereg)
向whois.arin.net查詢,如果數(shù)據(jù)庫中沒有相關(guān)信息,會(huì)給出一個(gè)Referral Server的URL,格式如下
ReferralServer:xxxx然后根據(jù)此信息,繼續(xù)查詢。
whoisip.php
可以根據(jù)ip地址或域名查詢whois信息。
?php
include_once "lang.inc.php";
$IP = isset($_GET['ip'])?$_GET['ip']:'blank';
if (-1 === ip2long($ip))
die(str_replace('%IP%', $IP, $Text['ip_invalid']));
echo GetWhois($IP);
function GetWhois($IP) {
global $Text;
$rootwhois = 'whois.arin.net';
$buffer = str_replace('%SERVER%', $rootwhois, $Text['sock_connect']);
$buffer1 = ReadSocket($rootwhois,$IP);
if ($buffer1 !== '') {
$whois = SubStrByTag("ReferralServer: whois://","n",$buffer1);
//remove port number ":43";
if ( ($pos=strpos($whois,":")) !== FALSE) {
$whois = substr($whois, 0,$pos);
}
if ($whois !== '') {
$buffer .= str_replace('%SERVER%', $whois, $Text['sock_connect']);
$buffer .= ReadSocket($whois,$IP);
}else{
$buffer .= $buffer1;
}
}
return nl2br($buffer);
}
function SubStrByTag($firstTag,$secondTag,$longStr) {
$firstPos = strpos ($longStr,$firstTag);
$ret = '';
if ($firstPos !== FALSE) {
$secondPos = strpos ($longStr,$secondTag,$firstPos);
if ($secondPos !== FALSE) {
$firstPos += strlen($firstTag);
$ret = substr($longStr,$firstPos,$secondPos-$firstPos);
}
}
return $ret;
}
function ReadSocket($whois,$ip) {
global $Text;
$buffer = '';
if (!$sock = fsockopen( $whois, 43, $errNum, $errStr, 20)) {
$buffer = str_replace('%SERVER%', $whois, $Text['sock_fail']);
}else{
fputs($sock,"$ipn");
//$buffer = fread($sock, 8192);
while(!feof($sock)) $buffer.=fgets($sock, 8192);
fclose($sock);
}
return $buffer;
}
?>