劉文峰, 方濱興, 張文佳
(哈爾濱工業大學 計算機科學與技術學院, 哈爾濱 150001 )
在互聯網中,通用頂級域名(global top level domain,gTLD)的分配由互聯網名稱與數字地址分配機構(The Internet Corporation for Assigned Names and Numbers,ICANN)負責。為滿足互聯網空間進一步發展的需要,2011年ICANN通過了新通用頂級域名(New gTLD)批案,宣布放開通用頂級域名的注冊限制[1],蘊含著巨大的商業價值;同時,對非ASCII字符的國際化域名(Internationalized Domain Names, IDN)的開放注冊也推動了域名服務機構向國際化發展。
2012~2015年,Halvorson等人[2-4]通過DNS區文件、DNS查詢、WHOIS注冊記錄和網頁內容等多種數據源,分析了新頂級域的域名注冊行為。2016年,ICANN第58次會議發布了“中文域名普遍接受性測試報告”[5],對中國大陸地區互聯網環境下的中文普遍適用性情況進行了測試。
不同瀏覽器對新頂級域名的識別情況可能不同,然而至今沒有相關工作給出針對新頂級域名在多個Web瀏覽器中的測量結果。本文的工作是從識別、解析和正確顯示3個測量指標出發,測量根據百度統計的瀏覽器市場份額[6]排名前十的Web瀏覽器對新頂級域名的支持程度,從而刻畫出新頂級域名在Web瀏覽器中的表現。
針對新頂級域名在Web瀏覽器中的行為研究面臨如下3個挑戰:
(1)高覆蓋率:測試頂級域覆蓋了虛擬新頂級域和真實新頂級域兩種類型。
(2)多Web瀏覽器通用的自動化技術:由于測試對象為多個瀏覽器,需要設計一種不局限于特定瀏覽器的通用自動化技術。
(3)全面的IDN正確顯示統計:根據IDNA 2008規范,瀏覽器地址欄應自動識別IDN域名,并將其轉化為可被用戶識別的文字[5]。至今仍沒有相關工作對IDN顯示的情況進行全面的測量。
本文結合測試域名形式、瀏覽器行為模式等因素,設計和實現了基于GUI自動化技術的瀏覽器自動化測試系統,在10個瀏覽器上測試了1.1節中的虛擬頂級域和真實頂級域。應用2.1節中的測試結果分類方法,從捕獲的訪問信息中提取瀏覽器對新頂級域名的識別、解析和顯示情況。結合在虛擬頂級域和真實頂級域中的測試結果,得到3種瀏覽器行為特征。本文還設計了衡量瀏覽器解析能力的評分模型,并給出對測試瀏覽器的評分結果。
測試域名包含2部分,均為不添加http://協議名的二級域名。對此可得闡釋論述如下。
(1)虛擬頂級域:在實驗DNS根服務器中配置的實驗域名www.hitnis,info.hitnis,info.root,www.hit。這部分測試域名的頂級域在原根中均不存在,僅存在于實驗DNS服務器。
(2)真實頂級域:ICANN公開的全部1 563個頂級域[7],對其添加“nic”前綴構造二級域名進行測試。
本工作使用Microsoft .NET框架提供的自動化測試工具UI Automation(UIA)實現GUI自動化測試,并將UIA中常用控制模式的調用封裝進自動化測試類UI Control中,步驟流程詳見如下:
(1)在屏幕閱讀器UI Spy中讀取子節點屬性值。
(2)根據查詢屬性類型和(1)中獲取的屬性值生成子節點查詢條件。
(3)結合查詢條件和查詢方式,在UI Tree中進行查詢。
(4)調用子節點相關控制模式實現目標功能。
UI Control提取出這些公共操作并做二次封裝,如圖1所示。
自動化測試類UI Control主要實現了對以下內容的二次封裝:針對具有特定值的特定屬性的節點進行特定pattern調用的封裝;查詢子節點的條件生成的封裝和查詢過程的封裝。

