如何确定域名是高级(主要)还是低级(次要)?

时间:2014-08-14 10:39:43

标签: java algorithm subdomain

这有什么算法吗? 例如

 twitter.com
 zamg.ac.at

是顶级域名  和

pic.twitter.com

是二级域名

2 个答案:

答案 0 :(得分:1)

<强>定义:

不,AFAIK是这样的:

示例:pic.twitter.com

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

换句话说,架构为(subdomain.)*secondlevel.toplevel

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

<强>算法:

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

但是,如果您要将zamg.ac.attwitter.com定义为应用语义上下文中的顶级(不要将其与对toplevel的一般理解混淆)那么您和& #39; d需要一些映射,因为没有明显的模式。

为什么您需要映射:

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

对于.uk,您无法使用模式[^\.]+(\.\w{2})?\.\w{2}$来查找&#34;顶级&#34;域名的一部分,因为可能有&#34;顶级&#34;域使用较长的实际二级部分,例如.ltd.uk.police.uk。而这仅适用于.uk tld,还有很多其他人。

答案 1 :(得分:0)

如上一个答案所述,您需要一个映射 - 最好的来源是publicsuffix.org,它为此目的维护一个详细规则列表。 许多编程语言都有一系列库(全面的列表是here),它可以在给定URL的情况下确定TLD(更确切地说:可注册的域部分)。

以下是使用[whois-server-list] https://github.com/whois-server-list/public-suffix-list从主机获取可注册域名的示例!图书馆。 host字符串变量是有效URL的主机部分(例如www.publicsuffix.org)。 PublicSuffixListPublicSuffixListFactoryde.malkusch.whoisServerList.publicSuffixList包的类。

PublicSuffixListFactory factory = new PublicSuffixListFactory();
PublicSuffixList suffixListResolver = factory.build();
String registrableDomain = suffixListResolver.getRegistrableDomain(host);