从 URL 获取没有子域的域

2022-09-03 01:38:48

从没有子域的URL获取域的正确方法是什么?

在Java中,从字符串中,您可以创建一个新的URL(urlString)并在URL上调用getHost(),但是您有子域。

问题在于,可能存在如下主机:subhost.example.com 和 subhost.example.co.uk

这两部分域中还有其他几个,如 co.uk(请参阅 https://wiki.mozilla.org/TLD_List 上的列表)。

在我看来,仅获取域的唯一正确方法是通过TLD列表进行搜索,从主机末尾删除TLD,并带走主机中最后一个句点之前的所有内容。是否有现有的方法可以做到这一点?我没有在java.net.URL中看到一个,我检查了一下apache共享资源,但在那里找不到一个。


答案 1

我知道这已经晚了几年,但如果有人偶然发现这个问题,请尝试以下操作:

InternetDomainName.from("subhost.example.co.uk").topPrivateDomain().name

以上将返回 example.co.uk。


答案 2

不确定上述答案是否正确:

InternetDomainName.from("test.blogspot.com").topPrivateDomain() -> test.blogspot.com

在我的情况下,这工作得更好:

InternetDomainName.from("test.blogspot.com").topDomainUnderRegistrySuffix() -> blogspot.com

详细信息:https://github.com/google/guava/wiki/InternetDomainNameExplained


推荐