圖1 封裝流程圖
自動化測試類UI Control實現了超時檢測功能,檢測因系統阻塞或網絡異常造成控件獲取失敗的問題。在每一步自動化執行操作結束時,設置定時器檢測一定時間范圍內控件獲取是否成功;成功則執行下一步,否則延遲一段時間再重新嘗試獲取。超時檢測功能偽代碼具體如下。
Begin
輸入 AutomationElementhandle, intmaxtime
i→0
whilehandle==null
do重新獲取handle,掛起線程maxtime/10毫秒
i→i+1
IFi>10 則退出循環
end
IFi>10 則returnfalse
否則returntrue
End
本工作提出針對發送域名過程的優化方法:調用.NET框架下的Sendkeys類向當前窗口發送測試域名。發送域名前需要使瀏覽器窗口成為頂層活動窗口,針對不同瀏覽器實現了2種設置焦點的方式。一種是發送WM_SETFOCUS消息到接受鍵盤焦點的窗口;另一種是基于Windows API的焦點獲取方法,計算控件中心點坐標并調用mouse_event方法模擬鼠標點擊操作。
本工作還實現了對測試域名進行檢測的功能,檢測到輸入域名中的分隔符時,調用ToUpper()方法單獨發送,保證了發送URL中分隔符的正確性。
1.4.1 瀏覽器自動化測試系統設計
應用1.2節和1.3節中的GUI自動化技術,設計和實現了針對新頂級域名在瀏覽器中的行為的自動化測試系統。系統架構圖如圖2所示。

圖2 系統架構圖
由圖2可知,本次研發系統包含5個模塊,對此可做解析分述如下。
(1)交互模塊:實現用戶交互服務,包含測試瀏覽器選擇、測試域名輸入和測試數據展示。
(2)訪問信息捕獲模塊:使用UI Control自動化捕獲瀏覽器地址欄內容和訪問過程中的數據包。
(3)瀏覽器自動訪問模塊:使用UI Control在瀏覽器隱私模式下對測試新頂級域名進行自動化測試。
(4)訪問信息提取和分析模塊:從捕獲到的數據包中提取瀏覽器對測試域名的DNS解析情況;對捕獲到的瀏覽器地址欄內容進行分析,從中提取瀏覽器訪問特征,如是否進行搜索。
(5)運行檢測模塊:設定完成自動化訪問流程的時間限制,保障測試系統可持續運行。
1.4.2 系統工作流程
瀏覽器自動化測試系統工作流程如下:
(1)測試前準備:選擇測試域名和測試瀏覽器;啟動cmd進程,輸入ipconfig/flushdns命令清除系統緩存;啟動新線程,在線程中執行自動化訪問操作。
(2)啟動訪問:啟動wireshark進程捕獲訪問數據;啟動測試瀏覽器進程,開啟隱私窗口訪問。
(3)信息提取:捕獲訪問過程中的瀏覽器地址欄內容,檢測捕獲數據包的重復域名和錯誤格式,提取出瀏覽器對頂級域進行解析的數據和瀏覽器進行搜索的數據。
(4)運行檢測:每間隔一段時間檢測自動化訪問線程是否執行結束,若超時仍未結束,則關閉相關的瀏覽器及wireshark進程,重新測試。
對10個測試瀏覽器進行了匿名化處理,其詳細信息見表1。

