ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルを使用した標準 IPWhois クエリの実装

PHP_PHP チュートリアルを使用した標準 IPWhois クエリの実装

WBOY
リリース: 2016-07-13 10:58:22
オリジナル
985 人が閲覧しました

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

関数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 回のみチェックできます

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


5.whois.abuse.net




http://www.bkjia.com/PHPjc/632015.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/632015.html

技術記事

インターネットの歴史的な理由により、apin はネットワーク IP 全体の全体的な計画と、北米とアフリカの一部での IP 割り当て管理を担当しています。これに対応して、whois.apin.net は IP Whois です...

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート