Due to the historical reasons of the Internet, apin is responsible for the overall planning of the entire network IP and the IP allocation management of North American and some African regions. Correspondingly, it is the root server of IP whois. The standard IP whois query method is to first query which region a certain IP belongs to, and then query the whois server of the region whois for the whois details of this IP.
Currently responsible for IPV4
America North America
Asia Pacific region including Asia and Australia
European Region Europe/Middle East (West Asia)/North Africa
Latin America and the Caribbean region
The IP query of African networks is also present
The process of submitting whois query to a certain whois server
Open a connection to whois server port 43, and then send the domain name to query and a carriage return line break. If you want to query multiple domain names, separate them with spaces and read the result from sokect. Finally, the server will automatically disconnect.
Implemented with PHP
1. Verify IP (using ip2long instead of ereg)
2. Query with the query. If there is no relevant information in the database, a URL of the Referral Server will be given, the format is as follows
ReferralServer:
Then, based on this information, continue to query
The code is as follows
<?php
include_once "";
$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 = '';
$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,"$ip\n");
//$buffer = fread($sock, 8192);
while(!feof($sock)) $buffer.=fgets($sock, 8192);
fclose($sock);
}
return $buffer;
}
?>
Language File:
<?php
$Text = Array(
'ip_invalid'=>'I want to get a valid IP, but it is [%IP%].',
'sock_connect'=>'Ask %SERVER% ...
',
'sock_fail'=>'Cannot connect to the host:%SERVER%'
);
?>
Other famous whois servers
() Only one connection at a time
dnsstuff is the query
() Be careful that it temporarily blocks the IP if there are a large number of connections
Solutions () Only 1,000 checks a day
Daddy ()