表1 瀏覽器版本信息
從瀏覽器的地址欄內容可以提取出瀏覽器對測試域名是否跳轉搜索。經測試發現,10個瀏覽器表現出如下2種行為模式,詳述如下。
(1)模式1。該模式有如下特征:
① 進行域名查詢的情況下,地址欄內容即為測試域名,部分瀏覽器會自動對輸入域名進行調整,例如:域名補充、協議名補充、將域名轉成punycode編碼等。
② 在跳轉搜索的情況下,瀏覽器地址欄則顯示為搜索引擎和域名的組合。
(2)模式2。該模式有如下特征:
① 在跳轉搜索的情況下,地址欄內容與測試域名一致,某些國際域名還會出現地址欄顯示亂碼的情形。
② 瀏覽器對輸入域名進行查詢時,地址欄內容會帶有Http前綴,某些國際域名會顯示為轉碼成punycode編碼的結果。
針對每種模式設計不同分類方法,記為分類方法1、2,用于提取瀏覽器行為。
對于匹配模式1的瀏覽器,采取圖3的分類方法1,從捕獲的地址欄內容中提取瀏覽器行為。

圖3 分類方法1
將分類結果按照其對應瀏覽器行為的特征重新歸類,可統計出3種行為特征,分別為:search、addHTTP、normal。其中,search代表進行搜索,包含分類2;addHTTP代表進行訪問且地址欄自動補充協議名,包含分類3;normal代表進行了訪問且地址欄未自動補充協議名,包含分類1、4。
特別地,由于瀏覽器C未能正確識別阿拉伯語域名,在測試時會彈出提示窗口拒絕訪問。error統計了這部分異常域名。
對于匹配模式2的瀏覽器,采取圖4的分類方法2從捕獲的地址欄內容中提取瀏覽器行為。

圖4 分類方法2
同理,將分類結果按照其行為特征重新歸類得到3種行為特征:search包含分類2、5,addHTTP包含分類1、4,error代表地址欄編碼格式為亂碼,包含分類3。
測試瀏覽器中除瀏覽器J外的測試瀏覽器均適用于分類方法1。
針對4個測試頂級域在10個瀏覽器中的測試結果見表2,包含DNS解析情況和瀏覽器跳轉搜索情況。

表2 虛擬頂級域測試結果
由此可以看出,20%的瀏覽器不對虛擬頂級域進行檢查,識別為網頁訪問;30%的瀏覽器不識別虛擬頂級域,跳轉搜索,但會對虛擬頂級域進行解析;50%的瀏覽器不識別虛擬頂級域,跳轉搜索,但不進行解析。
部分瀏覽器對國際化域名的支持不完善,地址欄不能正確顯示國際化域名,而是顯示為進行了punycode轉碼后的形式,這種行為記為decode。在真實頂級域中,測試瀏覽器對進行解析的域名體現出的具體行為分類結果見表3。
綜合上述分析,此處對瀏覽器行為特征做研究總述如下:
(1)部分瀏覽器不識別部分測試域名,跳轉到搜索,且對全部跳轉到搜索的域名都不進行DNS解析。如A、D、E、F、I。
(2)部分瀏覽器不識別部分測試域名,跳轉到搜索,但對跳轉到搜索的阿拉伯語域名不進行DNS解析,對其余跳轉到搜索的域名進行DNS解析。如B、C、H、J。
(3)部分瀏覽器可以識別全部測試域名,不會跳轉搜索,且對全部測試域名都進行解析。如G。
表3 已解析的真實頂級域分類結果
Tab. 3 Classification result of resoluted actual top-level domain

%
特別的是,70%的瀏覽器會對部分國際域名進行punycode轉碼后再訪問,沒有解決國際域名顯示的問題。其中,瀏覽器D轉碼比例最高。另外30%瀏覽器(B、F、I)能夠正確顯示測試的所有國際域名。
從測試結果還可以看出,C、F、I、J瀏覽器對所有訪問域名都會自動補充協議名;除G外的其他瀏覽器會對不識別為頂級域的域名跳轉搜索,E跳轉搜索的比例最小,為4.97%;I跳轉最多,為15.16%。
結合虛擬新頂級域中的測試結果可以看出,60%的測試瀏覽器在針對虛擬新頂級域和真實新頂級域的2次測試中表現出的行為特征是一致的。其余40%的瀏覽器有差異。詳見表4。
表4 虛擬和真實頂級域中測試結果對比
Tab. 4 Contrast of testing result in invented top-level domain and actual top-level domain

