日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

分享Python獲取本機IP地址的幾種方法_python

作者:小鋒學長生活大爆炸 ? 更新時間: 2022-05-19 編程語言

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

2、使用自帶socket庫

獲取的是局域網IP。

import socket
# 函數 gethostname() 返回當前正在執行 Python 的系統主機名
res = socket.gethostbyname(socket.gethostname())
print(res)

但是上面這個獲取的不是公網IP,結果也不穩定(這里獲取了虛擬機下的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:

可以ipconfig看一下:

另一個適用于所有接口。它還適用于所有公共、私有、外部 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))

原文鏈接:https://blog.csdn.net/sxf1061700625/article/details/123526907

欄目分類
最近更新