Home > Backend Development > PHP Tutorial > Implementing standard IP Whois query using PHP_PHP tutorial

Implementing standard IP Whois query using PHP_PHP tutorial

WBOY
Release: 2016-07-21 16:11:56
Original
1097 people have browsed it

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 in North America and parts of Africa. Correspondingly, whois.apin.net is the root server of IP whois, which is standard The IP whois query method is to first query whois.apin.net to query which region an IP belongs to, and then query the whois server of the region for the detailed whois information of this IP.

The regions currently responsible for IPV4
whois.arin.net Americas North America
whois.apnic.net Asia Pacific includes Asia and Australia
whois.ripe.net Europe Europe/Middle East (West Asia)/North Africa
whois.lacnic.net Latin America, Latin America and the Caribbean
The IP query of the African network is also on whois.arin.net
The process of submitting a whois query to a whois server

Open a connection to port 43 of the whois server, and then send the domain name to be queried and a carriage return and line feed. If you want to query multiple domain names, separate them with spaces and read the results from sokect. Finally the server will automatically disconnect.

Using PHP to implement
1. Verify IP (use ip2long instead of ereg)
2. Query whois.arin.net. If there is no relevant information in the database, a Referral Server URL will be given , the format is as follows
ReferralServer:
Then based on this information, continue to query

The code is as follows

whoisip.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;
}

?>

Language file:
lang.inc.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

1.Tucows (whois.opensrs.net) can only have one connection at a time
dnsstuff is what you query

2.BulkRegister (whois.bulkregiter.net) Be careful because it temporarily blocks the IP , if there are a large number of connections

3.Network Solutions (whois.networksolutions.com) can only be checked 1000 times a day

4.Go Daddy (whois.godaddy.com)

5.whois.abuse.net

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/313798.htmlTechArticleDue to the historical reasons of the Internet, apin is responsible for the overall planning of the entire network IP as well as the IP in North America and some African regions. Allocation management, correspondingly, whois.apin.net is the IP whois...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template