调用聚合数据API获取IP地址

1.作者介绍

王帅秀,男,西安工程大学电子信息学院,2022级研究生
研究方向:机器视觉与人工智能
电子邮件:[email protected]

张思怡,女,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:[email protected]

2.简介

2.1 聚合数据API介绍

聚合数据API是一个提供多种数据API接口的平台,其中包括天气预报、股票、IP地址查询等多种类型的数据接口。
聚合数据API平台的特点包括了方便易用、高效稳定、可定制、提供多种开发工具和强大技术支持等方面,可以帮助开发者快速、便捷地获取到所需的数据。

2.2 查询IP地址的目的与意义

调用聚合API查询IP地址的目的是为了获得特定IP地址相关的信息。比如,查询该IP地址的所在地信息、ISP服务商、运营商、IP段、地理位置等信息。
应用场景:
1.防骗和风险控制:通过查询IP地址,可以判断该IP地址是否存在风险,比如是否为恶意IP地址或代理服务器等。
2.网站流量分析:通过IP地址查询,可以了解网站来源地、访问量、用户行为等数据信息,有助于网站流量分析和业务优化。
3.通过IP地址查询,可以对网络活动和攻击行为进行监控和预警,从而保障网络安全。

3.调用聚合数据API查询IP地址

3.1 调用聚合数据API

聚合数据官网中提供了IP地址查询的功能,具体调用过程如下:
1.首先在聚合数据官网中注册登录,进行实名认证。
2.然后搜索IP地址查询,开通IP地址查询服务,会生成调用聚合数据API的请求Key。
3.最后复制官网提供的实例代码,将自己申请的Key填入代码相应的位置中。

3.2 代码实现

import urllib.request, urllib.error, urllib.parse, sys, json
import importlib
importlib.reload(sys)
url = 'http://apis.juhe.cn/ip/ipNew'
params = {
    "ip": "x.xx.xx.xxx",  # 查询的IP地址
    "key": "申请的KEY",  # 您申请的接口API接口请求Key
}
querys = urllib.parse.urlencode(params).encode("utf-8") 
#使用 urlencode 函数将参数编码为 URL 格式,再进行 UTF-8 编码。
request = urllib.request.Request(url, data=querys) #构建一个 request 对象,包括请求的地址和请求的参数
response = urllib.request.urlopen(request) #使用 urlopen() 函数向 API 发送请求,获取响应
content = response.read() #读取响应内容
if (content):
    try:
        result = json.loads(content) #判断返回的内容是否存在
        error_code = result['error_code']  #从响应内容字典中获取 error_code 的值,判断请求是否成功。
        if (error_code == 0):
            country = result['result']['Country']  
            province = result['result']['Province']
            city = result['result']['City']
            isp = result['result']['Isp']  #获取IP归属地的国家、省份、城市、运营商信息。
            print("国家:%s\n省份:%s\n城市:%s\n运营商:%s" % (country, province, city, isp))
        else:
            print("请求失败:%s %s" % (result['error_code'], result['reason']))
    except Exception as e:
        print("解析结果异常:%s" % e)
else:
    # 可能网络异常等问题,无法获取返回内容,请求异常
    print("请求异常")

3.3 实验结果

国家:中国
省份:陕西省
城市:西安市
运营商:电信

3.4 注意事项

版本问题:urllib2 是Python2.x中的标准模块之一,但在Python3.x中被拆分成了urllib.request和urllib.error两个模块。所以,如果在Python3中尝试使用urllib2,会出现ModuleNotFoundError的错误。
解决方法:根据python技术文档对函数进行更改或使用python2to3.py进行转换。
调用其他类型的API:ip-api.com是一个由德国的开发者提供的网站。虽然它是由德国的开发者创建和维护的,但它提供了全球范围的IP地址查询服务,可以查询任何国家或地区的IP地址国家、地区、城市、邮编、经纬度信息。无论你在哪个国家,都可以使用ip-api.com来查询IP地址的信息。且不需要注册账号,无限次免费调用。因此也可以调用此API进行IP地址查询。
相关代码

import requests
def ip_address_lookup(ip_address):
    url = f"http://ip-api.com/json/{ip_address}"
    response = requests.get(url)
    data = response.json()
    if data['status'] == 'success':
        print(f"IP地址:{data['query']}")
        print(f"国家:{data['country']}")
        print(f"地区:{data['regionName']}")
        print(f"城市:{data['city']}")
        print(f"邮政编码:{data['zip']}")
        print(f"经度:{data['lon']}")
        print(f"纬度:{data['lat']}")
    else:
        print("IP地址查询失败")
ip_address_lookup("需要查询的IP地址")

猜你喜欢

转载自blog.csdn.net/m0_37758063/article/details/131384881
今日推荐