我想要一些小教程如何检测IP的城市或国家。我听说 MaxMind GeoIp 对它有好处。
答案 0 :(得分:10)
我是如何做到的:让我们说,创建一个名为“ My_Folder ”的文件夹并在其中:
GeoIp2
并输入此“SRC”文件夹(download)的内容。MaxMind
文件夹(download)。 GeoLite2-Country.mmdb
(download)。然后,在My_Folder
中创建一个example.php
文件并输入以下代码:
$user_ip='123.123.123.123';
spl_autoload_register('func888'); function func888($class){ include_once(str_replace(array('/','\\'), DIRECTORY_SEPARATOR, dirname(__file__)."/$class.php")) ;}
use GeoIp2\Database\Reader;
//you can do it for "city" too.. just everywhere change phrase "country" with "city".
try{
$reader = new Reader(dirname(__file__)."/GeoLite2-Country.mmdb");
$record = $reader->country($user_ip);
$reader->close();
$country_name = $record->raw['country']['names']['en'];
} catch ( GeoIp2\Exception\AddressNotFoundException $e ){ $country_name = 'not_found'; }
echo $country_name;
// RESULTS -------------- > China
找到的其他示例
答案 1 :(得分:1)
供参考,代码应如下所示 首先下载php类包 http://www.maxmind.com/download/geoip/api/php/php-1.11.tar.gz 你需要这个文件
geoip.inc
geoipcity.inc
geoipregionvars.php
将它们放在同一目录中 获取城市和其他信息的代码是
<?php
include("geoipcity.inc");
include("geoipregionvars.php");
$ip = "144.3.87.197";
$gi = geoip_open("GeoLiteCity.dat",GEOIP_STANDARD);
$record= geoip_record_by_addr($gi,$ip);
echo 'City Name'.$record->city . "\n";
geoip_close($gi);
?>
答案 2 :(得分:0)
MaxMind是一家位于马萨诸塞州的数字地图公司,提供IP地址的位置数据。 [MaxMind]由Thomas“ TJ” Mather于2002年成立,总部位于沃尔瑟姆,因此这里提供了有关如何使用PHP,GeoIP和[Maxmind]来检测国家和城市的简单教程。
1)首先需要根据您的平台(例如应用程序或网络)或相应的语言使用您可以使用的IP地址。
2)然后在后端中使用任何给定的链接发出curl请求,并获得包含国家,州,城市,坐标等的完整位置数组。
import pandas as pd
from ast import literal_eval
def to_list(x):
return literal_eval(''.join(', '.join(a.split(' ')) for a in x.split(',')))
mystr = '[[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]'
df = pd.DataFrame([{0: mystr} for i in range(5)])
df[0]
0 [[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]
1 [[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]
2 [[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]
3 [[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]
4 [[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]
Name: 0, dtype: object
# these are all string types
df[0][0]
'[[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]'
df[1] = df[0].map(to_list)
# this is now a list type
df[1][0]
[[0.0, 0.0, 0.0], [1.0, 1.0, 1.0], [1.3, 4.4, 5.5]]