簡體   English   中英

在Python中確定主機是域名還是IP

[英]Determine if Host is Domain Name or IP in Python

Python中是否有一個函數可以確定主機名是域名還是IP(v4)地址?

請注意,域名可能類似於: alex.foo.bar.com甚至(我認為這是有效的): 1.2.3.com

IP 和域地址之間的視覺差異之一是,當您刪除 IP 地址中的點時,結果將是一個數字。 因此,基於這種差異,我們可以檢查輸入的字符串是 IP 還是域地址。 我們刪除輸入字符串中的點,然后檢查是否可以將結果轉換為整數,否則會出現異常。

def is_ip(address):
    return address.replace('.', '').isnumeric()

盡管在某些 IP 表示中,例如點分十六進制(例如0xC0.0x00.0x02.0xEB ),IP 地址中可以同時包含字母和數字。 然而,頂級域(.org、.com、...)從不包含數字。 使用下面的函數將在比上面的函數更多的情況下工作。

def is_ip(address):
    return not address.split('.')[-1].isalpha()

我會使用 IPy 來測試字符串是否是 IP 地址,如果不是 - 假設它是一個域名。 例如:

from IPy import IP
def isIP(str):
    try:
        IP(str)
    except ValueError:
        return False
    return True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM