Python--API编程:IP地址翻译成实际的物理地址

简介: Python--API编程:IP地址翻译成实际的物理地址

Web API经常被那些使用成熟的公开服务(public service)的开发者所使用。例如, ESPN提供了获取运动员信息,比赛分数等信息的 API。Google的开发者社区也提供了几十个API,用于语言翻译、分析、地理位置等信息。下面利用ip-api的api和淘宝ip地址库提供的api编写根据ip地址进行查询实际的物理地址。

运行环境
IDE: Pycharm2021

OS:macOS Ventura

Interpreter: Python3.9

示例代码
ip-api.com和淘宝IP地址库提供了一个简单易用的API, 它能将IP地址翻译成实际的物理地址。代码如下:

ip-api.com提供的API
import requests
import ssl
import re


ssl._create_default_https_context = ssl._create_unverified_context
headers = {
   
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36'
}

# 匹配 0.0.0.0-255.255.255.255的表达式
pattern = re.compile(r'(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])')

try:
    myip = input('请输入查询的ip: ')
    if pattern.fullmatch(myip):
        url = f'http://ip-api.com/json/{myip}'
        resp = requests.get(url, headers=headers)

        print('国家:', dict(resp.json())['country'])
        print('区域:', dict(resp.json())['regionName'])
        print('纬度:', dict(resp.json())['lat'])
        print('经度:', dict(resp.json())['lon'])
        print('时区:', dict(resp.json())['timezone'])
        print('运行商:', dict(resp.json())['isp'])

    else:
        print('格式不正确!')
except:
    print('内网IP')

运行结果如下图:

淘宝IP地址库提供的API,代码如下:

import requests
import re
url = 'https://ip.taobao.com/outGetIpInfo'
# 匹配 0.0.0.0-255.255.255.255的表达式
pattern = re.compile(r'(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])')

try:
    myip = input('请输入查询的ip: ')
    if pattern.fullmatch(myip):
        data = {
   
            'ip': myip,
            'accessKey': 'alibaba-inc'
        }
        resp = requests.post(url=url, params=data)

        print('国家: ', re.search('"country":"(.*?)"', resp.text).group(1))
        print('区域:', re.search('"region":"(.*?)"', resp.text).group(1))
        print('城市: ', re.search('"city":"(.*?)"', resp.text).group(1))
    else:
        print('输入格式不正确')

except Exception as error:
    print(error)

运行结果如下图:

image.png

相关文章
|
1月前
|
API
天气预报15日-墨迹天气-地址查询版免费API接口教程
该接口提供15日天气预报服务,通过指定地址获取墨迹天气预报。支持POST或GET请求,需提供用户ID、KEY、省份名称及地点等参数。返回数据包括15天内每天的天气详情,如最高最低温度、天气变化及图标等。示例中使用的ID和KEY为公共测试账号,建议使用个人账号以获得更高调用频率。
|
1月前
|
API
获取网页重定向地址免费API接口教程
该API用于获取网页重定向跳转后的最终地址。请求地址为`https://cn.apihz.cn/api/wangzhan/tiaozhuan.php`,支持POST或GET方式。请求参数包括`id`、`key`和`url`,返回数据包含状态码`code`和最终URL`url`。示例返回:`{"code":200,"url":"https://www.baidu.com/"}`。
72 29
|
21天前
|
网络安全 Python
Python网络编程小示例:生成CIDR表示的IP地址范围
本文介绍了如何使用Python生成CIDR表示的IP地址范围,通过解析CIDR字符串,将其转换为二进制形式,应用子网掩码,最终生成该CIDR块内所有可用的IP地址列表。示例代码利用了Python的`ipaddress`模块,展示了从指定CIDR表达式中提取所有IP地址的过程。
36 6
|
1月前
|
API
天气预报1天-中国气象局-地址查询版免费API接口教程
此接口提供中国气象局官方的当日天气信息,支持POST和GET请求,需提供用户ID、KEY、省份及具体地点。返回数据包括状态码、消息、天气详情等。示例中使用的ID与KEY为公共测试用,建议使用个人ID与KEY以享受更高调用频次。
|
1月前
|
API
天气预报-腾讯天气-7天-地址查询版免费API接口
这是一个免费的腾讯天气API接口,用于查询指定地址的7天天气预报。支持POST和GET请求方式。请求参数包括id、key、province、city、county等。返回参数包含日期、天气状况、温度等信息。 示例请求地址:https://cn.apihz.cn/api/tianqi/tengxun.php?id=88888888&key=88888888&province=四川省&city=绵阳市&county=。
|
2月前
|
网络协议 Python
IP地址探秘:识别与解析的Python之旅 🚀
《IP地址探秘:识别与解析的Python之旅》通过Python的`ipaddress`模块,轻松实现IP地址的分类(如单播、多播、私有、环回或公有)及子网内所有IP的生成,使网络管理更加便捷高效。示例代码直观展示了功能实现过程。
28 1
|
2月前
|
存储 自然语言处理 API
基于 Python 的地址解析:自动识别姓名、电话、地址、详细地址与省市区
基于 Python 的地址解析:自动识别姓名、电话、地址、详细地址与省市区
298 1
|
2月前
|
Linux Python
Python获得本机本地ip地址的方法
【10月更文挑战第8天】 socket模块包含了丰富的函数和方法,可以获取主机的ip地址,例如gethostbyname方法可以根据主机名获取ip地址,gethostbyname_ex方法可以获得本机所有ip地址列表,也可以使用netifaces模块获取网卡信息。
53 0
|
2月前
|
安全 测试技术 数据库
Python编程--sys模块及OS模块简单用例
Python编程--sys模块及OS模块简单用例
37 1
|
2月前
|
JSON 数据格式 Python
Python编程:利用JSON模块编程验证用户
Python编程:利用JSON模块编程验证用户
28 1
下一篇
DataWorks