1. 程式人生 > >從全域名中提取根域名

從全域名中提取根域名

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

解決思路:  

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

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

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

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

測試結果如下圖所示: