使用Python获取IP地址的位置信息
介绍我们经常需要知道IP地址的位置,甚至可能是我们的IP地址。另一个用例是当您要向网站的用户发送登录信息时。在这篇博客中,我们将看到如何使用Python知道IP地址的位置。准备好您的工具为了实现该目标,我们将使用下面提到的两个 API:[*]ipify:此 API 将帮助我们了解请求来自何处的 IP 地址。
[*]ipapi:此 API 将帮助我们获取特定 IP 地址的位置信息。
为了与这些API进行交互,我们将在Python中使用库。如果您不熟悉 API,请务必查看本教程以了解它们。requests您可以使用如下命令安装此库: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()get_location()get_ip() 函数
根据 ipify 的 API 文档,我们需要在 https://api.ipify.org?format=json 上发出 GET 请求,以获得如下所示的 JSON 响应:{
"ip": "117.214.109.137"
}我们将此响应存储在响应变量中,该变量只不过是一种具有一个键值对的Python字典。因此,我们将键的值返回为 。ipresponse["ip"]get_location() 函数
根据ipapi的API文档,我们需要在 https://ipapi.co/{ip}/{format}/上发出GET请求,以获取特定IP地址的位置信息。 替换为 IP 地址,并且可以替换为以下任何地址 - 、 、 、 、 。此函数在内部调用该函数以获取 IP 地址,然后在具有 IP 地址的 URL 上发出 GET 请求。此 API 返回如下所示的 JSON 响应:{ip}{format}jsonjsonpxmlcsvyamlget_ip(){
"ip": "117.214.109.137",
"version": "IPv4",
"city": "Gaya",
"region": "Bihar",
"region_code": "BR",
"country": "IN",
"country_name": "India",
"country_code": "IN",
"country_code_iso3": "IND",
"country_capital": "New Delhi",
"country_tld": ".in",
"continent_code": "AS",
"in_eu": false,
"postal": "823002",
"latitude": 24.7935,
"longitude": 85.012,
"timezone": "Asia/Kolkata",
"utc_offset": "+0530",
"country_calling_code": "+91",
"currency": "INR",
"currency_name": "Rupee",
"languages": "en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc",
"country_area": 3287590,
"country_population": 1352617328,
"asn": "AS9829",
"org": "National Internet Backbone"
}我们在响应中获得了大量数据。您可以使用任何适合您的方法。在本教程中,我们将只使用 和/地区。这就是为什么我们创建了一个名为location_data的字典,并将所有数据存储在其中并返回相同的数据。cityregion
最后,我们调用该函数并打印输出。我们的输出将如下所示:get_location(){
"ip": "117.214.109.137",
"city": "Gaya",
"region": "Bihar",
"country": "India"
}结论
在这篇博客中,我们学习了如何与 Web 服务交互以获取特定 IP 地址的位置信息
页:
[1]