頂級域類型瀏覽器B、H、JCA、D、E、F、IG虛擬頂級域真實頂級域搜索并解析搜索并部分解析不搜索搜索并部分解析搜索不解析不搜索
結合瀏覽器內核版本和瀏覽器行為特征,可以看出存在一些關聯性。其中,C、G和其他測試瀏覽器代表了Gecko、Webkit和Trident三類內核,其行為特征也體現出3種分布:C不對虛擬頂級域進行檢查,直接訪問,但對不能識別的真實頂級域會跳轉搜索;G不對任何頂級域進行檢查,直接訪問;其余瀏覽器兩次測試中均會對不能識別的頂級域跳轉搜索,僅識別部分頂級域。這些結果體現了3種內核的不同行為特征分布。
根據瀏覽器對測試域名的解析情況,設計衡量瀏覽器解析能力的評分模型如下。
(1)HRR。對于每個測試瀏覽器,查看其對每個測試域名的解析情況:如果能解析,則統計該域名在其他瀏覽器中的解析情況,提出表征瀏覽器解析能力強的數值指標HRR(High Resolution Rate),如公式(1)所示:
(1)
其中,rd(Resolution Domain)表示所有測試域名中當前測試瀏覽器能解析的域名;n表示測試瀏覽器總數;b表示除當前測試瀏覽器以外的所有測試瀏覽器;b→rd表示瀏覽器b能對域名rd進行解析。
HRR含義如下:如果測試域名在其他瀏覽器中均能解析,說明對這個域名的解析情況不足以體現瀏覽器的解析能力,不統計該域名。否則,說明只有部分瀏覽器能解析該域名,那么能解析這個域名的瀏覽器越少,說明該測試瀏覽器對域名的解析能力越強。因此統計測試瀏覽器中不能解析該域名的瀏覽器的比例并累加。
(2)LRR。如果測試瀏覽器不能解析測試域名,則統計該域名在其他瀏覽器中的解析情況。提出表征瀏覽器解析能力弱的數值指標LRR(Low Resolution Rate),如公式(2)所示:
(2)
其中,nrd(No Resolution Domain)表示所有測試域名中當前測試瀏覽器不能解析的域名,b→nrd表示瀏覽器b能對域名nrd進行解析。
LRR含義如下:如果測試域名在其他瀏覽器中均不能解析,說明對這個域名的解析情況不足以說明瀏覽器解析能力,不統計該域名。否則,說明只有部分瀏覽器不能解析該域名,那么不能解析這個域名的瀏覽器越少,即表明該測試瀏覽器對域名的解析能力越弱。因此統計測試瀏覽器中能解析該域名的瀏覽器的比例并累加。
(3)瀏覽器評分RR(Resolution Rate)。 該指標可作為以解析情況衡量瀏覽器對新頂級域支持程度的評分標準。數學定義公式為:
RR=HRR-LRR.
(3)
應用評分模型得出的瀏覽器解析能力評分結果見表5。可以看出得分最高的是瀏覽器G,由表5數據可知瀏覽器G能解析全部測試域名,體現其解析能力則是最強的。得分最低的是瀏覽器I,由表5數據可知其能夠解析的域名數量是測試域名中最低的,體現其解析能力是最弱的。

表5 瀏覽器解析能力評分
本文提出一種對新頂級域名在瀏覽器中的行為進行測試和分析的方法。實驗發現,根據內核分類的不同,瀏覽器行為特征有明顯區別。10%的瀏覽器不對虛擬頂級域進行檢查,直接訪問,但對不能識別的真實頂級域會跳轉搜索。10%的瀏覽器不對任何頂級域進行檢查,直接訪問。其余80%的瀏覽器在對虛擬頂級域和真實頂級域的2次測試中均對不能識別的頂級域跳轉搜索。另外,70%的瀏覽器沒有解決國際域名正確顯示的問題。