首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断域名是上级(一级)还是下级(二级)?

如何判断域名是上级(一级)还是下级(二级)?
EN

Stack Overflow用户
提问于 2014-08-14 18:39:43
回答 2查看 76关注 0票数 0

有什么算法可以解决这个问题吗?例如

代码语言:javascript
复制
 twitter.com
 zamg.ac.at

是顶级域,并且

代码语言:javascript
复制
pic.twitter.com

是否为二级域

EN

回答 2

Stack Overflow用户

发布于 2014-08-14 18:42:56

定义:

不,AFAIK是这样的:

示例:pic.twitter.com

顶级域:com二级域:twitter子域:pic (以及pic之前的所有其他潜在部分)

换句话说,模式应该是(subdomain.)*secondlevel.toplevel

因此:zamg.ac.at将不是顶级域,而是ac.at的子域,其tld为at

算法:

您可以拆分这些点,并使用最后一部分作为tld,倒数第二部分作为第二级,其余部分作为子域。

但是,如果您希望将zamg.ac.attwitter.com定义为应用程序语义上下文中的顶层(不要将其与对顶层的一般理解混淆),则需要一些映射,因为没有明显的模式。

为什么需要映射:

.co.uk为例:目前有google.co.uk,在你的语义中它是顶级的,但AFAIK现在也可以注册google.uk (我想说这只是一个时间问题),所以这两个域将处于同一级别(至少我理解你的问题),但有不同的部分数量。

至于.uk,你不能使用模式[^\.]+(\.\w{2})?\.\w{2}$来找到域的“顶层”部分,因为可能有“顶层”域使用更长的实际第二层部分,例如.ltd.uk.police.uk。这只适用于.uk的tld,还有很多其他的。

票数 1
EN

Stack Overflow用户

发布于 2016-10-03 22:49:03

正如在前面的回答中所提到的,您需要一个映射--最好的映射来源是publicsuffix.org,它为此目的维护了一个详细的规则列表。在许多编程语言中都有一系列的库(完整的列表是here),它们可以确定给定的URL的TLD (更准确地说是:可注册的域部分)。

下面是一个使用whois-server-list从主机获取可注册域的示例!图书馆。URL字符串变量是有效host (例如www.publicsuffix.org)的主机部分。PublicSuffixListPublicSuffixListFactoryde.malkusch.whoisServerList.publicSuffixList包的类。

代码语言:javascript
复制
PublicSuffixListFactory factory = new PublicSuffixListFactory();
PublicSuffixList suffixListResolver = factory.build();
String registrableDomain = suffixListResolver.getRegistrableDomain(host); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25306049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档