[英]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.