分享一段代码,可用于查询指定域名服务器的域信息,即whois信息查询。
Whois协议(由RFC3912定义)可能是最简单的互联网协议之一。
事实上,whois客户端需要打开TCP连接到端口43,发送查询,发送CR-LF(“ R N”不变),然后接收响应。
代码:
<?php
/**
* whois信息查询
* by www.jb200.com
*/
function ae_whois($query, $server)
{
define('AE_WHOIS_TIMEOUT', 15); // connection timeout
global $ae_whois_errno, $ae_whois_errstr;
// connecting
$f = fsockopen($server, 43, $ae_whois_errno, $ae_whois_errstr, AE_WHOIS_TIMEOUT);
if (!$f)
return false; // connection failed
// sending query
fwrite($f, $query."rn");
// receving response
$response = '';
while (!feof($f))
$response .= fgets($f, 1024);
// closing connection
fclose($f);
return $response;
}
?>
以上代码,实现了一个whois查询函数,包括两个参数$query(whois查询信息)、$server(域名服务器)。
该函数返回服务器的响应信息,失败则返回false。
fsockopen错误代码与错误消息,将写入到全局变量$ae_whois_errno与$ae_whois_errstr中。
大家可以更改常量AE_WHOIS_TIMEOUT来设置查询超时时间。
例子,用于获取域名jb200.com的域名服务器信息。
代码: