Closed soyleung closed 4 years ago
i try use whois from Web, but php reporst Error: Allowed Memory Size Exhaus. so i use to do it!! more and more domain is can query,and fast,and Fat 1,Add to
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") );
2,replace function whois
function whois($addr) { $fw = Base::instance(); $cache = Cache::instance(); if ($fw->CACHE) { if ($cache->exists($addr)) { return $cache->get($addr); } } $domain_parts = explode(".", $addr); $tld = strtolower(array_pop($domain_parts)); $server = $this->WHOIS_SERVERS[$tld][0]; if(!$server) { return 'Error: No appropriate Whois server found for $domain 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])$/",$addr)) return $this->queryWhois("whois.lacnic.net",$addr); elseif(preg_match("/^([-a-z0-9]{2,100})\.([a-z\.]{2,8})$/i",$addr)) { $domain_parts = explode(".", $addr); $tld = strtolower(array_pop($domain_parts)); $server = $this->WHOIS_SERVERS[$tld][0]; if(!$server) { return "Error: No appropriate Whois server found for $addr domain!"; } $res=$this->queryWhois($server,$addr); while(preg_match_all("/Whois Server: (.*)/", $res, $matches)) { $server=array_pop($matches[1]); $res=$this->queryWhois($server,$addr); } if ($fw->CACHE) { $cache->set($addr,$res,600); } // return json_encode($res); return $res; } else return "Invalid Input"; } private function queryWhois($server,$domain) { $fp = @fsockopen($server, 43, $errno, $errstr, 20) or die("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; }
i try use whois from Web, but php reporst Error: Allowed Memory Size Exhaus. so i use to do it!! more and more domain is can query,and fast,and Fat 1,Add to
2,replace function whois