目录

一、使用HTTP首部

1、web请求的构成

2、不同浏览器的请求头

3、移动设备确定操作系统的工具

二、使用DOM属性

1、DOM属性是否存在

2、使用DOM属性值

三、基于软件bug

四、基于浏览器特有行为


在实际攻击浏览器之前,首先必须确切知晓目标使用的浏览器类型及版本。确定这些信息的过程叫做采集指纹

一、使用HTTP首部

每一个Http请求和响应中都包含HTTP首部,它随同每一个Web请求发送的信息,详细描述了浏览器支持的特性、请求的URL以及主机名和其他信息。这些首部可以帮助浏览器与服务器之间就如何传输信息达成一致,同时共享网页本身内容之外的有关网页的信息和数据。

1、web请求的构成

request 浏览器指纹 如何获取浏览器指纹_浏览器指纹

在火狐浏览器中打开http://echo.opera.com,就可以看到浏览器在请求中发送给服务器的首部信息。

第一行通常叫请求行,包括一个动词、一个位置和一个协议的版本号。动词表示浏览器想干什么,比如:GET、POST、HEAD。

Host首部是第一个,通过它可以看大正在连接的主机是echo.opera.com。

UA首部信息最为丰富,但是也最容易被造假。包含底层操作系统的描述符、布局引擎等。

其他首部表示通信参数,其中Accept首部表示浏览器将接受什么类型的信息来作为响应,Accept-Language首部表示期望的语言。Accept-Encoding首部表示为节省流量最合适的数据压缩方式,Connection首部表示它支持一次连接多次请求。

这些首部通常都以特定顺序发送,不过由于浏览器版本不同,它们的顺序也可能发生变化。

2、不同浏览器的请求头

request 浏览器指纹 如何获取浏览器指纹_浏览器指纹_02

这是在IE浏览器中打开http://echo.opera.com的样子。可以看到有很多不同。

看到这些信息的顺序时,就可以判断是什么浏览器了。更有意思的是,并非所有IE版本发送这些首部的顺序都相同

3、移动设备确定操作系统的工具

Anthony Hand的MobileESP Project为识别移动设备提供轻量级的API,包括了Ruby、PHP、Python、ASP.NET在内的多种语言。

二、使用DOM属性

通过查看DOM,可以看到浏览器保存的正在浏览的页面信息,包括显示在屏幕上的文档信息,显示器分辨率、导航信息等。由于不同浏览器支持不同的特性,因此查看DOM有助于了解浏览器特别支持的特性。通过和已知的浏览器特性比较,可以进一步缩小浏览器类型与版本号的范围。

1、DOM属性是否存在

访问http:webbrowsercompatibility.com/dom/desktop/,可以看到DOM属性的差异,这个网站提供了不同浏览器版本与相对应DOM特性的信息,让开发者了解某项功能是否得到了全部浏览器的支持。

在查询DOM信息时,可能会得到下面4种响应结果:

Undefined,原因是属性不存在

Null或NaN,原因是属性未设置

Unkowned,原因是属性被废弃或需要ActiveX(仅限IE)

属性的值

2、使用DOM属性值

根据DOM属性存在与否判断浏览器版本仅是识别浏览器的一种方法,要更全面的了解浏览器,还应进一步取得DOM中变量的值。不同的浏览器中,某些DOM属性值由于继承自浏览器本身,并不容易改变,而UA字符串很容易修改,我们可以在windows.navigator.useragent字段中查看真正的UA名称。

三、基于软件bug

这里所说的bug并不是指涉及安全问题的功能,而是指可能存在于某个浏览器的特定版本,然后在后续版本中被修复。触发这些bug并辅以相应的修复版本信息,就可以可靠的确定浏览器提供商和版本。

四、基于浏览器特有行为

基于浏览器特有行为与基于bug类似,都与特定浏览器或浏览器的特定版本相关。

所谓特有行为,可能是某浏览器支持某些特殊元素,或者在某种情况下Javascripts的某个函数会返回特殊的值。