Python獲取ip地址的3種方法代碼
方法一
#獲取本機IP地址 def get_local_ip(): # s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # s.connect(('8.8.8.8', 80)) # ip = s.getsockname()[0] # s.close() ip = socket.gethostbyname(socket.gethostname()) return ip
運行結果:
D:\Python3.8.6\python.exe D:/PythonWorkSpace/someip/Common/get_IP_adress.py
192.168.42.44Process finished with exit code 0
方法二
#獲取公網IP地址 def get_public_ip(): response = requests.get("http://httpbin.org/ip") data = response.json() ip = data['origin'] return ip
運行結果:
D:\Python3.8.6\python.exe D:/PythonWorkSpace/someip/Common/get_IP_adress.py
223.76.212.244Process finished with exit code 0
方法三
# 獲取本機所有 IP 地址 def get_all_ip(): hostname = socket.gethostname() ip_list = [] # 獲取IP地址信息 addr_infos = socket.getaddrinfo(hostname, None) for addr in addr_infos: ip_list.append(addr[4][0]) # print(ip_list) return ip_list
運行結果:
D:\Python3.8.6\python.exe D:/PythonWorkSpace/someip/Common/get_IP_adress.py
fe80::f439:ac0:9050:c9f
fe80::1d73:c1cf:c1ca:6d0d
fe80::9d23:6620:a01:aa33
fe80::856d:dbe3:ada3:a32a
192.168.42.44
172.29.11.5
192.168.114.1
192.168.64.1Process finished with exit code 0
附:本機IP與127.0.0.1及l(fā)ocalhost的區(qū)別
127.0.0.1
環(huán)回地址是主機用于向自身發(fā)送通信的一個特殊地址。同一臺主機上的兩項服務若使用環(huán)回地址而非分配的主機地址,就可以繞開TCP/IP協議棧的下層。
IPv4的環(huán)回地址為:127.0.0.0到127.255.255.255都是環(huán)回地址
當操作系統初始化本機的TCP/IP協議棧時,設置協議棧本身的IP地址為127.0.0.1(保留地址),并注入路由表
127.0.0.1是保留地址之一,來檢驗本機TCP/IP協議棧,ping 127.0.0.1
一般作為測試本機TCP/IP協議棧正常與否的判斷之一。
localhost
localhost首先是一個域名,也是本機地址,它可以被配置為任意的IP地址。不過通常情況下都指向:(如下)
IPv4:表示
127.0.0.1
IPv6:表示 [::1]
本機IP
本機IP,可以理解為本機有三塊網卡:
- 一塊網卡叫做loopback(虛擬網卡)
- 一塊叫做ethernet(有線網卡)
- 一塊叫做wlan(你的無線網卡)
聯網,網卡傳輸,受防火墻和網卡限制
解決方法
獲取本機IP有其它的方法:
import os import socket gw = os.popen("ip -4 route show default").read().split() s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect((gw[2], 0)) ipaddr = s.getsockname()[0] gateway = gw[2] host = socket.gethostname() print("IP:", ipaddr, " GW:", gateway, " Host:", host)
或者
import os import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(("8.8.8.8", 80)) ip = s.getsockname()[0] print("IP:", ip)
總結
到此這篇關于Python獲取ip地址的3種方法的文章就介紹到這了,更多相關Python獲取ip地址內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python BeautifulSoup基本用法詳解(通過標簽及class定位元素)
這篇文章主要介紹了Python BeautifulSoup基本用法(通過標簽及class定位元素),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08