如何根据 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}
我们能否编程(可能在 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}