如何在 Python 中根据 IP 地址获取服务器的位置

Posted

技术标签:

【中文标题】如何在 Python 中根据 IP 地址获取服务器的位置【英文标题】:How to get location of server based on IP address in Python 【发布时间】:2020-12-13 19:16:59 【问题描述】:

我们能否通过编程(可能在 python 中)从我们访问网页的位置获取服务器位置。

附:只是为了好玩和深入了解。

【问题讨论】:

【参考方案1】:

您可以使用 bin 文件来查找 IP 地址信息。例如,使用 IP2Location Python 库和 IP2Location Lite bin 文件:

import IP2Location
 
IP2LocObj = IP2Location.IP2Location()

IP2LocObj.open("IP2LOCATION-LITE-DB11.BIN")
rec = IP2LocObj.get_all("8.8.8.8")
 
print rec.country_short
print rec.country_long
print rec.region
print rec.city
print rec.isp
print rec.latitude
print rec.longitude
print rec.zipcode
print rec.timezone

您可以从这里获取 IP2Location Lite 数据库:https://lite.ip2location.com/ip2location-lite

【讨论】:

【参考方案2】:

这是使用其中一种 API 获取服务器位置的示例。

还有许多其他网站选项,例如keycdn、iplocation 等等。

import json
import urllib.request

GEO_IP_API_URL  = 'http://ip-api.com/json/'

# Can be also site URL like this : 'google.com'
IP_TO_SEARCH    = '87.250.250.3'

# Creating request object to GeoLocation API
req             = urllib.request.Request(GEO_IP_API_URL+IP_TO_SEARCH)
# Getting in response JSON
response        = urllib.request.urlopen(req).read()
# Loading JSON from text to object
json_response   = json.loads(response.decode('utf-8'))

# Print country
print(json_response['country'])

【讨论】:

【参考方案3】:

您可以使用 this 等 GeoIP 工具从 IP 地址获取位置。它不是 100% 准确,但通常足够接近。

还有诸如GeoIP 和python-geoip 之类的python 模块,它们基本上可以满足您的需求。如果您想要最准确的结果,您需要从 MaxMind 购买更准确的数据库。

【讨论】:

好的!!!感谢您提供的信息,如果您能建议我一些代码行会更好。 :) 更新了答案以包含一个执行相同操作的 python 模块。 @PrasunParate

以上是关于如何在 Python 中根据 IP 地址获取服务器的位置的主要内容,如果未能解决你的问题,请参考以下文章

Python根据IP地址获取MAC地址

如何从 linux 上的 python 脚本获取我的本地 IP 地址? [复制]

如何用python脚本获取ip,掩码,地址,网段

php根据ip地址查地区

Py获取本机指定网卡的ip地址

如何在 PHP 中获取已连接客户端的 MAC 和 IP 地址?