從全網域名稱中提取根網域名稱

2022-03-08 13:37:08 字數 758 閱讀 4638

1、前言

最近因為工作需要判斷乙個網域名稱是否備案,實際提取的網域名稱就是http報文中的host的內容,而判斷乙個網域名稱是否是根據根網域名稱進行的。例如訪問www.qq.com,提取host的內容為www.qq.com,而判斷這個網域名稱是否備案,是通過qq.com進行,因此需要從host內容中提取出根網域名稱。  

遇到的問題

1、頂級網域名稱的種類存在以下不同情況,例如 www.google.com

www.google.com.cn 頂級網域名稱分別是.com 和.com.cn提取頂級名分別為google.com goolge.com.cn

2、host的長度不一,例如 api.best.com   upload.api.best.com 提取的根網域名稱都為best.com

解決思路:  

由於程式是用c語言實現,所以就寫乙個c語言的lib庫了。首先頂級網域名稱是公開的,可以參考維基百科 使用hash表將頂級網域名稱儲存起來,方便後面查詢頂級網域名稱在o(1)時間內找出來。

解析host, 例如 api.upload.qq.com 大概的思路如下:

1、先計算出網域名稱中每個點(.)在字串中的位置

2、然後根據host中點個個數提取出頂級網域名稱,判斷頂級網域名稱是否在hash表

3、找到頂級網域名稱後,再提取頂級網域名稱的根網域名稱,組合起來就組成了最終的結果

實現**放在了github上:

測試結果如下圖所示:

Python實現從url中提取網域名稱的幾種方法

這篇文章主要介紹了python實現從url中提取網域名稱的幾種方法,本文給出了3種方法實現在url中提取網域名稱的需求,需要的朋友可以參考下。從url中找到網域名稱,首先想到的是用正則,然後尋找相應的類庫。用正則解析有很多不完備的地方,url中有網域名稱,網域名稱字尾一直在不斷增加等。通過googl...

從檔案中提取數字

程式的功能是從指定的檔案中提取所有的整數,並把它們依次存入到乙個字串中 void iostest char a 50 char b 50 istrstream sin a ostrstream sout b,sizeof b ifstream file1 w1.dat ios in ios nocr...

網域名稱的解析及網域名稱根伺服器

網域名稱的管理機構icann 網際網路名稱與數字位址分配機構 the internet corporation for assigned names and numbers,icann 是乙個非營利性的國際組織,負責網際網路協議 ip 位址的空間分配 協議識別符號的指派 通用頂級網域名稱 gtld ...