如何检测访问您网站的用户的国家和城市?

7 投票
3 回答
9566 浏览
提问于 2025-04-15 13:04

如何检测访问你网站的用户来自哪个国家?

我在我的网站上使用了谷歌分析,可以看到有来自世界各地的用户。

但是在我的应用程序中,我想根据用户的国家,甚至可能是城市,提供一些额外的定制服务。

有没有办法从浏览器中获取这些信息?这是一个用Python开发的网络应用。

3 个回答

1

Max mind 是需要付费的。

如果你想要一个免费的,只能根据国家代码来使用的解决方案,可以试试这个:

https://pypi.python.org/pypi/geoip2nation/

你可以通过这个命令来安装它:

pip install geoip2nation

from geoip import geoip
r = geoip.GeoIp()
r.load_memory()
r.resolve("12.12.12.12").country_code
#This prints : 'US'

print r.resolve("123.44.57.4")
#This prints : {'country': 'Korea (South)', 'host_name': '', 'country_code': 'KR'}

r.resolve2("12.12.12.12")
#This prints : 'US'
8

获取访问者的IP地址,然后用一个地理位置服务来检查这个IP的位置(如果你想自己管理这项功能,也可以购买一个地理位置数据库)。

16

首先,下载并解压这个链接的文件:http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz。接着,安装GeoIP-Python这个包(如果你使用的是Debian或Ubuntu系统,可以安装python-geoip包;如果不是,就去安装这个链接的包:http://geolite.maxmind.com/download/geoip/api/python/GeoIP-Python-1.2.4.tar.gz)。然后,你可以执行以下代码:

import GeoIP
gi = GeoIP.open("GeoLiteCity.dat", GeoIP.GEOIP_INDEX_CACHE | GeoIP.GEOIP_CHECK_CACHE)
print gi.record_by_name("74.125.67.100") # a www.google.com IP

{'city': 'Mountain View', 'region_name': 'California', 'region': 'CA', 'area_code': 650, 'time_zone': 'America/Los_Angeles', 'longitude': -122.05740356445312, 'country_code3': 'USA', 'latitude': 37.419200897216797, 'postal_code': '94043', 'dma_code': 807, 'country_code': 'US', 'country_name': 'United States'}

这个数据库是免费的,你可以在这里查看许可证:http://geolite.maxmind.com/download/geoip/database/LICENSE.txt。他们也有出售这个数据库的服务;我觉得购买后可以获得更频繁的更新。

撰写回答