ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルを使用した標準 IP Whois クエリの実装
インターネットの歴史的な理由により、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 サーバーに送信するプロセス
のポート 43 への接続を開きますWhois サーバーにアクセスし、クエリ ドメイン名とキャリッジ リターンとライン フィードを送信します。複数のドメイン名をクエリする場合は、ドメイン名をスペースで区切って、sokect から結果を読み取ります。最後に、サーバーは自動的に切断されます。
PHP で実装
1. IP を確認します (ereg の代わりに ip2long を使用します)
2. データベースに関連する情報がない場合、紹介サーバーの URL が次の形式で提供されます。 ReferralServer:
この情報に基づいてクエリを続けます
if (-1 === ip2long($ip))
die(str_replace('%IP%', $IP, $Text[' ip_invalid']));
$rootwhois = 'whois.arin.net'
$buffer = str_replace('% 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 ($whois,$IP); }
else
.= $buffer1;
}
return nl2br($buffer); firstTag ,$nextTag,& $longStr)
{
$firstPos = strpos ($longStr,$firstTag);
$ret = '';
if ($firstPos !== FALSE)
{
$firstPos = strpos ($ longStr,$firstPos,$firstPos);
if ($secondPos !== FALSE)
{
$firstPos += strlen($firstTag)
}
}
return $ret;
function ReadSocket($whois,$ip)
{
$text = ''; $sock = fsockopen; , $errNum, $errStr , 20))
{
$buffer = str_replace('%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'=>'有効な IP を取得したいしかし、それは [%IP %] です。',
'sock_connect'=>'%SERVER% に問い合わせます ...
',
'sock_fail'=>'ホストに接続できません:%SERVER%'
);
?>
他の有名な Whois サーバー
1.Tucows (whois.opensrs.net) は一度に 1 つの接続しか持てません
2.BulkRegister (whois.bulkregiter.net)接続が多い場合は IP を一時的にブロックするので注意してください。その場合は
3.ネットワーク ソリューション (whois.networksolutions.com) は 1 日 1000 回のみチェックできます
4.ゴー ダディ (whois.godaddy.com)
。