例如:
http://www.google.co.uk
www.google.co.uk
google.co.uk
将全部转换为:
google.co.uk
我本来想使用 System.Uri 类,但这似乎只接受带有方案的 url。
提取域名很简单
The UriBuilder class https://msdn.microsoft.com/en-us/library/system.uribuilder.aspx标准化 URL 并处理许多边缘情况,例如缺少方案。这使得提取域名变得容易。例如,这些都给你www.google.co.uk
:
new UriBuilder("www.google.co.uk").Host
new UriBuilder("http://www.google.co.uk").Host
new UriBuilder("ftp://www.google.co.uk:21/some/path").Host
...但是删除www.
is hard
这个问题看似简单,其实不然。您无法可靠地删除子域,例如www
因为没有真正的区别。域名is www.google.co.uk
, 包括www
。没什么特别的co.uk
这使得google
域的一部分和www
不是其中的一部分——只是碰巧co.uk
由注册商管理,并且google.co.uk
由 Google 管理。
为了让您了解这个问题,这里有一个不完整的域名后缀列表 https://publicsuffix.org/list/到目前为止,其中包括近 7100 个条目。值得注意的是,哪一部分甚至不一致:
URL the domain you want
--------------------- -------------------
http://www.crews.aero crews.aero
http://www.crew.aero www.crew.aero
最好的方法是Google 本身为 Chrome 的多功能栏做了什么 https://publicsuffix.org/learn/: 获取(不完整)域名后缀列表 https://publicsuffix.org/list/,临时缓存它,并将域名与域后缀列表进行比较。您可以亲自查看结果:在 Chrome 多功能栏中输入“crews.aero”,它将被视为 URL,或者输入“crew.aero”,它将被视为搜索。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)