PHP_PHP チュートリアルを使用した標準 IPWhois クエリの実装
Jul 13, 2016 am 10:58 AMインターネットの歴史的な理由により、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
<?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
<?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

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
