インターネットの歴史的な理由により、apin はネットワーク IP 全体の全体的な計画と、北米とアフリカの一部の IP 割り当て管理を担当しています。これに対応して、whois.apin.net は IP のルート サーバーです。 Whois (標準) 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 を確認します (ereg の代わりに ip2long を使用します)
2. データベースに関連する情報がない場合は、参照サーバーに問い合わせます。 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'])); GetWhois($IP);
関数 GetWhois($IP)
{ グローバル $Text;
$rootwhois = 'whois.arin.net'; ('%SERVER%', $rootwhois, $Text ['sock_connect']);
$buffer1 = ReadSocket($rootwhois,$IP)
if ($buffer1 !== '')
{
$whois = SubStrByTag("ReferralServer: whois://","n",$buffer1);
//ポート番号 ":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 = ''; )
$secondPos = strpos ($longStr,$secondTag,$firstPos);
if ($secondPos !== FALSE)
{
$firstPos = strlen($firstTag) ;
$ret = substr($longStr, $firstPos,$firstPos-$firstPos);
}
}
return $ret;
関数 ReadSocket( $whois,$ip)
{
グローバル $Text;
$buffer = '';
if (!$sock = fsockopen( $whois, 43, $errNum, $errStr, 20) )
{
}
else
{
fputs($sock) ,"$ipn");
// $buffer = fread($sock, 8192);
while(!feof($sock)) $buffer.=fgets($sock, 8192); fclose($sock);
}
return $buffer;
言語ファイル:
lang.inc.php
$Text = Array(
'ip_invalid'=>'有効な IP を取得したいのですが、[%IP%] です。',
'sock_connect' =>'%SERVER% に問い合わせます ...
',
);
他の有名な Whois サーバー
dnsstuff はクエリするものです
2. BulkRegister (whois.bulkregiter.net) 接続数が多い場合は一時的に IP をブロックするので注意してください
3.Network Solutions (whois.networksolutions.com) は 1 日 1000 回しかチェックできません
4.ゴーダディ (whois.godaddy.com)
5.whois.abuse.net