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

作者:

文章目录
  • 首先,请确保你的Python环境中安装了requests库。 pip install requests
  • 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,比如谷歌的公共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通过IP地址查询地理位置的几种方法 Python查询域名的IP地址的实现 基于python实现查询ip地址来源 python实现ip地址查询经纬度定位详解 Python查询IP地址归属完整代码 python实现查询IP地址所在地
  • 目录
    • 准备工作:安装必备工具
    • 第一步:查询自己的公网 IP 信息
    • 第二步:查询任意指定的 IP 地址
    • 第三步:自由封装成自己需要的内容显示库
    • 方法补充

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

    pip install requests
    

    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,比如谷歌的公共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通过IP地址查询地理位置的几种方法
    • Python查询域名的IP地址的实现
    • 基于python实现查询ip地址来源
    • python实现ip地址查询经纬度定位详解
    • Python查询IP地址归属完整代码
    • python实现查询IP地址所在地

    站内搜索