运维开发网

分享一些Python获取原生IP地址的方法

运维开发网 https://www.qedev.com 2022-07-02 20:35 出处:网络
这篇文章主要介绍了分享Python获取本机IP地址的几种方法,分享了使用专用网站、使用自带socket库、使用第三方netifaces库等方式们需要的小伙伴可以参考一下


这篇文章主要介绍了分享Python获取本机IP地址的几种方法,分享了使用专用网站、使用自带socket库、使用第三方netifaces库等方式们需要的小伙伴可以参考一下


1、使用专用网站

获取公共IP。

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

代码:

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

更喜欢使用这个,也可以在命令窗口中使用它:

科尔·http://myip.ipip.net



2、使用自带socket库

获取局域网IP。

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

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


如果计算机设备有连接到互联网的路径,您可以使用:

import sockets = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.connect(("8.8.8.8", 80))print(s.getsockname()[0])

这是局域网IP:


你可以看看ipconfig:


另一个适用于所有接口。它也适用于所有公共、私有和外部知识产权。这种方法在Linux、Windows和OS X上运行良好。

import socketdef 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 IPprint(extract_ip())

注:如果局域网IP本身是公网IP,那么获取的IP可以认为是公网IP。


3、使用第三方netifaces库

获取局域网IP。

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

代码:

如果没有,请先安装库。

pip3 install netifaces

然后使用:

from netifaces import interfaces, ifaddresses, AF_INETfor 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的方法

0

精彩评论

暂无评论...
验证码 换一张
取 消