用PHP实现标准的IP Whois查询

用PHP实现标准的IP Whois查询,第1张

由于Internet的历史原因,apin负责整个网络IP的整体规划以及北美区

还有部分非洲地区的IP分配管理,与此相应的是,whois.apin.net是IP

whois的root

server,标准的IP

whois查询方法是,首先向whois.apin.net查询某个IP属于哪个大区,然后再向该区的whois

服务器查询此IP的whois详细信息

目前负责

IPV4的大区

whois.arin.net

美洲区

北美

whois.apnic.net

亚太区

包括亚洲和澳大利亚

whois.ripe.net

欧洲区

欧洲/中东(西亚)/北非

whois.lacnic.net

拉美区

拉丁美洲和加勒比海区域

非洲网络的IP查询也在whois.arin.net

向某个whois服务器提交whois查询的过程

打开一个到whois服务器的43端口的连接,然后发送要查询的域名

和一个回车换行。如果要查询多个域名,请用空格分开然后从sokect中读取结果。最后服务器将自动断开连接。

用PHP实现

1.验证IP(用

ip2long代替

ereg)

2.向

whois.arin.net查询,如果数据库中没有相关信息,会给出一个Referral

Server的URL,格式如下

ReferralServer:

然后根据此信息,继续查询

代码如下

whoisip.php

<?php

include_once

"lang.inc.php"

$IP

=

isset($_GET['ip'])?$_GET['ip']:'blank'

if

(-1

===

ip2long($ip))

die(str_replace('%IP%',

$IP,

$Text['ip_invalid']))

echo

GetWhois($IP)

function

GetWhois($IP)

{

global

$Text

$rootwhois

=

'whois.arin.net'

$buffer

=

str_replace('%SERVER%',

$rootwhois,

$Text['sock_connect'])

$buffer1

=

ReadSocket($rootwhois,$IP)

if

($buffer1

!==

'')

{

$whois

=

SubStrByTag("ReferralServer:

whois://","\n",$buffer1)

//remove

port

number

":43"

if

(

($pos=strpos($whois,":"))

!==

FALSE)

{

$whois

=

substr($whois,

0,$pos)

}

if

($whois

!==

'')

{

$buffer

.=

str_replace('%SERVER%',

$whois,

$Text['sock_connect'])

$buffer

.=

ReadSocket($whois,$IP)

}

else

{

$buffer

.=

$buffer1

}

}

return

nl2br($buffer)

}

function

SubStrByTag($firstTag,$secondTag,&$longStr)

{

$firstPos

=

strpos

($longStr,$firstTag)

$ret

=

''

if

($firstPos

!==

FALSE)

{

$secondPos

=

strpos

($longStr,$secondTag,$firstPos)

if

($secondPos

!==

FALSE)

{

$firstPos

+=

strlen($firstTag)

$ret

=

substr($longStr,$firstPos,$secondPos-$firstPos)

}

}

return

$ret

}

function

ReadSocket($whois,$ip)

{

global

$Text

$buffer

=

''

if

(!$sock

=

fsockopen(

$whois,

43,

$errNum,

$errStr,

20))

{

$buffer

=

str_replace('%SERVER%',

$whois,

$Text['sock_fail'])

}

else

{

fputs($sock,"$ip\n")

//$buffer

=

fread($sock,

8192)

while(!feof($sock))

$buffer.=fgets($sock,

8192)

fclose($sock)

}

return

$buffer

}

?>

语言文件:

lang.inc.php

<?php

$Text

=

Array(

'ip_invalid'=>'I

want

to

get

a

valid

IP,

but

it

is

[%IP%].',

'sock_connect'=>'Ask

%SERVER%

...

',

'sock_fail'=>'Cannot

connect

to

the

host:%SERVER%'

)

?>

其他有名的whois服务器

1.Tucows

(whois.opensrs.net)

一次只能一个连接

dnsstuff就是查询的它

2.BulkRegister

(whois.bulkregiter.net)

小心它临时封IP,如果大量连接的话

3.Network

Solutions

(whois.networksolutions.com)

一天只能查1000次

4.Go

Daddy

(whois.godaddy.com)

5.whois.abuse.net

简单来说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商、域名注册日期和过期日期等)。通过whois来实现对域名信息的查询。

如果你想对这个问题做进一步了解,下面是中国互联网络信息中心(CNNIC)网站上的一篇关于WHOIS的详细介绍,其中包括WHOIS概念、发展历程以及CNNIC WHOIS系统及其应用。

WHOIS概览 (作者 中国互联网络信息中心(CNNIC)技术部 王朗 )

一. WHOIS的概念

1.1什么是“WHOIS”

“WHOIS”是当前域名系统中不可或缺的一项信息服务。在使用域名进行Internet冲浪时,很多用户希望进一步了解域名、名字服务器的详细信息,这就会用到WHOIS。对于域名的注册服务机构(registrar)而言,要确认域名数据是否已经正确注册到域名注册中心(registry),也经常会用到WHOIS。直观来看,WHOIS就是链接到域名数据库的搜索引擎,一般来说是属于网络信息中心(NIC)所提供和维护的名字服务之一。

1.2 WHOIS系统组成

根据IETF标准 要求,WHOIS服务一般由WHOIS系统来提供。WHOIS系统是一个Client/Server系统。其中Client端主要负责:

1)提供访问WHOIS系统的用户接口;

2)生成查询并将其以适当的格式传送给Server;

3)接收Server传回的响应,并以用户可读的形式输出。

Server端则主要负责接收Client端的请求并发回响应数据。Internet上基于TCP协议的基本服务都有自己默认的TCP端口号,象HTTP服务的默认端口号为80,FTP服务的默认端口号为21等。同样作为Internet上核心服务之一的WHOIS服务,其Server端默认监听43号TCP端口,接收查询请求并产生响应。一般来说,Server端可以接收三种类型的信息查询:联系人、主机和域名。对于同一查询,Server端的输出应该具有一致性和稳定性。

1.3 WHOIS工作过程

WHOIS服务是一个在线的“请求/响应”式服务。WHOIS Server运行在后台监听43端口,当Internet用户搜索一个域名(或主机、联系人等其他信息)时,WHOIS Server首先建立一个与Client的TCP连接,然后接收用户请求的信息并据此查询后台域名数据库。如果数据库中存在相应的记录,它会将相关信息如所有者、管理信息以及技术联络信息等,反馈给Client。待Server输出结束,Client关闭连接,至此,一个查询过程结束。

二. WHOIS的历史及其发展

域名系统理论的建立和应用对于Internet而言具有里程碑式的意义,因而早在ARPANet时代,域名信息就备受网络用户的关注。位于美国加州Menlo Park的斯坦福研究院(Stanford Research Institute,SRI)在20世纪80年代初行使着DDN网络信息中心(Network Information Center,NIC)的职责,在这里工作的Ken Harrenstien和Vic White等人敏感地意识到提供已注册域名信息的查询对于NIC而言是一项非常重要的工作,于是便开始着手建立WHOIS系统,并将其工作成果提交给IETF 。经过Ken Harrenstien等人的改进和修改,NICNAME/WHOIS理论得以进一步完善,成为Internet上的标准服务之一 。其中,NICNAME是WHOIS服务在TENEX, TOPS-20和一部分UNIX系统上的叫法。因为ARPANet上主机数目有限,此时的WHOIS服务主要通过位于SRI的中央数据库来维护。

这以后几乎所有的UNIX版本都将WHOIS作为TCP/IP协议栈中的上层应用协议,并实现了著名的客户端程序whois。在绝大多数UNIX和类UNIX系统中键入man 1 whois,都会得到whois客户端程序的使用帮助。同样,用户只要telnet到运行WHOIS Server的43端口,敲入所需查询的信息,也能得到相应的信息反馈。

