php获取ip地址所属whois信息

发布时间:2019-11-06编辑:脚本学堂
php获取指定IP地址的whois数据,获取指定域名对应的whois信息,老外写的经典代码,值得学习借鉴下。

代码:
 

复制代码 代码示例:
<?php
$ip = "74.65.112.23";
$whois = get_whois($ip);
echo "<pre>$whois</pre>";
/**
Get the whois content of an ip by selecting the correct server
*/ www.jb200.com
function get_whois($ip)
{
$w = get_whois_from_server('whois.iana.org' , $ip);
preg_match('@whois.[w.]*@si' , $w , $data);
$whois_server = $data[0];
//echo $whois_server;
//now get actual whois data
$whois_data = get_whois_from_server($whois_server , $ip);
return $whois_data;
}
/**
Get the whois result from a whois server
return text
*/
function get_whois_from_server($server , $ip)
{
$data = '';
#Before connecting lets check whether server alive or not
#Create the socket and connect
$f = fsockopen($server, 43, $errno, $errstr, 3);//Open a new connection
if(!$f)
{
return '';
}
#Set the timeout limit for read
if(!stream_set_timeout($f , 3))
{
die('Unable to set set_timeout');   #Did this solve the problem ?
}
#Send the IP to the whois server
if($f)
{
fputs($f, "$iprn");
}
/*
Theory : stream_set_timeout must be set after a write and before a read for it to take effect on the read operation
If it is set before the write then it will have no effect : http://in.php.net/stream_set_timeout
*/
//Set the timeout limit for read
if(!stream_set_timeout($f , 3))
{
die('Unable to stream_set_timeout');#Did this solve the problem ?
}
//Set socket in non-blocking mode
stream_set_blocking ($f, 0 );
//If connection still valid
if($f)
{
while (!feof($f))
{
$data .= fread($f , 128);
}
}
//Now return the data
return $data;
}

您可能感兴趣的文章: