Cookie的酸甜苦辣

Cookie的酸甜苦辣 
 
因特网的Cookie技术极其简单,却有着旺盛的生命力。随着2000年二月份网络隐私权开始受到重视,Cookie引起了人们的注意,有关的辩论至今仍在继续。从一方面来说,Cookie使得浏览网页变得更容易,几乎所有的主要的网站设计者都使用了Cookie,因为他们想为浏览网站的人提供一个更好的浏览环境,同时也能更加准确地收集访客的信息。但是,对于用户来说,更需要了解一些《Cookie基础知识》,知道什么是Cookie,Cookie到底能做什么,Cookie会泄露出什么?这样才能在自由上网冲浪的同时,更好的保护自己的隐私不被别人侵犯。

从《Cookie的传递流程》来分析,Cookie数据仅仅是Web站点在浏览者硬盘上存储的“名/值”数据对,这就是Cookie的所有内容。Web站点保存了数据,随后又把它取回,一个Web站点只能取得它保存在你电脑上的内容,无法偷窥别的Cookie,更不要说电脑上其他的数据,但是,这样就能让浏览者高枕无忧吗?

如果认真的研究一下《Web站点怎样使用Cookie》就会发现,网站使用Cookie能够精确地知道有多少人浏览过,可以保存用户的设置,按照用户的喜好定制网页外观,一些电子商务站点还能够实现一些像“购物篮”、“快速结账”之类的东西,Cookie确能做到一些在其它情况下不可能实现的事情。但是Cookie并没有一个完美的状态机制,《Cookie的不足之处》就在于当多人共用一台电脑时,当Cookie被删除时,当一人使用多台电脑时,它就会带给您这样或那样的不便。

Cookie有时给您方便,有时却又让您不方便,也许这正是Cookie的酸甜苦辣所在,但这并不是很多人《不喜欢Cookie的原因》。对一个用户来说,网站不光能跟踪您购物,而且还能知道您浏览过的网页、点击过的广告条等。如果您接着在购买商品时输入了您的姓名和地址,网站很可能会得到更多关于您信息,这让许多人感到不舒服。另一方面,近来某些网站确实能建立可被多网站存取的Cookie,同时这些网站希望借此获利。所以,这造成了Cookie被一些人强烈抵触。

Cookie基础知识

因特网的Cookie技术极其简单,却有着旺盛的生命力。Cookie开始引起众人的注意是从2000年二月份随着网络隐私权的提出开始的,有关的辩论至今仍在继续。从另一方面来说,Cookie使得浏览网页更容易了。几乎所有的主要的网站设计者都使用了Cookie,因为他们想为浏览网站的人提供一个更好的浏览环境,同时也能更加准确地收集访客的信息。

家颇有影响的报纸上曾刊登了一篇很有深度的关于网络隐私的文章,上面对于Cookie的定义是这样的:

“Cookie是Web网站放在您的硬盘上的程序。它守在您的电脑里,搜集您的信息以及您在因特网上所做的任何事情,当Web站点需要的时候它能够下载所有这些搜集到的信息。”

像这样的定义在报刊中相当普遍。问题是,它的定义犯了很大的错误。Cookie不是程序,而且它不能像程序一样地运行,所以它无法为自己搜集任何信息。它也不能从您的电脑上取得您的任何个人资料。

Cookie的比较确切的定义应该是这个样子:

“Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。信息的片断以‘名/值’对(name-value pairs)的形式储存。”

举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。

如果您使用IE浏览器访问Web,您会看到所有保存在您的硬盘上的Cookie。它们最常存放的地方是:c:/windows/cookies(在Win 2000中则是C:/Documents and Settings/您的用户名/Cookies——作者注)。在我的机器上共有165个文件。每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的Web站点的信息。

在这个文件夹里的每个Cookie文件都是一个简单而又普通的文本文件。透过文件名,您可以看到是哪个Web站点在您的机器上放置了Cookie(当然站点信息在文件里也有保存)。您也能双击打开每一个Cookie文件。

比如,我访问了goto.com,而且这个站点在我的电脑上放了个Cookie。goto.com的Cookie文件包含了这样的内容:

UserID A9A3BECE0563982D www.goto.com/

goto.com在我的电脑上存入了一个单一的“名/值”对。“名/值”对的“名”是UserID,“值”是A9A3BECE0563982D。在我第一次访问goto.com的时候,该网站为我分配了一个唯一的ID并存在我的电脑里。

(注:除了上面举例的“名/值”对,可能会有其它的“名/值”对同时保存下来。那是浏览器的一些内部信息,一般用户不必多做了解。)

Amazon.com在我的电脑上保存了稍稍多一些的信息。当我查看Amazon在我的电脑上建立的Cookie文件时,它包含以下内容:

session-id-time 954242000 amazon.com/

session-id 002-4135256-7625846 amazon.com/

x-main eKQIfwnxuF7qtmX52x6VWAXh@Ih6Uo5H amazon.com/

ubid-main 077-9263437-9645324 amazon.com/

以上内容显示出Amazon存储了一个主用户ID ubid-main,一个标记每次任务的ID session-id及任务发生的时间session-id-time。还有一个x-main,不知道是什么。

大多数的网站在您的电脑上只保存一条信息,即用户ID。但一个站点可以用Cookie存储的“名/值”对的最大数目没有任何限制。

一个“名/值”对仅仅是一条命名的数据,它不是程序,也不能“做”任何事情。一个网站只能取得它放在您的电脑中的信息,它无法从其它的Cookie文件中取得信息,也无法得到您的电脑上的其它任何东西。
 

Cookie的传递流程

正如以前介绍的那样,Cookie数据仅仅是Web站点在浏览者硬盘上存储的“名/值”数据对。这就是Cookie的所有内容。Web站点保存了数据,随后又把它取回。一个Web站点只能取得它保存在你电脑上的内容,无法偷窥别的Cookie,更不要说电脑上其他的数据。

Cookie数据的流动过程如下:

·如果在浏览器上键入了一个Web站点的URL,浏览器向Web站点请求读取网页。比如,您输入了:

http://www.amazon.com

浏览器将从Amazon的服务器读取它的主页。

·在做上面工作的同时,浏览器将从电脑上寻找Amazon网站设置的Cookie文件。如果找到了Amazon的Cookie文件,浏览器会把文件中的所有“名/值”对同先前的URL一同发给Amazon服务器。如果没有找到,就不发送Cookie数据。

·Amazon服务器接收Cookie数据和对网页的请求。如果存在“名/值”对,Amazon将使用它。

·如果没有收到“名/值”对,Amazon知道您在此之前没有访问过它的站点,服务器会为您创建一个新的ID放进Amazon的数据库中,然后把“名/值”对放在传回的网页的头信息里传给您。您的浏览器将在硬盘上保存“名/值”对。

·每当您再次访问网站时,网站服务器会改变“名/值”对或增加新的“名/值”对。

另外,服务器会随着“名/值”对发送一些其他信息。其一是生存期(Expiration date);还有一个是路径(网站借此把不同的Cookie值与不同的网站部位关联起来)。

您有权控制这个过程。您可以设置一个选项让浏览器在收到网站发来的“名/值”对时提醒您,由您决定是否接受。


Web站点怎样使用Cookie

Cookie解决了网站建设人员的一个大难题,它允许一个网站在您的机器上保存网站相关信息,从而网站可以记住浏览器上一次所处的状态。用户ID是一种简单的状态信息——如果您的电脑上有ID存在,网站会知道您此前访问过它。

Web网站利用Cookie的方式各不相同。下面是几个最为常见的例子:

1.网站能够精确地知道有多少人浏览过。

由于代理服务器、缓存等的使用,唯一能帮助网站精确统计来访人数的方法就是为每个访问者建立一个唯一的ID。使用Cookie,网站可以完成以下工作:

●测定多少人访问过;

●测定访问者有多少是新用户(即第一次来访),多少是老用户;

●测定一个用户多久访问一次网站。

网站使用数据库达到上述目标。当一个用户第一次访问时,网站在数据库中建立一个新的ID,并把ID通过Cookie传送给用户。用户再次来访时,网站把该用户ID对应的计数器加1,得到用户的来访次数。

2.网站保存用户的设置,按照用户的喜好定制网页外观。

例如,假如你访问 msn.com,它为你提供了改变网页内容、布局和颜色的能力,允许你输入自己的邮政编码,为你提供特定的天气预报。输入邮政编码后,MSN的Cookie文件中将加入这样的“名/值”对:

WEAT CC=NC%5FRaleigh%2DDurham?ION= www.msn.com/

(本例中,邮编是Raleigh, NC)

大多数网站只在Cookie里保存用户ID,而在网站数据库中存储用户设置参数。当然在“名/值”对里保存这些参数也是一种办法(稍后我们将讨论后一种方法有什么不妥)。

3.电子商务站点能够实现一些像“购物篮”、“快速结账”之类的东西。

Cookie里面包含了一个ID,当你往购物篮中放了新东西时网站即能记录下来。你放进购物篮里的每一件东西保存在网站的数据库里的对应着你的ID的记录。当你“买单”时,网站通过检索数据库中你的所有选择就能知道你的购物篮里有些什么。假如没有Cookie或类似的机制,上面的工作将很难完成。

在所有的示例中,网站的数据库能够保存的有你所选择的内容、你浏览过的网页、你在表单里填写的信息等。所有这些信息保存在站点的数据库中。多数情况下,包含有你的唯一ID的Cookie保存在你的电脑里。

下面的实例用来演示Cookie和数据库的组合能够做些什么。我们来借助howcookieworks.com网站(一个假设网站)的服务器来讲述工作过程:

在你第一次访问 http://www.howcookieworks.com 时,服务器为你创建了一个唯一ID并在你的电脑上保存了一个包含有该ID的Cookie文件。举例来说,在我现在使用的电脑上,我所看到的cookie文件的内容是:

user 35005 www.howcookieworks.com/

数字35005并没有什么稀奇——它仅仅是一个整数,它每次随着访客的到来而增加。我是自网站建立以来的第35005个用户。用户的ID可以被设计得很精细,许多网站使用超过20位数字的ID。

现在,无论何时访问这个网站上的任何网页,浏览器会把包含有你的ID的Cookie发回服务器。然后服务器在数据库中保存一条记录,包括你的ID、网页的URL以及下载网页的时间。


Cookie的不足之处

Cookie并不是一个完美的状态机制,但它的确能做到一些在其它情况下不可能实现的事情。本期我们讲述Cookie的几个不够完美的方面。

·多人共用一台电脑时

任何公共场合的电脑以及许多在办公室或家里使用的电脑,同时被两个以上的人使用。假如说您用一台公用电脑(比如网吧)从一家网上超市购物。网上超市会在这台机器上留下一个Cookie,将来可能会有某个人试图使用您的账户购物。这就是网上超市为什么会在这个问题上强力警告的原因。尽管如此,仍然有出错的可能。如,有一次我用妻子的电脑从Amazon上买了些东西,后来,她访问了Amazon并点击了“one-click”,却没有意识到它确实允许仅仅通过一次单击购买一本书。

在一些使用多用户操作系统如Windows NT或UNIX的电脑上,这并不会成为一个问题。不同的账户的Cookie分别放在不同的地方。在别的一些操作系统中,虽然也有简单的账户设置,但并不能解决这一问题。

·Cookie被删除时

假如您因为浏览器不能正常工作打电话请求技术支持,技术支持人员要您做的第一件事可能就是删除您电脑上的所有临时的Internet文件。当您这么做的时候,您就会丢掉所有的Cookie文件。

现在,当您再次访问一个网站时,网站会认为您是一位新用户并分配给您一个新的用户ID以及一个新的Cookie。结果将会造成网站统计的新老用户比发生偏差,而您也难以恢复过去保存的参数选择。这就是有些情况下为什么网站会要求您注册的原因——如果您以一个用户和口令注册了,您可以在丢失Cookie文件的情况下重新登录,并且恢复您的参数选择。如果参数保存在用户的机器上,那么恢复起来仍然是不可能。这就是为什么现在许多网站把所有用户的信息存在中央数据库中而仅在用户电脑里保存一个ID号的原因。

如果您删除了您的How Stuff Works的Cookie文件,再次访问前面指定的history.php URL,您将发现How Stuff Works没有关于您的任何历史记录。网站只有为您建立一个新的ID,而新ID在数据库里还没有对应历史数据保存。

·一人使用多台电脑时

有的人一天之中经常使用一台以上的电脑。举例来说,我在办公室里有一台电脑,家里有一台,在路上还有一部笔记本电脑可以用。除非网站使用了特别的技术来解决这一问题,我将会有三个不同的Cookie文件在这三台机器上。我在三台机器上访问过的任何网站将会把我看成三个不同的用户。我必须要三次设置同样的参数,这有些讨厌。再次说明,一个支持注册并集中保存用户参数的网站会使我很容易地在三台机器上拥有同一个账户,不过网站设计人员必须要在设计站点的时候就要做好安排。

在前一节的例子中,如果您在一台机器上访问历史记录的URL然后在另一台机器上访问,您会发现您的历史记录列表是不同的。这是因为服务器为您在两台机器上建立了两个ID。

对于这些问题没有更好的解决办法,除非要求用户注册并把每件东西保存在中心数据库中。

当您在How Stuff Works注册系统注册之后,问题解决了:网站记住了您的Cookie值并把它和您的注册信息一同保存。如果您从任何其它的电脑(或一台丢失了Cookie文件的电脑)上登录,服务器将修改那台电脑上的Cookie文件以包含和您的注册信息相关联的ID。您将会在多台电脑上拥有同一个ID值。


不喜欢Cookie的原因

有两方面的原因导致了对于Cookie的强烈抵触:

●第一个是多年以来困扰消费者的问题——失控的趋势。

假如您从一个传统的邮寄公司邮购了某件商品,邮寄公司从您的订单得到了您的姓名、地址以及电话号码,也知道您所订购的商品。它可能把您的个人信息卖给别的可能想向您推销类似商品的公司。这成为垃圾邮件(这里指现实生活中的邮件,而非电子邮件)和广告电话的根源。

对一个Web网站来说,网站不光跟踪您购物,而且还知道您浏览过的网页、点击过的广告条等。如果您接着在购买商品时输入了您的姓名和地址,网站很可能会得到您比前面所说的传统邮寄公司知道的多得多的信息。跟踪因此而大大的精确了,这让许多人感到不舒服。

不同的网站有着不同的政策。有些网站有着严格的隐私政策,不会向第三方出卖或共享任何用户信息。不过,它仍然可以统计出哪一个网页被最频繁地浏览到,这样的数据可以从数据库中提取出来。

●第二个方面的原因来自近来发生的事情——某些网站确实能建立可被多网站存取的Cookie,同时这些网站希望借此获利。

我们假设许多公司在它们的网站上使用由A公司提供的广告条。A公司能够在网页上放置极小的GIF文件1×1 像素,并且利用这种方法取出您电脑上的Cookie。同时A公司跟踪您在多个网站上的活动(它可能会看到您在搜索引擎上输入的字符串,这主要源于某些搜索引擎的实现方式)。因为它能从很多网站收集到很多关于您的信息,所以可以建立一个匿名的但非常丰富的“素描”库Profiles。

假如A公司在这条路上走得更远一些——它瞄准一个公司,威胁说要把这些匿名资料库卖掉。对于大多数人来说,这不啻于是一种间谍行径(实际上,已经有公司做了这样的事情)。

A公司处于一个能够做到上面这些的独一无二的位置,因为它们在很多站点上提供广告条。对独立的网站来说,跨站点的跟踪并不是一个通用的功能,因为Cookie是针对特定站点的。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值