随着Internet的急速膨胀,人们意识到集中式的WHOIS Server越来越不能够满足网络用户的需求,于是分布式就成了WHOIS Server的主要发展方向。“Referral WHOIS”(简称为RWhois) 就是这个方向上的研究成果,其主要思路是利用分布式的数据库来维护众多的域名、主机等信息,用referral来指示client经由网络上的多个的Server最后连到所查询信息的权威WHOIS Server。另一方面,IETF成立了Whois and Network Information Lookup Service Working Group(WNILS)来研究将本地WHOIS服务进行扩展和标准化,并称之为WHOIS++ 。

计算机和网络通信技术在不断发展,WHOIS系统新的功能也在不断增加。比如多语言功能,支持更多的字符集,结构化数据,更强劲的表达式搜索,更安全的数据连接,更友好的用户界面等等。上世纪90年代以来,Web应用迅速普及,通过Web系统进行域名信息的查询已经成为主流趋势,各级域名注册管理机构都实现了其基于Web的WHOIS系统,Client端多以网页为主的形式提供。如InterNIC的WHOIS主页:

http://www.internic.net/whois.html。这样的界面对于普通Internet用户而言更加友好直观,清晰易读。

三. CNNIC WHOIS

3.1 CNNIC WHOIS系统

中国互联网络信息中心(China Internet Network Information Center ,简称CNNIC)是经我国国务院主管部门批准授权,行使我国国家互联网络信息中心职责的管理和服务机构。作为我国的域名体系注册管理机构,CNNIC也提供了所辖范围内域名信息查询的WHOIS服务。

当前,能注册在CNNIC域名数据库中的域名有三种:

1)CN域名:以.cn结尾的二级域名和三级域名(edu.cn除外),如cnnic.cn、sina.com.cn等;

2)中文域名:至少含有一个中文文字,由中文、字母(A-Z,a-z,大小写等价)、数字(0-9)或符号(-)和域名层次分隔符“.”(或者中文的“。”)组成,最多不超过20个字符的字符串,如中国互联网络信息中心.网络、人民日报.中国、新浪.公司等;

3)通用网址:由中文、字母(A-Z,a-z,大小写等价)、数字(0-9)或符号(-)组成,最多不超过31个字符的字符串,并且不含域名分隔符“.”,如:中国互联网络信息中心、CNNIC等。

相应的,CNNIC WHOIS服务也由三个系统构成:

