PHP whois查询类定义与用法示例


Posted in PHP onApril 03, 2019

本文实例讲述了PHP whois查询类定义与用法。分享给大家供大家参考,具体如下:

whois.class.php

<?php
class Whois{
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")
);
public function whoislookup($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:// if included
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";
}
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;
}
}
?>

调用的方式

<?php
require("whois.class.php");
$whois=new Whois;
echo $whois->whoislookup("3water.com");
?>

运行结果:

Domain Name: JB51.NET Registry Domain ID: 527217184_DOMAIN_NET-VRSN Registrar WHOIS Server: whois.godaddy.com Registrar URL: http://www.godaddy.com Updated Date: 2016-05-26T08:17:44Z Creation Date: 2006-07-22T03:11:39Z Registry Expiry Date: 2024-07-22T03:11:39Z Registrar: GoDaddy.com, LLC Registrar IANA ID: 146 Registrar Abuse Contact Email: abuse@godaddy.com Registrar Abuse Contact Phone: 480-624-2505 Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited Name Server: NS1.DNSV2.COM Name Server: NS2.DNSV2.COM DNSSEC: unsigned URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/ >>> Last update of whois database: 2019-04-03T03:32:17Z <<< For more information on Whois status codes, please visit https://icann.org/epp NOTICE: The expiration date displayed in this record is the date the registrar's sponsorship of the domain name registration in the registry is currently set to expire. This date does not necessarily reflect the expiration date of the domain name registrant's agreement with the sponsoring registrar. Users may consult the sponsoring registrar's Whois database to view the registrar's reported date of expiration for this registration. TERMS OF USE: You are not authorized to access or query our Whois database through the use of electronic processes that are high-volume and automated except as reasonably necessary to register domain names or modify existing registrations; the Data in VeriSign Global Registry Services' ("VeriSign") Whois database is provided by VeriSign for information purposes only, and to assist persons in obtaining information about or related to a domain name registration record. VeriSign does not guarantee its accuracy. By submitting a Whois query, you agree to abide by the following terms of use: You agree that you may use this Data only for lawful purposes and that under no circumstances will you use this Data to: (1) allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations via e-mail, telephone, or facsimile; or (2) enable high volume, automated, electronic processes that apply to VeriSign (or its computer systems). The compilation, repackaging, dissemination or other use of this Data is expressly prohibited without the prior written consent of VeriSign. You agree not to use electronic processes that are automated and high-volume to access or query the Whois database except as reasonably necessary to register domain names or modify existing registrations. VeriSign reserves the right to restrict your access to the Whois database in its sole discretion to ensure operational stability. VeriSign may restrict or terminate your access to the Whois database for failure to abide by these terms of use. VeriSign reserves the right to modify these terms at any time. The Registry database contains ONLY .COM, .NET, .EDU domains and Registrars.

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
杏林同学录(八)
Oct 09 PHP
php 无极分类(递归)实现代码
Jan 05 PHP
php Smarty 字符比较代码
Feb 27 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
Yii操作数据库的3种方法
Mar 11 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
Dec 24 PHP
php中curl使用指南
Feb 05 PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
May 09 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
Ajax+PHP实现的删除数据功能示例
Feb 12 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
Oct 02 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 #PHP
PHP反射实际应用示例
Apr 03 #PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 #PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
Apr 03 #PHP
PHP快速排序算法实现的原理及代码详解
Apr 03 #PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 #PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 02 #PHP
You might like
深入PHP许愿墙模块功能分析
2013/06/25 PHP
PHP删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
php删除指定目录的方法
2015/04/03 PHP
JavaScript效率调优经验
2009/06/04 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
深入理解Vue router的部分高级用法
2018/08/15 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
Python实现文件按照日期命名的方法
2015/07/09 Python
Python之re操作方法(详解)
2017/06/14 Python
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
市场营销专业毕业生自荐信
2013/11/02 职场文书
大二学生学习个人自我评价
2014/01/19 职场文书
中学家长会邀请函
2014/02/03 职场文书
就业协议书怎么填
2014/04/11 职场文书
大学生应聘求职信
2014/05/26 职场文书
村创先争优活动总结
2014/08/28 职场文书
员工工作表现自我评价
2015/03/06 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
离职信范本
2015/06/23 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript