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

作者:小锋学长生活大爆炸 时间:2022-02-17 12:47:18 

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地址的几种方法

来源:https://blog.csdn.net/sxf1061700625/article/details/123526907

标签:Python,获取,本机,IP地址,方法
0
投稿

猜你喜欢

  • Python3最长回文子串算法示例

    2023-05-27 14:17:10
  • python自定义函数实现最大值的输出方法

    2022-02-07 19:15:28
  • SQLSERVER 2005中使用sql语句对xml文件和其数据的进行操作(很全面)

    2024-01-14 19:31:21
  • 在Python的web框架中中编写日志列表的教程

    2021-11-06 05:15:29
  • python图像处理基本操作总结(PIL库、Matplotlib及Numpy)

    2022-01-26 00:28:50
  • ADO.NET 连接数据库字符串小结(Oracle、SqlServer、Access、ODBC)

    2024-01-22 07:43:47
  • Python的语法基础你真的了解吗

    2021-02-23 22:15:11
  • 让javascript加载速度倍增的方法(解决JS加载速度慢的问题)

    2024-04-19 11:03:22
  • 关于Mysql-connector-java驱动版本问题总结

    2024-01-19 02:07:58
  • C#实例代码之抽奖升级版可以经表格数据导入数据库,抽奖设置,补抽

    2024-01-26 14:21:41
  • 详解Python中的join()函数的用法

    2021-01-20 11:21:23
  • mysql支持跨表delete删除多表记录

    2024-01-27 06:12:29
  • selenium设置浏览器为headless无头模式(Chrome和Firefox)

    2023-02-19 14:09:08
  • Jquery多选下拉列表插件jquery multiselect功能介绍及使用

    2024-04-22 12:59:41
  • python判断文件夹内是否存在指定后缀文件的实例

    2021-12-27 23:05:19
  • vue实现商城秒杀倒计时功能

    2024-05-29 22:24:16
  • Python unittest模块用法实例分析

    2023-03-28 17:36:06
  • SQL Server中的SQL语句优化与效率问题

    2024-01-20 05:26:57
  • asp.net DropDownList实现二级联动效果

    2023-07-23 07:48:41
  • 解决python3 pika之连接断开的问题

    2021-09-28 18:40:09
  • asp之家 网络编程 m.aspxhome.com