1).cn域名 WHOIS系统(http://ewhois.cnnic.cn);

2)中文域名WHOIS系统(http://cwhois.cnnic.cn);

3)通用网址WHOIS系统(http://seal.cnnic.cn)。

当前我国有的注册服务机构也提供WHOIS服务,但对于注册在CNNIC的域名等信息,这些注册服务机构的信息来源最终还是CNNIC的WHOIS系统。所以,CNNIC的WHOIS在所辖域内是最权威的。

3.2 CNNIC WHOIS的使用

3.2.1 .cn域名WHOIS查询

使用这个WHOIS系统,Internet用户可以查询除.edu.cn 之外所有注册在CNNIC域名数据库中以.cn结尾的英文域名。只要在“域名查询”栏中输入以.cn结尾的英文域名字符串,然后回车,即可得到查询结果。

如果查询的域名不在CNNIC域名数据库中,比如错误键入了.com或.net等结尾的域名,系统将会显示“你所查询的信息不属于本注册机构”。对于涉及到著名企业的单位名称、驰名商标等的域名,CNNIC会进行保护性预留,查询这类域名系统会声明“经主管部门批准您申请的域名已经被列入限制注册名单”。如果所查询的域名还没有注册,或者域名因为不同的理由被CNNIC禁止查询,系统会显示“你所查询的信息不存在”。

同时,按照惯例,该系统还提供注册在CNNIC域名数据库中的联系人信息和主机信息查询,只要在“联系人查询”或“主机查询”栏中输入主机的域名或联系人号,然后回车,系统会返回相应信息。若输入有误,系统会提示“你所查询的信息不存在”。

3.2.2 中文域名WHOIS查询

使用这个系统,Internet用户可以查询注册在CNNIC域名数据库中的中文域名,域名后缀目前可以是“.cn”、“.中国”、“.公司”和“.网络”四者之一。如果域名分隔符“.”不小心输成了中文句号“。”,系统会进行自动更正并返回正确的查询信息。一般来说,输入简体的中文域名,系统会将相应的简繁体的中文域名信息都显示到客户端。

CNNIC对于诸如著名企业的单位名称、驰名商标、地理名称等的中文域名,如“北京.公司”,也会给予保护性预留。查询此类域名系统会说明:“该中文域名已由中国互联网络信息中心预留”。如果查询的域名不在CNNIC数据库中,系统会显示“此域名没有被注册”。如果系统称“此域名不存在”,则有可能是因为所查询的域名因为某种原因被禁止注册。 Internet用户也可以利用该系统进行联系人和主机信息的查询。

3.2.3 通用网址WHOIS查询

使用这个系统,Internet用户可以查询注册在CNNIC域名数据库中的通用网址相关信息。

若要查询CNNIC进行了保护性预留的通用网址,系统会通知“您查询的通用网址限制注册”;对于禁止注册的通用网址,系统则会显示“您所查询的通用网址不存在”。如果系统声明“您查询的通用网址/联系人目前没有被注册”,则说明可以向相应的注册服务机构申请注册该通用网址。

使用该系统Internet用户也可以查询到相关的联系人信息。只需键入所需查询的联系人姓名或联系人号,在其后的下拉列表中选择联系人所属的注册服务机构,回车,系统就会返回相应信息。如果不清楚联系人属于哪个注册服务机构,也可以保持下拉列表为“全部”,系统会返回所有与输入相符的联系人信息。

综上,CNNIC的WHOIS系统能够在所管理的范围内,提供清晰易读的域名信息。同时CNNIC也在积极进取,不断完善WHOIS系统,努力为广大Internet用户和域名注册服务机构提供更加方便、准确、快捷的域名信息查询服务

PHP集成开发环境,有Zend Studio、Eclipse for PHP、PhpStorm等。

1、Zend Studio

Zend Studio是Zend Technologies公司开发的PHP语言集成开发环境(IDE)。除了有强大的PHP开发支持外也支持HTML、js、CSS,但只对PHP语言提供调试支持。

2、EclipsePHP Studio

EclipsePHP是一个大型PHP项目开发编译器,基于Eclipse底层开发而来,并且集成了JDK,免除了安装配置的麻烦,一次安装即可使用,无需配置。

此编译器为PHP编译器,辅助PHP代码的开发和调试,集成了代码高亮,函数跟踪,实时纠错等功能。同时还增加了协作开发版本服务器功能:SVN 、 CVS 。 内嵌浏览器可以在调试简单代码实时浏览。

3、PhpStorm

PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。

扩展资料

php的特点

一、开源性和免费性

由于PHP的解释器的源代码是公开的,所以安全系数较高的网站可以自己更改PHP的解释程序。另外,PHP 运行环境的使用也是免费的。

二、快捷性

PHP是一种非常容易学习和使用的一门语言,它的语法特点类似于C语言,但又没有C语言复杂的地址 *** 作,而且又加入了面向对象的概念,再加上它具有简洁的语法规则,使得它 *** 作编辑非常简单,实用性很强。

三、数据库连接的广泛性

PHP可以与很多主流的数据库建立起连接,如MySQL、ODBC、Oracle等,PHP是利用编译的不同函数与这些数据库建立起连接的,PHPLIB就是常用的为一般事务提供的基库。

四、面向过程和面向对象并用

在PHP语言的使用中,可以分别使用面向过程和面向对象, 而且可以将PHP面向过程和面向对象两者一起混用,这是其它很多编程语言是做不到的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7905007.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存