Python 取得 ip 的方法

本篇介紹 Python 取得 ip 的方法。

python3-get-ip.py
1
2
3
4
5
6
7
8
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])
s.close()

結果如下,

1
192.168.1.2

寫成函式的話,範例如下,

python3-get-ip2.py
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import socket

def get_ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
s.close()
return ip

print(get_ip())

取得對外 ip

如果是要取得對外 ip 的話,可以用下列方式,簡單說就是用第三方網站所提供的功能,這些網站通常都可以讓你查詢你目前對外網的 ip 是多少,

python3-get-ip3.py
1
2
3
4
5
6
7
8
9
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests

def get_ip():
ip = requests.get('https://api.ipify.org').text
return ip

print(get_ip())

結果如下,

60.251.61.121

這邊附上我之前寫的圖形化 GUI 工具PyGetMyPublicIP,有好幾種取得外網 ip 的方式,有興趣可以去看看。

其它參考
networking - Finding local IP addresses using Python’s stdlib - Stack Overflow
https://stackoverflow.com/questions/166506/finding-local-ip-addresses-using-pythons-stdlib
本文的方法不是文中的最佳解

其它相關文章推薦
Python 新手入門教學懶人包
Python 讀取 txt 文字檔
Python 寫檔,寫入 txt 文字檔
Python 讀取 csv 檔案
Python 寫入 csv 檔案
Python 讀寫檔案
Python 產生 random 隨機不重複的數字 list
Python PyAutoGUI 使用教學
Python OpenCV resize 圖片縮放