ホームページ >php教程 >php手册 >PHP を使用した標準 IP Whois クエリの実装

PHP を使用した標準 IP Whois クエリの実装

WBOY
WBOYオリジナル
2016-06-13 12:46:521164ブラウズ

インターネットの歴史的な理由により、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) )
{

$buffer = str_replace ('%SERVER%', $whois, $Text['sock_fail']);

}
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% に問い合わせます ...
',

'sock_fail'=>'ホストに接続できません:%SERVER%'

);

他の有名な Whois サーバー

1.Tucows (whois.opensrs.net) は一度に 1 つの接続しか持てません

dnsstuff はクエリするものです

2. BulkRegister (whois.bulkregiter.net) 接続数が多い場合は一時的に IP をブロックするので注意してください

3.Network Solutions (whois.networksolutions.com) は 1 日 1000 回しかチェックできません

4.ゴーダディ (whois.godaddy.com)

5.whois.abuse.net

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。