分享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中精确输出JSON浮点数的方法
Apr 18 Python
Python3中多线程编程的队列运作示例
Apr 16 Python
详解使用python的logging模块在stdout输出的两种方法
May 17 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
Django自定义用户认证示例详解
Mar 14 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
python绘制封闭多边形教程
Feb 18 Python
python构造IP报文实例
May 05 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
Python执行时间的几种计算方法
Jul 31 Python
使用python求解迷宫问题的三种实现方法
Python超详细分步解析随机漫步
yolov5返回坐标的方法实例
Mar 17 #Python
PyTorch中的torch.cat简单介绍
Mar 17 #Python
Python Pygame实战在打砖块游戏的实现
python超详细实现完整学生成绩管理系统
Mar 17 #Python
Python Pygame实战之塔防游戏的实现
You might like
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
PHP实现变色验证码实例
2014/01/06 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
domReady的实现案例
2016/11/23 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
获取url中用&隔开的参数实例(分享)
2017/05/28 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
python列表去重的二种方法
2014/02/14 Python
python 读写、创建 文件的方法(必看)
2016/09/12 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
详解Django配置优化方法
2019/11/18 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
架构师岗位职责
2013/11/18 职场文书
公司自我介绍演讲稿
2014/08/21 职场文书
通报表扬范文
2015/01/17 职场文书
医德医风自我评价2015
2015/03/03 职场文书
文明礼貌主题班会
2015/08/14 职场文书