使用Python查询自己或任意指定的IP地址

 更新时间:2025年10月21日 08:49:44   作者:烛阴  
这篇文章主要为大家详细介绍了如何使用Python查询自己或任意指定的IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

准备工作:安装必备工具

首先,请确保你的Python环境中安装了requests库。

pip install requests

第一步:查询自己的公网 IP 信息

import requests
import json

# 向ipinfo.io发送请求,不带任何IP地址,它会默认查询你自己的IP
url = "https://ipinfo.io/json"

try:
    response = requests.get(url)
    response.raise_for_status() # 如果请求失败 (如状态码 4xx, 5xx), 会抛出异常

    # 将返回的JSON格式数据解析为Python字典
    data = response.json()

    print("--- 你的IP信息详情 ---")
    # 为了美观,使用json.dumps进行格式化输出
    print(json.dumps(data, indent=4, ensure_ascii=False))

except requests.exceptions.RequestException as e:
    print(f"请求失败: {e}")

运行后,你将看到类似这样的输出(信息会根据你的实际情况而变):

{
    "ip": "xxx.xxx.xxx.xxx",
    "hostname": "some.host.name",
    "city": "xx",
    "region": "xx",
    "country": "CN",
    "loc": "39.9042,116.4074",
    "org": "xx",
    "postal": "100000",
    "timezone": "Asia/Shanghai",
    "readme": "https://ipinfo.io/missingauth"
}

第二步:查询任意指定的 IP 地址

我们可以查询任何一个我们想查的公网IP,比如谷歌的公共DNS服务器 8.8.8.8

import requests
import json

# 定义要查询的IP地址
target_ip = "8.8.8.8"

# 构造请求URL,将IP地址拼接到URL中
url = f"https://ipinfo.io/{target_ip}/json"

try:
    response = requests.get(url)
    response.raise_for_status()

    data = response.json()

    print(f"--- IP: {target_ip} 的信息详情 ---")
    print(json.dumps(data, indent=4, ensure_ascii=False))

except requests.exceptions.RequestException as e:
    print(f"请求失败: {e}")

输出将会是:

{
    "ip": "8.8.8.8",
    "hostname": "dns.google",
    "city": "Mountain View",
    "region": "California",
    "country": "US",
    "loc": "37.4056,-122.0775",
    "org": "AS15169 Google LLC",
    "postal": "94043",
    "timezone": "America/Los_Angeles",
    "readme": "https://ipinfo.io/missingauth",
    "anycast": true
}

第三步:自由封装成自己需要的内容显示库

示例

import requests

def get_ip_info(ip_address: str) -> dict | None:
    """
    查询指定IP地址的详细信息。
    
    :param ip_address: 要查询的IP地址字符串。
    :return: 包含IP信息的字典,如果查询失败则返回None。
    """
    url = f"https://ipinfo.io/{ip_address}/json"
    try:
        response = requests.get(url, timeout=5) # 增加超时设置
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"查询IP {ip_address} 时出错: {e}")
        return None

# --- 使用我们封装好的函数 ---
if __name__ == "__main__":
    ip_list = ["8.8.8.8", "1.1.1.1", "114.114.114.114"]
    
    for ip in ip_list:
        info = get_ip_info(ip)
        if info:
            country = info.get('country', 'N/A')
            city = info.get('city', 'N/A')
            org = info.get('org', 'N/A')
            print(f"IP: {ip:<15} | Location: {country}, {city} | Organization: {org}")

方法补充

python 获取本机IP地址的多种方法

方法一: 通常使用socket.gethostbyname()方法即可获取本机IP地址,但有时候获取不到(比如没有正确设置主机名称),示例代码如下:

import socket

# 获取本机计算机名称
hostname = socket.gethostname()
# 获取本机ip
ip = socket.gethostbyname(hostname)
print(ip)

方法二: 亲测本方法在windows和Linux系统下均可正确获取IP地址

import socket

def get_host_ip():
    """
    查询本机ip地址
    :return: ip
    """
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('8.8.8.8', 80))
        ip = s.getsockname()[0]
    finally:
        s.close()

    return ip

if __name__ == '__main__':
    print(get_host_ip())

到此这篇关于使用Python查询自己或任意指定的IP地址的文章就介绍到这了,更多相关Python查询IP地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中turtle库的使用实例

    Python中turtle库的使用实例

    这篇文章主要介绍了Python中turtle库的使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python如何用*打印正三角、倒三角、等边三角形、菱形及空心菱形

    Python如何用*打印正三角、倒三角、等边三角形、菱形及空心菱形

    这篇文章主要给大家介绍了关于Python如何用*打印正三角、倒三角、等边三角形、菱形及空心菱形的相关资料,提供了每种形状的实现代码和输出结果,需要的朋友可以参考下
    2025-05-05
  • Python首次安装后运行报错(0xc000007b)的解决方法

    Python首次安装后运行报错(0xc000007b)的解决方法

    最近在安装完Python后运行发现居然报错了,错误代码是0xc000007b,于是通过往上查找发现是因为首次安装Python缺乏VC++库的原因,下面通过这篇文章看看如何解决这个问题吧。
    2016-10-10
  • python 实现得到当前时间偏移day天后的日期方法

    python 实现得到当前时间偏移day天后的日期方法

    今天小编就为大家分享一篇python 实现得到当前时间偏移day天后的日期方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 学生如何注册Pycharm专业版以及pycharm的安装

    学生如何注册Pycharm专业版以及pycharm的安装

    这篇文章主要介绍了学生如何注册Pycharm专业版以及pycharm的安装,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • python pandas详细用法指南(推荐)

    python pandas详细用法指南(推荐)

    这篇文章主要介绍了Python中pandas库中Series和DataFrame数据结构的基本定义、读取和保存文件的方法、数据的基本操作和数据分析技巧,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • Python实现的三层BP神经网络算法示例

    Python实现的三层BP神经网络算法示例

    这篇文章主要介绍了Python实现的三层BP神经网络算法,结合完整实例形式分析了Python三层BP神经网络算法的具体实现与使用相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • Python的10道简单测试题(含答案)

    Python的10道简单测试题(含答案)

    这篇文章主要介绍了Python的10道简单测试题(含答案),学习了一段时间python的小伙伴来做几道测试题检验一下自己的学习成果吧
    2023-04-04
  • Python OpenCV读取视频报错的问题解决

    Python OpenCV读取视频报错的问题解决

    大家好,本篇文章主要讲的是Python OpenCV读取视频报错的问题解决,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • python爬虫实战之最简单的网页爬虫教程

    python爬虫实战之最简单的网页爬虫教程

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。下面这篇文章就来给大家介绍了关于利用python实现最简单的网页爬虫的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08

最新评论