PHP实现尺度的IP Whois查询[网站编程]
本文“PHP实现尺度的IP Whois查询[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
由于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
- 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://"," ",$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 ");
- //$buffer = fread($sock, 8192);
- while(!feof($sock)) $buffer.=fgets($sock, 8192);
- fclose($sock);
- }
- return $buffer;
- }
- ?>
语言文件:
lang.inc.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
以上是“PHP实现尺度的IP Whois查询[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |