如何使用Python获取IP地址信息
有时您需要知道 IP 地址的位置,无论它是您自己的还是您正在使用的站点的位置。
一个用例是当您想将登录信息发送给您网站的用户时。在本文中,我们将了解如何使用 Python 找到 IP 地址的位置。
工具
为了实现这个目标,我们将使用下面提到的两个 API:
- ipify:这个 API 将帮助我们知道请求来自的 IP 地址。
- ipapi:此 API 将帮助我们获取特定 IP 地址的位置信息。
为了与这些 API 交互,将使用requests库。如果您不熟悉 API,请务必查看本教程以了解它们。pip您可以使用如下命令安装此库:
pip install requests
获取位置信息
正如我们所讨论的,我们将首先从第一个 API 中获取我们的 IP 地址。然后我们将使用这个 IP 地址来获取这个特定 IP 地址的位置信息。所以,我们将有两个功能:
import requests
def get_ip():
response = requests.get('https://api64.ipify.org?format=json').json()
return response["ip"]
def get_location():
ip_address = get_ip()
response = requests.get(f'https://ipapi.co/{ip_address}/json/').json()
location_data = {
"ip": ip_address,
"city": response.get("city"),
"region": response.get("region"),
"country": response.get("country_name")
}
return location_data
print(get_location())
get_ip()功能
根据 ipify 的API 文档,我们需要发出GET请求https://api.ipify.org?format=json以获取如下所示的 JSON 响应:
{"ip": "117.214.109.137"}
我们将此响应存储在一个response变量中,该变量只不过是一种具有一个键值对的Python 字典。所以我们将键的值ip作为response[“ip”].
get_location()功能
根据 ipapi 的API 文档,我们需要发出GET请求https://ipapi.co/{ip}/{format}/ 以获取特定 IP 地址的位置信息。{ip}替换为 IP 地址,并且{format}可以替换为以下中的任何一个 – json, jsonp, xml, csv, yaml.
该函数在内部调用该get_ip()函数以获取 IP 地址,然后对带有 IP 地址的 URL 发出GET请求。此 API 返回如下所示的 JSON 响应:
{'ip': '113.88.104.19', 'city': 'Shenzhen', 'region': 'Guangdong', 'country': 'China'}
我们在响应中获得了大量数据。你可以使用任何适合你的东西。对于本教程,我们将只使用 city,region和country. 这就是为什么我们创建了一个字典location_data,并在其中存储了所有数据并返回相同的数据。
总结
以上是晓得博客为你介绍的如何使用Python获取IP地址信息的全部内容,在本文中,我们了解了如何与 Web 服务交互以获取特定 IP 地址的位置信息,希望对你的Python编程有所帮助。