Python获取本机IP的三种常用方法:公网、Socket与第三方库

江岸
江岸
发布时间:2026-10-16| 5人浏览过
原创

本文介绍了Python中获取本机IP地址的三种常用方法。第一种通过访问第三方网站获取公网IP,支持命令行curl;第二种利用内置socket库获取局域网IP,需注意其局限性;第三种使用netifaces第三方库遍历所有网络接口。文章提供了具体代码示例及注意事项,帮助开发者根据实际需求选择合适方案。

方法一:通过专用网站查询

此方法主要用于获取公网IP地址。

常用的查询网址为:http://myip.ipip.net

对应的Python实现代码如下:

import requests
res = requests.get('http://myip.ipip.net', timeout=5).text
print(res)

该方式较为便捷,且在命令行环境中同样可用。

curl http://myip.ipip.net

方法二:使用内置socket库

此方式获取的是局域网IP地址。

import socket
# 函数 gethostname() 返回当前正在执行 Python 的系统主机名
res = socket.gethostbyname(socket.gethostname())
print(res)

需要注意的是,上述方法无法获取公网IP,且结果可能不稳定(例如在虚拟机环境下可能获取到虚拟机的IP),因此不建议作为首选方案。

如果计算机设备存在指向Internet的路由,可以尝试以下代码:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])

该方式同样获取的是局域网IP。

你可以使用ipconfig命令进行核对验证。

另一种适用于所有网络接口的方法,同时也适用于所有公共、私有及外部IP地址。该方案在Linux、Windows和OSX系统上均有效。

import socket
def extract_ip():
    st = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:       
        st.connect(('10.255.255.255', 1))
        IP = st.getsockname()[0]
    except Exception:
        IP = '127.0.0.1'
    finally:
        st.close()
    return IP
print(extract_ip())

注意:若本机局域网IP即为公网IP,则通过此方法获取的结果可视为公网IP。

方法三:使用第三方netifaces库

此方式获取的是局域网IP。

netifaces模块主要用于提供关于网络接口及其状态的信息。

具体代码实现如下:

若未安装该库,需先执行安装命令。

pip3 install netifaces

安装完成后,使用以下代码:

from netifaces import interfaces, ifaddresses, AF_INET
for ifaceName in interfaces():
    addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )]
    print(' '.join(addresses))

关于Python获取本机IP地址的几种方法介绍至此,更多相关Python获取本机IP方法内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。