目錄
1、使用專用網(wǎng)址
2、使用自帶socket庫
3、使用第三方netifaces庫
1、使用專用網(wǎng)站
獲取的是公網(wǎng)IP。
網(wǎng)址:http://myip.ipip.net
代碼:
-
import requests
-
res = requests.get(
'https://myip.ipip.net', timeout=
5).text
-
print(res)
具體可以類似這樣:
-
import requests
-
import re
-
-
def
getOutterIP():
-
ip =
''
-
try:
-
res = requests.get(
'https://myip.ipip.net', timeout=
5).text
-
ip = re.findall(
r'(\d+\.\d+\.\d+\.\d+)', res)
-
ip = ip[
0]
if ip
else
''
-
except:
-
pass
-
return ip
?比較喜歡用這個,在命令窗口也能使用:
curl https://myip.ipip.net
還可以用這個:https://api.ipify.org
2、使用自帶socket庫
獲取的是局域網(wǎng)IP。
-
import socket
-
# 函數(shù) gethostname() 返回當(dāng)前正在執(zhí)行 Python 的系統(tǒng)主機(jī)名
-
res = socket.gethostbyname(socket.gethostname())
-
print(res)
但是上面這個獲取的不是公網(wǎng)IP,結(jié)果也不穩(wěn)定(這里獲取了虛擬機(jī)下的IP),不建議使用。
?如果計算機(jī)設(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
然后使用文章來源:http://www.zghlxwxcb.cn/news/detail-759251.html
-
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))
文章來源地址http://www.zghlxwxcb.cn/news/detail-759251.html
目錄
1、使用專用網(wǎng)址
2、使用自帶socket庫
3、使用第三方netifaces庫
1、使用專用網(wǎng)站
獲取的是公網(wǎng)IP。
網(wǎng)址:http://myip.ipip.net
代碼:
-
import requests
-
res = requests.get(
'https://myip.ipip.net', timeout=
5).text
-
print(res)
具體可以類似這樣:
-
import requests
-
import re
-
-
def
getOutterIP():
-
ip =
''
-
try:
-
res = requests.get(
'https://myip.ipip.net', timeout=
5).text
-
ip = re.findall(
r'(\d+\.\d+\.\d+\.\d+)', res)
-
ip = ip[
0]
if ip
else
''
-
except:
-
pass
-
return ip
?比較喜歡用這個,在命令窗口也能使用:
curl https://myip.ipip.net
還可以用這個:https://api.ipify.org
2、使用自帶socket庫
獲取的是局域網(wǎng)IP。
-
import socket
-
# 函數(shù) gethostname() 返回當(dāng)前正在執(zhí)行 Python 的系統(tǒng)主機(jī)名
-
res = socket.gethostbyname(socket.gethostname())
-
print(res)
但是上面這個獲取的不是公網(wǎng)IP,結(jié)果也不穩(wěn)定(這里獲取了虛擬機(jī)下的IP),不建議使用。
?如果計算機(jī)設(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獲取本機(jī)IP地址的三種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!