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

How to get location of server based on IP address in Python

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

P.S。仅供娱乐和深入了解。

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

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

这是使用 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'])

您可以使用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

您可以为此使用某些 API 服务。

例如,https://apiip.net,他们的 API 提供了很多关于 IP 的信息,如果需要,您也可以请求 XML 回复。

简单的 GET 调用:

https://apiip.net/api/check?ip=67.250.186.196&accessKey={your_api_key}