域名Whois信息查询PHP脚本类

每个顶级域名会有不同的whois服务器,比如.COM域名的服务器是whois.verisign-grs.com。如果我们需要制作域名查询WHOIS脚本的时候需要用到各个查询接口的API,下面老董整理到一份基于43种常用后缀域名的查询类,如果有需要用到的直接可以引用。

<?php
classWhois{
private$WHOIS_SERVERS= array(
"com"=>? array("whois.verisign-grs.com","whois.crsnic.net"),
"net"=>? array("whois.verisign-grs.com","whois.crsnic.net"),
"org"=>? array("whois.pir.org","whois.publicinterestregistry.net"),
"info"=>? array("whois.afilias.info","whois.afilias.net"),
"biz"=>? array("whois.neulevel.biz"),
"us"=>? array("whois.nic.us"),
"uk"=>? array("whois.nic.uk"),
"ca"=>? array("whois.cira.ca"),
"tel"=>? array("whois.nic.tel"),
"ie"=>? array("whois.iedr.ie","whois.domainregistry.ie"),
"it"=>? array("whois.nic.it"),
"li"=>? array("whois.nic.li"),
"no"=>? array("whois.norid.no"),
"cc"=>? array("whois.nic.cc"),
"eu"=>? array("whois.eu"),
"nu"=>? array("whois.nic.nu"),
"au"=>? array("whois.aunic.net","whois.ausregistry.net.au"),
"de"=>? array("whois.denic.de"),
"ws"=>? array("whois.worldsite.ws","whois.nic.ws","www.nic.ws"),
"sc"=>? array("whois2.afilias-grs.net"),
"mobi"=>? array("whois.dotmobiregistry.net"),
"pro"=>? array("whois.registrypro.pro","whois.registry.pro"),
"edu"=>? array("whois.educause.net","whois.crsnic.net"),
"tv"=>? array("whois.nic.tv","tvwhois.verisign-grs.com"),
"travel"=>? array("whois.nic.travel"),
"name"=>? array("whois.nic.name"),
"in"=>? array("whois.inregistry.net","whois.registry.in"),
"me"=>? array("whois.nic.me","whois.meregistry.net"),
"at"=>? array("whois.nic.at"),
"be"=>? array("whois.dns.be"),
"cn"=>? array("whois.cnnic.cn","whois.cnnic.net.cn"),
"asia"=>? array("whois.nic.asia"),
"ru"=>? array("whois.ripn.ru","whois.ripn.net"),
"ro"=>? array("whois.rotld.ro"),
"aero"=>? array("whois.aero"),
"fr"=>? array("whois.nic.fr"),
"se"=>? array("whois.iis.se","whois.nic-se.se","whois.nic.se"),
"nl"=>? array("whois.sidn.nl","whois.domain-registry.nl"),
"nz"=>? array("whois.srs.net.nz","whois.domainz.net.nz"),
"mx"=>? array("whois.nic.mx"),
"tw"=>? array("whois.apnic.net","whois.twnic.net.tw"),
"ch"=>? array("whois.nic.ch"),
"hk"=>? array("whois.hknic.net.hk"),
"ac"=>? array("whois.nic.ac"),
"ae"=>? array("whois.nic.ae"),
"af"=>? array("whois.nic.af"),
"ag"=>? array("whois.nic.ag"),
"al"=>? array("whois.ripe.net"),
"am"=>? array("whois.amnic.net"),
"as"=>? array("whois.nic.as"),
"az"=>? array("whois.ripe.net"),
"ba"=>? array("whois.ripe.net"),
"bg"=>? array("whois.register.bg"),
"bi"=>? array("whois.nic.bi"),
"bj"=>? array("www.nic.bj"),
"br"=>? array("whois.nic.br"),
"bt"=>? array("whois.netnames.net"),
"by"=>? array("whois.ripe.net"),
"bz"=>? array("whois.belizenic.bz"),
"cd"=>? array("whois.nic.cd"),
"ck"=>? array("whois.nic.ck"),
"cl"=>? array("nic.cl"),
"coop"=>? array("whois.nic.coop"),
"cx"=>? array("whois.nic.cx"),
"cy"=>? array("whois.ripe.net"),
"cz"=>? array("whois.nic.cz"),
"dk"=>? array("whois.dk-hostmaster.dk"),
"dm"=>? array("whois.nic.cx"),
"dz"=>? array("whois.ripe.net"),
"ee"=>? array("whois.eenet.ee"),
"eg"=>? array("whois.ripe.net"),
"es"=>? array("whois.ripe.net"),
"fi"=>? array("whois.ficora.fi"),
"fo"=>? array("whois.ripe.net"),
"gb"=>? array("whois.ripe.net"),
"ge"=>? array("whois.ripe.net"),
"gl"=>? array("whois.ripe.net"),
"gm"=>? array("whois.ripe.net"),
"gov"=>? array("whois.nic.gov"),
"gr"=>? array("whois.ripe.net"),
"gs"=>? array("whois.adamsnames.tc"),
"hm"=>? array("whois.registry.hm"),
"hn"=>? array("whois2.afilias-grs.net"),
"hr"=>? array("whois.ripe.net"),
"hu"=>? array("whois.ripe.net"),
"il"=>? array("whois.isoc.org.il"),
"int"=>? array("whois.isi.edu"),
"iq"=>? array("vrx.net"),
"ir"=>? array("whois.nic.ir"),
"is"=>? array("whois.isnic.is"),
"je"=>? array("whois.je"),
"jp"=>? array("whois.jprs.jp"),
"kg"=>? array("whois.domain.kg"),
"kr"=>? array("whois.nic.or.kr"),
"la"=>? array("whois2.afilias-grs.net"),
"lt"=>? array("whois.domreg.lt"),
"lu"=>? array("whois.restena.lu"),
"lv"=>? array("whois.nic.lv"),
"ly"=>? array("whois.lydomains.com"),
"ma"=>? array("whois.iam.net.ma"),
"mc"=>? array("whois.ripe.net"),
"md"=>? array("whois.nic.md"),
"mil"=>? array("whois.nic.mil"),
"mk"=>? array("whois.ripe.net"),
"ms"=>? array("whois.nic.ms"),
"mt"=>? array("whois.ripe.net"),
"mu"=>? array("whois.nic.mu"),
"my"=>? array("whois.mynic.net.my"),
"nf"=>? array("whois.nic.cx"),
"pl"=>? array("whois.dns.pl"),
"pr"=>? array("whois.nic.pr"),
"pt"=>? array("whois.dns.pt"),
"sa"=>? array("saudinic.net.sa"),
"sb"=>? array("whois.nic.net.sb"),
"sg"=>? array("whois.nic.net.sg"),
"sh"=>? array("whois.nic.sh"),
"si"=>? array("whois.arnes.si"),
"sk"=>? array("whois.sk-nic.sk"),
"sm"=>? array("whois.ripe.net"),
"st"=>? array("whois.nic.st"),
"su"=>? array("whois.ripn.net"),
"tc"=>? array("whois.adamsnames.tc"),
"tf"=>? array("whois.nic.tf"),
"th"=>? array("whois.thnic.net"),
"tj"=>? array("whois.nic.tj"),
"tk"=>? array("whois.nic.tk"),
"tl"=>? array("whois.domains.tl"),
"tm"=>? array("whois.nic.tm"),
"tn"=>? array("whois.ripe.net"),
"to"=>? array("whois.tonic.to"),
"tp"=>? array("whois.domains.tl"),
"tr"=>? array("whois.nic.tr"),
"ua"=>? array("whois.ripe.net"),
"uy"=>? array("nic.uy"),
"uz"=>? array("whois.cctld.uz"),
"va"=>? array("whois.ripe.net"),
"vc"=>? array("whois2.afilias-grs.net"),
"ve"=>? array("whois.nic.ve"),
"vg"=>? array("whois.adamsnames.tc"),
"yu"=>? array("whois.ripe.net")
);
publicfunctionwhoislookup($domain)
{
$domain= trim($domain); //remove space from start and end of domain
if(substr(strtolower($domain), 0, 7) == "http://") $domain= substr($domain, 7); // remove http:// ifincluded
if(substr(strtolower($domain), 0, 4) == "www.") $domain= substr($domain, 4);//remove www from domain
if(preg_match("/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/",$domain))
return$this->queryWhois("whois.lacnic.net",$domain);
elseif(preg_match("/^([-a-z0-9]{2,100})\.([a-z\.]{2,8})$/i",$domain))
{
$domain_parts= explode(".", $domain);
$tld= strtolower(array_pop($domain_parts));
$server= $this->WHOIS_SERVERS[$tld][0];
if(!$server) {
return"Error: No appropriate Whois server found for $domain domain!";
}
$res=$this->queryWhois($server,$domain);
while(preg_match_all("/Whois Server: (.*)/", $res, $matches))
{
$server=array_pop($matches[1]);
$res=$this->queryWhois($server,$domain);
}
return$res;
}
else
return"Invalid Input";
}
privatefunctionqueryWhois($server,$domain)
{
$fp= @fsockopen($server, 43, $errno, $errstr, 20) ordie("Socket Error ". $errno. " - ". $errstr);
if($server=="whois.verisign-grs.com")
$domain="=".$domain;
fputs($fp, $domain. "\r\n");
$out= "";
while(!feof($fp)){
$out.= fgets($fp);
}
fclose($fp);
return$out;
}
}
?>
把上面的脚本保存到whois.php文件中,然后我们可以用这样调用。

<?
require(“whois.php”)
$whois=new Whois;
echo $whois->whoislookup(“Your domain or IP”);
?>

具体可以根据自己的需要灵活应用到网站中。

你可能还在找下面的内容: