繁体   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