python驗(yàn)證公網(wǎng)ip與內(nèi)網(wǎng)ip的實(shí)現(xiàn)示例
公網(wǎng)IP和內(nèi)網(wǎng)IP都是用于標(biāo)識(shí)網(wǎng)絡(luò)設(shè)備的地址,但它們有著不同的作用和特點(diǎn)。
公網(wǎng)IP是由互聯(lián)網(wǎng)服務(wù)提供商(ISP)分配給用戶設(shè)備的唯一標(biāo)識(shí)符。它是全球范圍內(nèi)唯一的,并且可以被其他網(wǎng)絡(luò)設(shè)備使用來(lái)尋找和連接特定的設(shè)備。公網(wǎng)IP通常用于連接到互聯(lián)網(wǎng),允許用戶訪問(wèn)全球范圍內(nèi)的網(wǎng)絡(luò)資源。
內(nèi)網(wǎng)IP是指在私有網(wǎng)絡(luò)中使用的IP地址。一個(gè)內(nèi)網(wǎng)可以是一個(gè)公司、學(xué)?;蚣彝ゾW(wǎng)絡(luò)。在內(nèi)網(wǎng)中,設(shè)備通常使用私有IP地址,這些地址無(wú)法從公共互聯(lián)網(wǎng)中訪問(wèn)到。內(nèi)網(wǎng)IP地址通過(guò)路由器轉(zhuǎn)發(fā)到公網(wǎng),從而實(shí)現(xiàn)對(duì)互聯(lián)網(wǎng)的訪問(wèn)。
Python作為一種解釋型語(yǔ)言,可以方便地操作網(wǎng)絡(luò)接口,支持使用Socket API訪問(wèn)網(wǎng)絡(luò)資源。下面將通過(guò)Python舉例說(shuō)明如何驗(yàn)證公網(wǎng)IP和內(nèi)網(wǎng)IP。
驗(yàn)證公網(wǎng)IP地址
Python中驗(yàn)證公網(wǎng)IP地址的方法主要是通過(guò)訪問(wèn)指定的網(wǎng)站或使用Python庫(kù)中的特定模塊來(lái)獲取當(dāng)前系統(tǒng)的公網(wǎng)IP地址。
1.使用urllib庫(kù)訪問(wèn)百度
import urllib.request
def get_public_ip(): data = urllib.request.urlopen('http://www.baidu.com/s?wd=ip').read() data = data.decode('UTF-8') start = data.find('您的IP地址是') if start == -1: return False start += 7 end = data.find('&', start) if end == -1: return False return data[start:end]
print(get_public_ip())2.使用requests庫(kù)
import requests def get_public_ip(): url = 'https://api.ipify.org' response = requests.get(url) return response.text.strip() print(get_public_ip())
驗(yàn)證內(nèi)網(wǎng)IP地址
Python中驗(yàn)證內(nèi)網(wǎng)IP地址的方法也比較簡(jiǎn)單,可以通過(guò)獲取本地網(wǎng)絡(luò)設(shè)置信息或使用Python標(biāo)準(zhǔn)庫(kù)中的socket模塊來(lái)獲取。
1.使用socket模塊
import socket
def get_local_ip(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('8.8.8.8', 80)) ip_address = s.getsockname()[0] s.close() return ip_address
print(get_local_ip())2.使用psutil庫(kù)
import psutil def get_local_ip(): addrs = psutil.net_if_addrs() for interface_name, interface_addresses in addrs.items(): for address in interface_addresses: if str(address.family) == 'AddressFamily.AF_INET': return address.address print(get_local_ip())
總結(jié)
通過(guò)以上代碼,我們可以輕松地驗(yàn)證公網(wǎng)IP地址和內(nèi)網(wǎng)IP地址。需要注意的是,公網(wǎng)IP地址是唯一的,因?yàn)樗怯蒊SP分配的,而內(nèi)網(wǎng)IP地址在本地網(wǎng)絡(luò)中是唯一的,但在全球范圍內(nèi)并不唯一。因此,在編寫(xiě)代碼時(shí)需要考慮不同的使用場(chǎng)景。
到此這篇關(guān)于python驗(yàn)證公網(wǎng)ip與內(nèi)網(wǎng)ip的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)python驗(yàn)證公網(wǎng)ip與內(nèi)網(wǎng)ip內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)多格式文本轉(zhuǎn)為word
在現(xiàn)代工作中,我們常常需要處理不同格式的文件,其中Word文檔是最為常見(jiàn)的一種,本文主要介紹了如何使用Python創(chuàng)建一個(gè)全能的文件處理工具,能夠?qū)⒍喾N格式的文件轉(zhuǎn)換為Word文檔,需要的可以參考下2023-11-11
Django 事務(wù)transaction.atomic()的使用方法
本文主要介紹了Django 事務(wù)transaction.atomic()的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-12-12
python如何定義一個(gè)迭代器去生成偶數(shù)數(shù)列
這篇文章主要介紹了python如何定義一個(gè)迭代器去生成偶數(shù)數(shù)列問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
用python求一個(gè)數(shù)組的和與平均值的實(shí)現(xiàn)方法
今天小編就為大家分享一篇用python求一個(gè)數(shù)組的和與平均值的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
Python實(shí)戰(zhàn)案例之可增刪改查的員工管理系統(tǒng)
本實(shí)戰(zhàn)案例主要對(duì)MySQL進(jìn)行一些基本操作,通過(guò)完成本實(shí)驗(yàn)任務(wù),要求學(xué)生熟練掌握MySQL的增刪改查,并對(duì)MySQL的增刪改查基本操作進(jìn)行管理員工的信息,需要的朋友跟著小編往下看吧2021-10-10
Python利用PyMuPDF實(shí)現(xiàn)高效提取PDF文本與圖片
本文介紹了PyMuPDF在處理PDF文檔中的強(qiáng)大功能,通過(guò)對(duì)比PyMuPDF與PyPDF2的性能和功能,展示了PyMuPDF在文本和圖片提取、批量處理等方面的卓越表現(xiàn),文內(nèi)提供了實(shí)戰(zhàn)代碼示例,希望可以幫助讀者快速掌握PyMuPDF的高效用法2026-04-04
python實(shí)現(xiàn)自動(dòng)化腳本編寫(xiě)
自動(dòng)化在很多時(shí)候是很方便的,本文以修改用戶名密碼單元為案例,編寫(xiě)測(cè)試腳本。完成修改用戶名密碼模塊單元測(cè)試,感興趣的可以了解一下2021-06-06
使用Atom支持基于Jupyter的Python開(kāi)教程詳解
這篇文章主要介紹了使用Atom支持基于Jupyter的Python開(kāi)發(fā),Vscode雖然說(shuō)也有連接Jupyter的工具,但是交互式的開(kāi)發(fā)Hydrogen體驗(yàn)更好,需要的朋友可以參考下2021-08-08

