首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从主机名中提取域名

从主机名中提取域名
EN

Stack Overflow用户
提问于 2009-05-05 16:17:13
回答 3查看 14.4K关注 0票数 18

有没有一种编程方法可以从给定的主机名中找到域名?

给定-> www.yahoo.co.jp return -> yahoo.co.jp

有效但非常慢的方法是:

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

有没有一种更干净/更快的方法,不用使用regexp就可以做到这一点?

EN

回答 3

Stack Overflow用户

发布于 2009-05-06 07:09:23

对于哪个“域名”是任何特定“主机名”的父名称,都没有微不足道的定义。

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

从技术上讲,您在那里所做的是找到一个“区域切割”,并且在绝大多数情况下,这将对应于域从其TLD委派的点。

任何仅依赖于主机名的文本解析而不参考DNS的方法都注定要失败。

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

另请参阅this question,所有这些内容以前都已经介绍过了……

票数 15
EN

Stack Overflow用户

发布于 2009-05-05 16:26:18

您可以使用partition而不是split

代码语言:javascript
复制
>>> 'www.yahoo.co.jp'.partition('.')[2]
'yahoo.co.jp'

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

票数 4
EN

Stack Overflow用户

发布于 2009-05-06 07:16:22

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

近似算法是使用区域列表,就像Alnitak提到的那样。请记住,这些静态列表没有权威性,它们缺少很多注册表,它们已经过时了,等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/825694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档