PHP獲取IP與連接數,并獲取IP所在地址
php-cli下執行 windows下的運維工具,改成linux也很方便 用PHP獲取IP與連接數,并獲取IP所在地址,主要針對80端口,其他端口也能看到 開啟反解ip可判斷是否是蜘蛛。
<?php //獲取連接數最高的ip的詳細信息 $top = 10; //獲取ip的詳細信息 $get_location = true; //反解ip,用于獲取蜘蛛,開啟后速度較慢 $reverse = FALSE; //$reverse = TRUE;ini_set('extension_dir',dirname(FILE)); ini_set('enable_dl',TRUE); if(!dl("php_curl.dll")){ exit('Can\'t load curl.'); } $content =
netstat -an -p TCP
; $regex = "/\s+TCP\s+\d+.\d+.\d+.\d+:(\d+)\s+(\d+.\d+.\d+.\d+):\d+\s+/sm";$table = array(); //1、連接數/2、本機ip/3、對方ip /**
端口/ip是唯一的 */ if(preg_match_all($regex,$content,$result)){ foreach($result[1] as $i=>$port){
if(isset($table[$port.':'.$result[2][$i]])) $table[$port.':'.$result[2][$i]]++; else $table[$port.':'.$result[2][$i]] = 1;
} $curl = curl_init(); curl_setopt($curl,CURLOPT_TIMEOUT,5); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$i = 0; $count = 0; if(asort($table))
foreach($table as $key=>$times){ $ip = substr(strstr($key,':'),1); $port = substr($key,0,strpos($key,':')); $i++; echo "\r\n連接數:",$times,' - ',$key; if(!$get_location || $i<count($table)-$top){ continue; } if($port=='80') $count += $times; if($ip!=='127.0.0.1' || $ip!=='0.0.0.0'){ $host = $reverse ? gethostbyaddr($ip) : $ip; if($host==$ip){ curl_setopt($curl,CURLOPT_URL, "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=txt&ip=".$ip); $location = curl_exec($curl); echo "(".preg_replace('/(\s|\d|\.)/','',$location).")"; } else { echo "(".$host.")"; } } }
echo "\r\n",'All(80):',$count; }</pre>
本文由用戶 6e72 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!