从主机名中提取域名

16 python dns hostname

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

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

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

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

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

Aln*_*tak 15

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

您当前遍历树的方法直到您看到SOA记录实际上是最正确的.

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

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

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

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


Dav*_*ebb 4

您可以使用partition代替split

>>> 'www.yahoo.co.jp'.partition('.')[2]
'yahoo.co.jp'
Run Code Online (Sandbox Code Playgroud)

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