MaxMind GeoIP
Думаю всем известно и в описании не нуждается...
http://www.maxmind.com/app/ip-location
Добавляйте если есть чего интересного.
Думаю всем известно и в описании не нуждается...
http://www.maxmind.com/app/ip-location
MaxMind GeoIPCity [full]
формат: cvs
обновление: 01.10.2010
Старовата, но по сей день актуальна, за год не многое изменилось (во всяком случае все провайдеры с которыми я имею дело адреса не меняли).
В этой базе более 5ти миллионов записей, для сравнения, в бесплатной около 3х миллионов.
http://www.sendspace.com/file/x29rvo
p.s. было бы не плохо перезалить файл на более живучий ресурс
формат: cvs
обновление: 01.10.2010
Старовата, но по сей день актуальна, за год не многое изменилось (во всяком случае все провайдеры с которыми я имею дело адреса не меняли).
В этой базе более 5ти миллионов записей, для сравнения, в бесплатной около 3х миллионов.
http://www.sendspace.com/file/x29rvo
p.s. было бы не плохо перезалить файл на более живучий ресурс
Ну и дабы окончательно раскрыть тему с MaxMind я написал простенький php скрипт для получения данных с сайта (те же данные что и в базе GeoIPCity), т.к. на сайте доступна самая актуальная информация.
Для корректной работы скрипта нужен модуль curl для php (лень было с сокетами марочиться, а так еще и socks5 поддерживает
).
Для корректной работы скрипта нужен модуль curl для php (лень было с сокетами марочиться, а так еще и socks5 поддерживает
Код:
<?php
if(!function_exists('curl_version')) die("'php_curl' module not installed");
$ip = "209.85.148.147"; //google =)
if(isset($_GET['ip']) and @ereg('([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})',$_GET['ip'],$ip)) $ip = $_GET['ip'];
echo "<form method='get'><input type='text' name='ip' value='".$ip."'><input type='submit' value='>>'></form>";
list($country_c,$country_n,$region,$region_n,$city,$postal,$lat,$lon,$isp,$org) = geoIp($ip);
echo "<pre>
IP Adress: ".$ip."
Country Code: ".$country_c."
Country Name: ".$country_n."
Region: ".$region."
Region Name: ".$region_n."
City: ".$city."
Postal Code: ".$postal."
Latitude: ".$lat."
Longitude: ".$lon."
Internet Service Provider: ".$isp."
Organization: ".$org."
</pre>";
/*
Получение geoip данных с сайта www.maxmind.com.
IN $ip - string, адресс.
Return - array, geoip данные.
*/
function geoIp($ip)
{
$url = "http://www.maxmind.com/app/locate_demo_ip";
$post = "ips=".$ip."&type=&u=&p=";
$page = loadPage($url,false,10,false,$post);
$s_pos = strpos($page,$ip);
$e_pos = strpos($page,'</tr>',$s_pos);
$content = explode("<font size=\"-1\">",substr($page,$s_pos,$e_pos-$s_pos));
$geoip = array();
for($i=1;$i<11;$i++){
$temp = substr($content[$i],0,strpos($content[$i],'<',1));
$geoip[] = ($temp == "</font>" ? "--" : $temp);
}
return $geoip;
}
/*
Оснастка для curl.
IN $url - url для запроса.
IN $socks - socks.
IN $timeout - таймаут запроса.
IN $cookies - кукисы.
IN $post - post данные.
IN $headers - заголовки.
IN $referer - источник.
IN $ua - заголовок UserAgent.
IN $ssl - ключи для https запроса.
Return - string - в случаи успеха, результат.
false - в случаи ошибки.
*/
function loadPage($url,$socks=false,$timeout=10,$cookie=false,$post=false,$headers=false,$referer=false,$ua=false,$ssl=false)
{
$scheme=parse_url($url);
$scheme=$scheme['scheme'];
$ch = curl_init();
curl_setopt($ch,CURLOPT_HEADER,false);
curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);
curl_setopt($ch,CURLOPT_FAILONERROR,false);
curl_setopt($ch,CURLOPT_VERBOSE,false);
curl_setopt($ch,CURLOPT_NOPROGRESS,true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);
curl_setopt($ch,CURLOPT_USERAGENT,($ua?$ua:"Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"));
if($headers)curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
if($cookie)curl_setopt($ch,CURLOPT_COOKIE,$cookie);
if($socks){
curl_setopt($ch,CURLOPT_PROXY,$socks);
curl_setopt($ch,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5);
}
if($scheme=="https"){
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
if($ssl){
curl_setopt($ch,CURLOPT_SSLKEYPASSWD,$ssl['cert_pass']);
curl_setopt($ch,CURLOPT_SSLCERT,$ssl['cert_file'].'.cer');
curl_setopt($ch,CURLOPT_SSLKEY,$ssl['cert_file'].'.key');
}
}
curl_setopt($ch,CURLOPT_REFERER,($referer?$referer:$url));
if($post){
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
}
curl_setopt($ch,CURLOPT_URL,$url);
$result = curl_exec($ch);
$error = curl_errno($ch);
curl_close($ch);
if(!$error) return $result;
else return false;
}
?>
Добавляйте если есть чего интересного.