从包含子域名的网址获取TLD和二级域名

时间:2017-05-04 22:51:45

标签: c# string url dns

有简单的正则表达式和其他简单的方法可以做到这一点,但它们不能很好地处理边缘情况(如下所述),这就是为什么我要问一个新问题。 < / p>

我正在尝试编写一个相当简单的函数来解析C#中的DNS响应,但是有些细节很烦人,所以我要求找到解决它的最佳方法。

我想获取一个网址字符串,例如test.bounce.twitter.com并移除subdomains以获取twitter.com

然而,边缘案件让我感到困惑:

bounce.twitter.com    ---> twitter.com
twitter.com           ---> twitter.com
amazon.co.uk          ---> amazon.co.uk (Notice the .co.uk domain!)
news.home.barclays    ---> home.barclays (Note the gTLD with longer than 3 characters; website was formerly barclays.com, belongs to billion dollar bank)

值得注意的是,对于像.uk这样的顶级域名,使用news.mail.amazon.co.uk等网址并返回co.uk无效,即使co.uk在技术上是正确的二级域名。

此外,此列表将解析包含具有gTLD的域的网址,例如website.photographywebsite.clubwebsite.gallery,因此对TLD列表进行硬编码会很快变得混乱。

如何编写从URL中剥离子域的方法,同时仍处理边缘案例?处理国家代码,通用顶级域名等的事情。

0 个答案:

没有答案