インターネットの歴史的な理由により、apin はネットワーク IP 全体の全体的な計画と、北米とアフリカの一部の IP 割り当て管理を担当しています。これに対応して、whois.apin.net は IP Whois のルート サーバーです。 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. whois.arin.net にクエリを実行します。データベースに関連情報がない場合は、紹介サーバーの URL が次の形式で提供されます
紹介サーバー:
次に、この情報に基づいてクエリを続けます
コードは次のとおりです
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)
{
グローバル $Text
$rootwhois = 'whois.arin.net';
$buffer = str_replace('%SERVER%', $rootwhois, $Text['sock_connect']);
$buffer1 = ReadSocket($rootwhois,$IP);
if ($buffer1 !== '')
{
$whois = SubStrByTag("参照サーバー: whois://"," ",$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);
}
それ以外は
{
$buffer .= $buffer1
;
}
}
nl2br($buffer) を返します。
}
関数 SubStrByTag($firstTag,$secondTag,&$longStr)
{
$firstPos = strpos ($longStr,$firstTag);
$ret = '';
if ($firstPos !== FALSE)
{
$secondPos = strpos ($longStr,$secondTag,$firstPos);
if ($秒位置 !== FALSE)
{
$firstPos = strlen($firstTag);
$ret = substr($longStr,$firstPos,$secondPos-$firstPos);
}
$ret を返します。
}
関数 ReadSocket($whois,$ip)
{
グローバル $Text
$バッファ = '';
if (!$sock = fsockopen( $whois, 43, $errNum, $errStr, 20))
{
$buffer = str_replace('%SERVER%', $whois, $Text['sock_fail']);
}
それ以外は
{
fputs($sock,"$ip ");
//$buffer = fread($sock, 8192);
while(!feof($sock)) $buffer.=fgets($sock, 8192);
fclose($sock);
}
$バッファを返す
}
?>
言語ファイル:
lang.inc.php
$Text = 配列(
'ip_invalid'=>'有効な IP を取得したいのですが、[%IP%] です。',
'sock_connect'=>'%SERVER% に問い合わせます ...
'、
'sock_fail'=>'ホストに接続できません:%SERVER%'
);
?>
その他の有名なWhoisサーバー
1.Tucows (whois.opensrs.net) は一度に 1 つの接続しか持てません
dnsstuff はクエリです
2.BulkRegister (whois.bulkregiter.net) 接続が集中すると一時的にIPをブロックするので注意してください
3.ネットワーク ソリューション (whois.networksolutions.com) は 1 日に 1000 回のみチェックできます
5.whois.abuse.net
http://www.bkjia.com/PHPjc/632015.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/632015.html