刘文峰, 方滨兴, 张文佳
(哈尔滨工业大学 计算机科学与技术学院, 哈尔滨 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%的浏览器没有解决国际域名正确显示的问题。