簡體   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