分享Python獲取本機IP地址的幾種方法
1、使用專用網(wǎng)站
獲取的是公網(wǎng)IP
網(wǎng)址: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庫
獲取的是局域網(wǎng)IP。
import socket # 函數(shù) gethostname() 返回當(dāng)前正在執(zhí)行 Python 的系統(tǒng)主機名 res = socket.gethostbyname(socket.gethostname()) print(res)
但是上面這個獲取的不是公網(wǎng)IP,結(jié)果也不穩(wěn)定(這里獲取了虛擬機下的IP),不建議使用。
如果計算機設(shè)備有連接到 Internet 的路由,可以使用:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(("8.8.8.8", 80)) print(s.getsockname()[0])
這個獲得的是局域網(wǎng)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())
注意:如果本身局域網(wǎng)IP就是公網(wǎng)IP的話,那這個獲得的,可以認(rèn)為是公網(wǎng)IP了。
3、使用第三方netifaces庫
獲取的是局域網(wǎng)IP。
netifaces 模塊用于提供有關(guān)網(wǎng)絡(luò)接口及其狀態(tài)的信息。
代碼:
沒裝的先裝一下庫
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))
到此這篇關(guān)于分享Python獲取本機IP地址的幾種方法的文章就介紹到這了,更多相關(guān)Python獲取本機IP方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實現(xiàn)翻轉(zhuǎn)數(shù)組功能示例
這篇文章主要介紹了Python實現(xiàn)翻轉(zhuǎn)數(shù)組功能,涉及Python針對數(shù)組的遍歷、判斷、排序等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01Python生成ubuntu apt鏡像地址實現(xiàn)
本文主要介紹了Python生成ubuntu apt鏡像地址實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Django數(shù)據(jù)統(tǒng)計功能count()的使用
這篇文章主要介紹了Django數(shù)據(jù)統(tǒng)計功能count()的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11