分享Python获取本机IP地址的几种方法


Posted in Python onMarch 17, 2022

1、使用专用网站

获取的是公网IP

网址:http://myip.ipip.net

代码:

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

比较喜欢用这个,在命令窗口也能使用:

curl http://myip.ipip.net

分享Python获取本机IP地址的几种方法

2、使用自带socket库

获取的是局域网IP。

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

但是上面这个获取的不是公网IP,结果也不稳定(这里获取了虚拟机下的IP),不建议使用。

分享Python获取本机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:

分享Python获取本机IP地址的几种方法

可以ipconfig看一下:

分享Python获取本机IP地址的几种方法

另一个适用于所有接口。它还适用于所有公共、私有、外部 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了。

3、使用第三方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获取本机IP方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用Python的Supervisor进行进程监控以及自动启动
May 29 Python
python实现无证书加密解密实例
Oct 27 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
Python中asyncio与aiohttp入门教程
Oct 16 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
python判断计算机是否有网络连接的实例
Dec 15 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
Jul 11 Python
django解决订单并发问题【推荐】
Jul 31 Python
Python实现把多维数组展开成DataFrame
Nov 30 Python
Python API len函数操作过程解析
Mar 05 Python
Python 读取xml数据,cv2裁剪图片实例
Mar 10 Python
Python手动或自动协程操作方法解析
Jun 22 Python
使用python求解迷宫问题的三种实现方法
Python超详细分步解析随机漫步
yolov5返回坐标的方法实例
Mar 17 #Python
PyTorch中的torch.cat简单介绍
Mar 17 #Python
Python Pygame实战在打砖块游戏的实现
python超详细实现完整学生成绩管理系统
Mar 17 #Python
Python Pygame实战之塔防游戏的实现
You might like
Protoss魔法科技
2020/03/14 星际争霸
Notice: Undefined index: page in E:\PHP\test.php on line 14
2010/11/02 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
Google 静态地图API实现代码
2010/11/19 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
JQuery调用WebServices的方法和4个实例
2014/05/06 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
浅析Node.js的Stream模块中的Readable对象
2015/07/29 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
jquery实现进度条状态展示
2020/03/26 jQuery
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
python自动格式化json文件的方法
2015/03/11 Python
Python中encode()方法的使用简介
2015/05/18 Python
python数据封装json格式数据
2018/03/04 Python
详解Python的循环结构知识点
2019/05/20 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
淘宝店铺营销方案
2014/02/13 职场文书
代理人委托书
2014/08/01 职场文书
2014年个人委托书范本
2014/10/13 职场文书
防汛工作情况汇报
2014/10/28 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python