这篇文章主要介绍了分享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的方法
精彩评论