Python获取本机IP地址的三种方式

news2024/10/7 10:24:30

目录

1、使用专用网址

2、使用自带socket库

3、使用第三方netifaces库


1、使用专用网站

获取的是公网IP

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

代码:


   
   
  1. import requests
  2. res = requests.get( 'https://myip.ipip.net', timeout= 5).text
  3. print(res)

具体可以类似这样:


   
   
  1. import requests
  2. import re
  3. def getOutterIP():
  4. ip = ''
  5. try:
  6. res = requests.get( 'https://myip.ipip.net', timeout= 5).text
  7. ip = re.findall( r'(\d+\.\d+\.\d+\.\d+)', res)
  8. ip = ip[ 0] if ip else ''
  9. except:
  10. pass
  11. return ip

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

curl https://myip.ipip.net
   
   

还可以用这个:https://api.ipify.org

2、使用自带socket库

获取的是局域网IP


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

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

 如果计算机设备有连接到 Internet 的路由,可以使用:


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

这个获得的是局域网IP:

可以ipconfig看一下:

另一个适用于所有接口。它还适用于所有公共、私有、外部 IP。这种方法在 Linux、Windows 和 OSX 上很有效。


   
   
  1. import socket
  2. def extract_ip():
  3. st = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  4. try:
  5. st.connect(( '10.255.255.255', 1))
  6. IP = st.getsockname()[ 0]
  7. except Exception:
  8. IP = '127.0.0.1'
  9. finally:
  10. st.close()
  11. return IP
  12. print(extract_ip())

注意:如果本身局域网IP就是公网IP的话,那这个获得的,可以认为是公网IP了。

3、使用第三方netifaces库

获取的是局域网IP

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

代码:

没装的先装一下库

pip3 install netifaces
   
   

然后使用


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1123964.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IP-guard客户端WINDOWS的打包方式

IP-guard的打包方式: 第一种:

Bootstrap的旋转器组件

旋转效果可以用来指示状态&#xff0c;比如页面的加载状态。 可以用类spinner-border实现普通旋转的旋转器效果。 用类spinner-grow实现渐渐变大的旋转器效果。 01-最基本的示例代码 <!DOCTYPE html> <html> <head><meta charset"UTF-8">…

Python树莓派开发

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

鞋帽箱包经营小程序商城的作用是什么

线上是很多线下商家破局的方法&#xff0c;企业私域经营很重要。 如今&#xff0c;各行业都在搭建自有私域流量池及自主经营。1000商城模板&#xff0c;海量营销/功能/控件&#xff0c;极简的拖拽拉搭建形式&#xff0c;通过【雨科】平台搭建鞋帽箱包小程序商城&#xff0c;摆…

qwen大模型,推理速度慢,单卡/双卡速度慢,flash-attention安装,解决方案

场景 阿里的通义千问qwen大模型&#xff0c;推理速度慢&#xff0c;单卡/双卡速度慢。 详细&#xff1a; 1、今日在使用qwen-14b的float16版本进行推理&#xff08;BF16/FP16) 1.1 在qwen-14b-int4也会有同样的现象 2、使用3090 24G显卡两张 3、模型加载的device是auto&#x…

测试老鸟总结,Allure测试报告-自动化测试详解,惊险避坑...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、Allure安装教程…

hello react

react中文官网 一、什么是react React是一个由Facebook开源的JavaScript库&#xff0c;用于构建用户界面。它基于组件化的思想&#xff0c;将界面拆分成多个独立的、可复用的组件&#xff0c;并通过组件之间的交互构建整个用户界面。React使用虚拟DOM&#xff08;Virtual DOM…

线框图软件:Balsamiq Wireframes mac中文介绍

Balsamiq Wireframes mac是一款用于创建线框图的软件工具。它旨在帮助用户快速制作出清晰、简洁的界面原型&#xff0c;以便在设计和开发过程中进行协作和沟通。 Balsamiq Wireframes具有简单直观的用户界面&#xff0c;使用户能够快速添加和编辑各种用户界面元素&#xff0c;如…

一百九十五、MySQL——MySQL数据库创建只读权限的账号(附流程截图)

