当前位置:七道奇文章资讯网站建设网站编程
日期:2010-10-19 11:56:00  来源:本站整理

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

  1. include_once "lang.inc.php"; 
  2.  
  3. $IP = isset($_GET['ip'])?$_GET['ip']:'blank'; 
  4. if (-1 === ip2long($ip)) 
  5. die(str_replace('%IP%', $IP, $Text['ip_invalid'])); 
  6.  
  7. echo GetWhois($IP); 
  8.  
  9. function GetWhois($IP) 
  10. global $Text; 
  11. $rootwhois = 'whois.arin.net'
  12. $buffer = str_replace('%SERVER%', $rootwhois, $Text['sock_connect']); 
  13. $buffer1 = ReadSocket($rootwhois,$IP); 
  14. if ($buffer1 !== '') 
  15. $whois = SubStrByTag("ReferralServer: whois://"," ",$buffer1); 
  16. //remove port number ":43"; 
  17. if ( ($pos=strpos($whois,":")) !== FALSE) 
  18. $whois = substr($whois, 0,$pos); 
  19. if ($whois !== '') 
  20. $buffer .str_replace('%SERVER%', $whois, $Text['sock_connect']); 
  21. $buffer .ReadSocket($whois,$IP); 
  22. else 
  23. $buffer .= $buffer1; 
  24. return nl2br($buffer); 
  25.  
  26. function SubStrByTag($firstTag,$secondTag,&$longStr) 
  27. $firstPos = strpos ($longStr,$firstTag); 
  28. $ret = ''
  29. if ($firstPos !== FALSE) 
  30. $secondPos = strpos ($longStr,$secondTag,$firstPos); 
  31. if ($secondPos !== FALSE) 
  32. $firstPos += strlen($firstTag); 
  33. $ret = substr($longStr,$firstPos,$secondPos-$firstPos); 
  34. return $ret; 
  35.  
  36. function ReadSocket($whois,$ip) 
  37. global $Text; 
  38. $buffer = ''
  39. if (!$sock = fsockopen( $whois, 43, $errNum, $errStr, 20)) 
  40. $buffer = str_replace('%SERVER%', $whois, $Text['sock_fail']); 
  41. else 
  42. fputs($sock,"$ip "); 
  43. //$buffer = fread($sock, 8192); 
  44. while(!feof($sock)) $buffer.=fgets($sock, 8192); 
  45. fclose($sock); 
  46. return $buffer; 
  47.  
  48. ?>  

语言文件:
lang.inc.php

  1. $Text = Array
  2. 'ip_invalid'=>'I want to get a valid IP, but it is [%IP%].', 
  3. 'sock_connect'=>'Ask %SERVER% ... 
  4. ', 
  5. 'sock_fail'=>'Cannot connect to the host:%SERVER%' 
  6. ); 
  7.  
  8. ?>  

其他闻名的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查询[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>用PHP实现XML备份Mysql数据库</b>
  • php实现文件数据缓存实现
  • PHP实现尺度的IP Whois查询
  • php实现当前在线人数统计
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .