介绍 我们经常需要知道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 地址的位置信息
|