首頁 >後端開發 >php教程 >用PHP實作標準的IP Whois查詢_PHP教程

用PHP實作標準的IP Whois查詢_PHP教程

WBOY
WBOY原創
2016-07-21 16:11:561099瀏覽

      由於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.lacnic.net 拉美區拉丁美洲和加勒比海區域
      非洲網路的IP查詢也在whois.arin.net
   🎜>
   開啟一個到whois伺服器的43埠的連接,然後傳送要查詢的網域名稱和一個回車換行。如果要查詢多個域名,請用空格分開然後從sokect中讀取結果。最後伺服器將自動斷開連線。

用PHP實現

1.驗證IP(用ip2long代替ereg)

2.向whois.arin.net查詢,如果數據庫中沒有相關信息,會給出一個Referral Server的URL ,格式如下
    ReferralServer:
然後根據此信息,繼續查詢

代碼如下

whoisip.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, $rootwhois, $Text[ 'sock_connect']);
  $buffer1 = ReadSocket($rootwhois,$IP);
  if ($buffer1 !== '')
  {
://","n",$buffer1);
    //remove port number  ":43";
    if ( ($pos=strpos($whois,":")) !== FALSE)
    {
      $whois = substr($whois, 0,$pos);
    }  
 uffer .= str_replace ('%SERVER%', $whois, $Text['sock_connect']);
      $buffer .= ReadSocket($whois,$IP);
    }
 $buffer .= $buffer1;
    }
  }
  return nl2br($buffer);
}

function SubStrByTag($firstTag,$sec. >{
  $firstPos = strpos ($longStr,$firstTag);
  $ret = '';
  if ($firstPos !== FALSE)  
  {     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))
  {
  '%SERVER%', $whois, $Text['sock_fail']);
  }
  else
  {

    fputs($sock,"$ipn");   buffer = fread($sock, 8192);

    while(!feof($sock))        $buffer.=fgets($sock, 8192);
  . 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伺服器


其他有名的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

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/313798.htmlTechArticle由於Internet的歷史原因,apin負責整個網路IP的整體規劃以及北美區還有部分非洲地區的IP分配管理,與此對應的是,whois.apin.net是IP whois的...
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn