基于浏览器的客户跟踪技术概述

有人问起:在用户浏览器不安装插件的情况下,有什么好的手段来跟踪并识别用户身份的唯一性,防止在诸如匿名投票中用户重复点击。

大致整理了一下思路,目前用于跟踪识别用户身份大致采用如下一些方案:

1、在用户浏览器安装诸如Activex、Applet插件来跟踪用户

通过Activex、Applet插件来获取用户PC的CPU序列号、硬盘ID、网卡MAC地址等信息来唯一识别用户身份。

优点: 由于CPU序列号、硬盘ID、网卡MAC地址等不会经常变动,因此获取的用户信息相对真实且唯一

缺点: 需要用户手动安装插件,在这木马盛行的年代,用户对安装这样的插件都较为敏感;由于像Firefox、Chrome、Safari、Opera这样的浏览器并不支持Activex;对于Applet这样的末路黄花让用户安装更加不靠谱。

2、采用Flash Cookies(Local Shared Object )技术来跟踪用户

Flash Cookies或者是Local Shared Objects利用了Flash的SharedObject 对象,其功能与浏览器中的cookies作用类似,可以用来存储相关的信息。

优点:

Flash插件的广泛性,应该95%以上的浏览器都安装了Flash插件,能够较好支持Firefox、Chrome、Safari、Opera等浏览器;
Flash Cookies相对于浏览器Cookie可以存储更多的数据,普通浏览器的cookies不能储存超过4K的资料,而Flash cookies则能储存达100K;
Flash Cookies的跨浏览器,Flash Cookie可以跨Firefox、Chrome、Safari、Opera,用户在同一台PC用多个浏览器访问同一网站(同一个domain)后,Flash Cookies都一样,因此可以唯一识别一台PC。
清除或禁用浏览器Cookies时候,不会影响Flash Cookies。
因此Flash Cookie是一个较好跟踪用户的手段,值得推荐。
   
  按照Wikipedia
的说法,查看一下自己的操作系统Flash cookie的存储路径,可以看到包括:google.com,macromedia.com,msn.com,yahoo.com,ebay.com等都采用了类似的方案。
    尽管用户也可以安装诸如BetterPrivacy
 这样的插件或手工直接删除FlashCookie,但目前而言,知道Flash Cookie的用户较少。

3、通过HTTP Cookie来跟踪用户

    优点
:大部分浏览器都支持,不需要任何单独插件
    缺点
:在同一台PC上,不同的浏览器有不同的Cookie;Cookie很容易被用户手工清除或禁用;

4、通过IP地址来跟踪

   优点
:直接在服务器端获取,不需要客户端任何支持
   缺点
:对于在局域网内通过了NAT地址转换及使用了Proxy的用户,通过所获得的IP地址并不是很准确,不能正确识别同一个用户。

5、类HTML5的客户端本地存储方案

   HTML5规范提供了浏览器本地存储解决方案,这篇文章
总结了各种浏览器所采用的类似于HTML 5的本地存储方案(不一定与HTML5 兼容)
  Firefox 3.5, Safari 4, IE8:
 
HTML5 localStorage

; these modern browsers all support the core localStorage functionality defined in the HTML5 draft. 
  Firefox 2.x and 3.0
: 
Gecko globalStorage

, a very early implementation similar to HTML5’s localStorage. 
  Safari 3.1 & 3.2
: 
HTML5 Database Storage

, because Safari 3.1 and 3.2 don’t support HTML5 localStorage. 
  IE6, IE7
: 
userData persistence

, a rarely used IE feature for associating string data with an element on a web page and persisting it between pageviews. 
  Google Chrome
: 
Gears Database API

, which is built into Chrome and thus doesn’t require a separate install. Surprisingly, Chrome doesn’t yet natively support any form of HTML5 Storage.

6、客户端本地存储方案

   基于各种浏览器客户端本地存储机制的问题,一些项目提供了客户端的本地存储机制,包括:PersistJSDojo StorageGoogle GearsTaffy DBYUI Storage Utility
等。
   这篇文章
对这些机制做了比较好的总结:
Dojo Storage

* 优点:配备的文档较全,有较大的用户基础
* 缺点:如果安装有Flash插件,只对Internet Explorer进行支持
* 缺点:不支持基于WebKit的浏览器 (像Safari)
* 缺点:运行时还需要其他Dojo库

Google Gears

* 优点:有Google作支持,像Dojo一样,配备的文档较全
* 缺点:还没有广泛部署
* 缺点:插件没安装就不能运行

相比较而言,PersistJS项目试图对各种浏览器的本地存储机制进行封装,保证了API的一致性,是什么让PersistJS更好?

* 很小(gzip压缩之后只有3k)
* API一致,与所用浏览器无关
* 无须浏览器插件和其它库
* 当所用浏览器不支持时,会退而使用cookie
* 声称支持IE、Firefox和Safari的新版本

Trying to address the need for client-side storage sans browser-specific techniques or browser plugins, Paul has created an abstraction layer that allows developers to use most of the most common client-side storage mechanisms via a common interface. It currently supports persistent client-side storage through the following backends:

  • flash: Flash 8 persistent storage.
  • gears: Google Gears-based persistent storage.
  • localstorage: HTML5 draft storage.
  • whatwg_db: HTML5 draft database storage.
  • globalstorage: HTML5 draft storage (old spec).
  • ie: Internet Explorer userdata behaviors.
  • cookie: Cookie-based persistent storage.

Other notables features include:

  • Small (9.3k minified, 3k gzipped)
  • Standalone: Does not need any additional browser plugins or
    JavaScript libraries to work on the vast majority of current
    browsers.
  • Consistent: Provides a consistent, opaque API, regardless of
    the browser.
  • Extensible: Custom backends can be added easily.
  • Backwards Compatible: Can fall back to flash or cookies if no
    client-side storage solution for the given browser is available.
  • Forwards Compatible: Supports the upcoming versions of Internet
    Explorer, Firefox, and Safari (Opera too, if you have Flash).
  • Unobtrusive: Capability testing rather than browser detection, so
    newer standards-compliant browsers will automatically be supported.

这样看来,采用PersistJS(或YUI Storage Utility ,但YUI包还是太沉)是最优的方案,其次是Flash Cookie,然后是Cookie+IP的方案。

7、参考资料:

    http://en.wikipedia.org/wiki/Local_Shared_Object
    http://pablotron.org/?cid=1557

    http://developer.yahoo.com/yui/storage/

    http://www.infoq.com/news/2008/05/persistJS
    http://www.infoq.com/cn/news/2008/06/persistJS
    http://wonko.com/post/search-pad-browser-storage
    http://www.qgy18.com/2008/05/localstorage/
    http://safe.csdn.net/n/20091103/5083.html

站内标签: flash cookie,cookie,html5,PersistJS,Dojo Storage,Google Gears
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值