因為互聯網發展的歷史緣由,ARIN(美國互聯網號碼註冊機構)負責全球 IP 地址的整體規劃,並直接管理北美及部分非洲地區的 IP 分配。與此對應,whois.arin.net 是 IP Whois 查詢的根服務器。標準查詢流程分為兩步:首先向根服務器查詢目標 IP 所屬的區域註冊機構(RIR),再向該機構的 Whois 服務器獲取詳細信息。
目前 IPv4 地址由五大 RIR 管理:
whois.arin.net):北美、部分非洲whois.apnic.net):亞太地區(含亞洲、澳洲)whois.ripe.net):歐洲、中東、北非whois.lacnic.net):拉丁美洲及加勒比海查詢過程基於 TCP 43 端口:
\r\n 結尾以下實現包含 IP 格式驗證、根服務器查詢、Referral 追蹤及結果輸出:
<?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']);
$response = ReadSocket($rootWhois, $ip);
if ($response !== '') {
$referral = SubStrByTag("ReferralServer: whois://", "\n", $response);
// 移除端口號 :43
if (($pos = strpos($referral, ":")) !== false) {
$referral = substr($referral, 0, $pos);
}
if ($referral !== '') {
$buffer .= str_replace('%SERVER%', $referral, $Text['sock_connect']);
$buffer .= ReadSocket($referral, $ip);
} else {
$buffer .= $response;
}
}
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, "$ip\n");
while (!feof($sock)) {
$buffer .= fgets($sock, 8192);
}
fclose($sock);
}
return $buffer;
}
?>
<?php
$Text = array(
'ip_invalid' => '請輸入有效 IP,當前輸入:[%IP%]',
'sock_connect' => '正在連接 %SERVER% ... <br>',
'sock_fail' => '無法連接到主機:%SERVER%'
);
?>
whois.opensrs.net):單連接限制,DNSStuff 即使用此服務whois.bulkregister.net):大量查詢易被暫時封禁 IPwhois.networksolutions.com):日限額 1000 次whois.godaddy.com)whois.abuse.net):專注濫用投訴查詢