一、目的 在团队开发过程中&#xff0c;为了实现数据共享以及避免其他团队修改库表数据&#xff0c;需要提供数据库只读权限的账号&#xff0c;因此以MySQL数据库为例&#xff0c;创建MySQL数据库只读权限的账号 二、实施步骤 &#xff08;一&#xff09;第一步&#xff0c;…

【C++】多态结束篇

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;虚表存在内存中哪里&#x…

SpringBoot中的日志使用

SpringBoot的默认使用 观察SpringBoot的Maven依赖图 可以看出来&#xff0c;SpringBoot默认使用的日志系统是使用Slf4j作为门户&#xff0c;logback作为日志实现 编写一个测试代码看是否是这样 SpringBootTest class SpringbootLogDemoApplicationTests {//使用Slf4j来创建LOG…

广西建筑模板的材质类型和特点有哪些?

广西建筑模板常用的材质类型包括木模板、钢模板、竹胶合板、塑料模板和铝合金模板等。每种材质都具有不同的特点和适用范围。 1. 木模板&#xff1a; - 适用于高层建筑的水平模板、剪力墙、竖向墙板、高架桥、立交桥、大坝、隧道施工及梁柱模板。 - 具有高强度和良好的韧性&…

通过全流量分析助力某医院关键业务提高性能

背景 福建某大型医院信息科近期接到多人反应&#xff0c;业务系统访问慢和报错情况&#xff0c;因为问题出现没有时间和操作规律&#xff0c;网络管理员通过多种方式排查&#xff0c;未能得到有效的原因定位。 我们已将NetInside流量分析系统部署到医院的机房内&#xff0c;使用…

2022年京东双十一手机数码全品类数据回顾

2023年双十一临近&#xff0c;特此带大家回顾一下去年双十一热门品类的一些战况数据。这一期是京东手机电脑数码。 整体表现来看&#xff0c;2022年双11大促京东手机、电脑、数码类产品并没有想象中的增长状态&#xff0c;无论是电脑中的笔记本、数码中的相机&#xff0c;或者是…

InnoDB事务

1. 支持的事务 扁平事务&#xff1a;所有操作都处于同一层次 带保持点的扁平事务&#xff1a;事务能够回到保持点的状态。 链事务&#xff1a;系统崩溃时&#xff0c;所有保存点都将消失。 嵌套事务&#xff1a;具有层次结构&#xff08;树&#xff09;。任意一个事务回滚会…

c语言进制的转换二进制转换10进制

c语言进制的转换之二进制转换10进制 c语言的进制的转换 c语言进制的转换之二进制转换10进制一、二进制转换10进制的方法二、10进制程序打印 一、二进制转换10进制的方法 二进制&#xff1a; 二进制逢二进一&#xff0c;所有的数组是0、1组成 十进制转二进制&#xff1a; 除二反…

AD20~PCB的板层设计和布线

1、打开51单片机最小系统的工程文件。 2、完成原理图后续工作&#xff1a;打开原理图文件&#xff0c;双击元件“CH340X”窗口右边弹出元件内部属性设置界面&#xff0c;在窗口下方点击“Footprint ->Add…”按钮进入添加元件类型界面&#xff0c;进入元件封装选择界面&…

2023年行云绽放傲冠股份厨艺比拼团建活动圆满结束

十月金秋&#xff0c;阳光灿烂&#xff0c;碧空如洗。 为了促进员工之间更好的交流&#xff0c;激发员工阳光向上的心态&#xff0c;充满活力&#xff0c;拥抱自然&#xff0c;深圳市行云绽放科技有限公司及深圳市傲冠软件股份有限公司于2023年10月13日组织深圳总部员工自驾出…

接口自动化测试工具大全

在互联网时代&#xff0c;服务端测试已经成为一个重要的产品保障手段&#xff0c;各对此公司实施的方法和技术也不同&#xff0c;本文我们就来讨论一下。 互联网服务端接口自动化是各个公司都需要一部分业务&#xff0c;如何快速高效地完成接口测试呢&#xff1f; 以帮助大家实…

Linux基础命令1——Linux的命令格式与命令分类

目录 Linux命令格式 Linux命令分类 如何判断命令的类型——Type命令 内置命令 外部命令 alias命令 命令的执行效率与过程 Linux命令格式 命令格式 完整的命令格式分为三部分&#xff1a;命令、参数、对象 其中命令与参数、参数与参数、参数与对象之间最少要有一个空格做…