這篇文章將介紹如何使用 Python 的標準庫 socket
來取得電腦的 Private IP,並且利用第三方庫 Requests
來查詢 Public IP。
查詢電腦的內網 Private IP
要取得電腦的Private IP,可以透過 Python 的標準庫 socket
來處理。socket
庫可以用來建立伺服器端和用戶端,讓它們能夠互相連接和傳遞訊息。以下是 socket
的基本用法:
socket.socket(family, type, proto)
family
:IPv4 本機、IPv4 網路、IPv6 網路。type
:使用的傳輸協議類型(如 TCP 或 UDP)。protocol
:串接協定 ( 通常預設 0 )。family
和 type
參數的內容如下:
參數 | 說明 | 詳細描述 |
---|---|---|
socket.AF_UNIX |
IPv4 本機 | 適用於本地通信 |
socket.AF_INET |
IPv4 網路 | 適用於 IPv4 網路 |
socket.AF_INET6 |
IPv6 網路 | 適用於 IPv6 網路 |
socket.SOCK_STREAM |
使用 TCP | 適用於面向連接的傳輸 |
socket.SOCK_DGRAM |
使用 UDP | 適用於非面向連接的傳輸 |
以下程式碼將會使用 socket
庫的 socket
方法,與 Google 的Public DNS 伺服器(8.8.8.8,port 80)進行初始化連接,從而取得本機的 Private IP。
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
print(ip)
s.close()
查詢電腦的Public IP
如果要查詢電腦的Public IP,則需要使用 Requests
庫向特定的網站(例如 api.ipify.org)發送請求,然後獲取返回的 IP 資訊。
import requests
ip = requests.get('https://api.ipify.org').text
print(ip)
參考資料 :
https://steam.oxxostudio.tw/category/python/example/ip.html