繁体   English   中英

从主机名中提取域名

[英]Extract domain name from a host name

有没有以编程方式从给定主机名中查找域名?

给 - > www.yahoo.co.jp返回 - > yahoo.co.jp

有效但速度很慢的方法是:

拆分为“。” 并从左侧删除1个组,在返回有效的SOA记录时使用dnspython连接并查询SOA记录,请考虑该域

没有使用正则表达式,有更清洁/更快的方法吗?

对于哪个“域名”是任何特定“主机名”的父级,没有简单的定义。

在您看到SOA记录之前,当前遍历树的方法实际上是最正确的。

从技术上讲,你在那里做的是找到一个“区域切割”,在绝大多数情况下,这将与域名从其TLD授权的点相对应。

任何依赖于仅在不引用DNS的情况下对主机名进行文本解析的方法都注定要失败。

或者,使用来自http://publicsuffix.org/的集中维护的以委托为中心的域名列表,但要注意这些列表可能不完整和/或过时。

另见这个问题 ,所有这些都已经过去了......

您可以使用partition而不是split

>>> 'www.yahoo.co.jp'.partition('.')[2]
'yahoo.co.jp'

这将有助于解析,但显然不会检查返回的字符串是否是有效域。

你的算法是正确的算法。 由于区域切割没有反映在域名中(您看到域切割 - 点 - 但不是区域切割),它是唯一正确的切割。

近似算法是使用区域列表,如Alnitak提到的区域。 请记住,这些静态列表不具有权威性,它们缺少许多注册表,它们是陈旧的,等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM