分享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 操作文件的基本方法总结
Aug 10 Python
python调用其他文件函数或类的示例
Jul 16 Python
对python while循环和双重循环的实例详解
Aug 23 Python
Python模拟FTP文件服务器的操作方法
Feb 18 Python
Python sorted排序方法如何实现
Mar 31 Python
Python logging模块异步线程写日志实现过程解析
Jun 30 Python
python collections模块的使用
Oct 16 Python
python 多线程中join()的作用
Oct 29 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
Python通过Schema实现数据验证方式
Nov 12 Python
python 日志模块logging的使用场景及示例
Jan 04 Python
总结Python使用过程中的bug
Jun 18 Python
使用python求解迷宫问题的三种实现方法
Python超详细分步解析随机漫步
yolov5返回坐标的方法实例
Mar 17 #Python
PyTorch中的torch.cat简单介绍
Mar 17 #Python
Python Pygame实战在打砖块游戏的实现
python超详细实现完整学生成绩管理系统
Mar 17 #Python
Python Pygame实战之塔防游戏的实现
You might like
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
javascript高级编程之函数表达式 递归和闭包函数
2015/11/29 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
vue学习笔记之指令v-text && v-html && v-bind详解
2017/05/12 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
Python 常用 PEP8 编码规范详解
2017/01/22 Python
Python 读写文件的操作代码
2018/09/20 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
拉丁舞学习者的自我评价
2013/10/27 职场文书
保密普查工作实施方案
2014/02/25 职场文书
求职教师自荐书
2014/06/19 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
干部作风建设工作总结
2014/10/29 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js