互联网Cookie的工作原理

internet cookies
互联网Cookie引发了隐私问题,尽管它们也能让网络导航更便捷。查看热门网站图片Yagi Studio / Getty Images

大多数互联网Cookie都极其简单,但它们却已自成一体。Cookie在2000年因互联网隐私问题而受到媒体的极大关注,这场争论至今仍在继续。

另一方面,Cookie提供了使网络导航更加便捷的功能。几乎所有主要网站的设计者都使用它们,因为它们提供了更好的用户体验,并使收集关于网站访问者的准确信息变得更加容易。

广告

在本文中,我们将探讨Cookie背后的基本技术,以及它们所实现的一些功能。

Cookie基础

2000年4月,我在一份大型、受人尊敬的报纸上读到一篇关于互联网隐私的深度文章,其中包含一个关于Cookie的定义。这个定义大致是这样的:

Cookie是网站放在你硬盘上的程序。它们驻留在你的电脑上,收集关于你和你在互联网上所做的一切的信息,而且网站随时可以下载Cookie收集到的所有信息。[错误]

新闻界中这类定义相当常见。问题是,这些信息没有一个是正确的。Cookie不是程序,它们不能像程序一样运行。因此,它们无法自行收集任何信息。它们也无法从你的机器上收集关于你的任何个人信息。

广告

以下是Cookie的有效定义:Cookie是Web服务器可以存储在用户硬盘上的一段文本。Cookie允许网站在用户的机器上存储信息,并在以后检索它。这些信息以名称-值对的形式存储。

例如,一个网站可能会为每个访问者生成一个唯一的ID号码,并使用Cookie文件将该ID号码存储在每个用户的机器上。

如果你使用微软的Internet Explorer浏览网页,你可以看到你机器上存储的所有Cookie。它们最常见的存放位置是在一个名为c:windowscookies的目录中。当我查看我机器上的这个目录时,我找到了165个文件。每个文件都是一个文本文件,其中包含名称-值对,每个在我的机器上放置了Cookie的网站都有一个文件。

你可以在目录中看到,这些文件都是简单的普通文本文件。通过查看文件名(信息也存储在文件中),你可以知道是哪个网站将该文件放置在你的机器上。你可以通过点击它来打开每个文件。

例如,我访问过goto.com,该网站在我的机器上放置了一个Cookie。goto.com的Cookie文件包含以下信息:

UserID    A9A3BECE0563982D    www.goto.com/

Goto.com在我的机器上存储了一个名称-值对。该对的名称是UserID,值是A9A3BECE0563982D。我第一次访问goto.com时,该网站给我分配了一个唯一的ID值并将其存储在我的机器上。

(请注意,文件中在上面显示的三个值之后可能还有其他几个值。那是浏览器用于内部维护的信息。)

Amazon.com在我的机器上存储了更多信息。当我查看亚马逊在我机器上创建的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/

看来亚马逊在我的机器上存储了一个主用户ID、每个会话的ID以及会话开始的时间(以及一个x-main值,它可以是任何东西)。

绝大多数网站只在你的机器上存储一条信息——一个用户ID。但如果网站愿意,它可以存储许多名称-值对。

名称-值对只是一段具名的数据。它不是程序,也不能“做”任何事情。一个网站只能检索它放置在你机器上的信息。它不能检索其他Cookie文件中的信息,也不能检索你机器上的任何其他信息。

Cookie数据如何传输?

当你在网页浏览器中输入一个URL时,一个网页服务器可能会查看你的Cookie文件。
iStockphoto

正如你在上一节所看到的,Cookie数据只是Web网站存储在你硬盘上的名称-值对。Cookie数据就是这些。Web网站存储数据,然后稍后会收到它。一个Web网站只能收到它存储在你机器上的数据。它不能查看任何其他Cookie,也不能查看你机器上的任何其他内容。

数据以下列方式传输:

广告

  • 如果你在浏览器中输入一个网站的URL,你的浏览器会向该网站发送请求(请参阅Web服务器的工作原理)。例如,如果你在浏览器中输入URL http://www.amazon.com,你的浏览器将联系亚马逊的服务器并请求其主页。
  • 浏览器执行此操作时,会在您的机器上查找亚马逊设置的Cookie文件。如果找到亚马逊Cookie文件,您的浏览器会将文件中的所有名称-值对连同URL一起发送到亚马逊的服务器。如果未找到Cookie文件,则不会发送任何Cookie数据。
  • 亚马逊的Web服务器接收Cookie数据和页面请求。如果收到名称-值对,亚马逊可以使用它们。
  • 如果没有收到名称-值对,亚马逊就知道您以前没有访问过。服务器在亚马逊的数据库中为您创建一个新ID,然后将名称-值对发送到您的机器,作为其发送的网页的头部信息。您的机器将名称-值对存储在您的硬盘上。
  • 每当你访问网站并请求页面时,Web服务器都可以更改名称-值对或添加新的对。

服务器可以与名称-值对一起发送其他信息。其中之一是过期日期。另一个是路径(以便网站可以将不同的Cookie值与网站的不同部分关联起来)。

您可以控制此过程。您可以在浏览器中设置一个选项,以便浏览器在每次网站向您发送名称-值对时通知您。然后您可以接受或拒绝这些值。

网站如何使用Cookie?

Cookie的出现是为了解决网站实施者面临的一个大问题。从广义上讲,Cookie允许网站在你的机器上存储状态信息。这些信息让网站能够记住你的浏览器处于何种状态。ID就是一个简单的状态信息——如果你的机器上存在ID,网站就知道你以前访问过。这种状态就是“你的浏览器至少访问过该网站一次”,并且网站从那次访问中知道了你的ID。

网站以许多不同的方式使用Cookie。以下是一些最常见的例子:

广告

网站可以准确地确定有多少人实际访问该网站。事实证明,由于代理服务器缓存集中器等原因,网站准确计算访问者数量的唯一方法是为每个访问者设置一个带有唯一ID的Cookie。通过使用Cookie,网站可以确定有多少访问者到来,有多少是新访问者与重复访问者,以及访问者访问的频率。网站可以存储用户偏好设置,以便网站对每个访问者呈现不同的外观(通常称为个性化)。例如,如果你访问msn.com,它会提供“更改内容/布局/颜色”的功能。它还允许你输入邮政编码并获取定制的天气信息。当你输入邮政编码时,以下名称-值对会被添加到MSN的Cookie文件:

WEAT  CC=NC%5FRaleigh%2DDurham®ION=  www.msn.com/
  • 因为我住在北卡罗来纳州的罗利,所以这很合理。
  • 大多数网站似乎将此类偏好设置存储在网站的数据库中,而只将ID作为Cookie存储,但将实际值存储在名称-值对中是另一种方式(我们稍后会讨论为什么这种方法已经不再受青睐)。

电子商务网站可以实现诸如购物车“快速结账”选项之类的功能。Cookie包含一个ID,并让网站在你将不同商品添加到购物车时跟踪你。你添加到购物车的每个商品都与你的ID值一起存储在网站的数据库中。当你结账时,网站通过从数据库中检索你所有的选择来知道你购物车里有什么。没有Cookie或类似机制,就无法实现便捷的购物机制。

在所有这些例子中,请注意,数据库能够存储的是您从网站选择的项目、您从网站查看的页面、您在在线表单中提供给网站的信息等。所有信息都存储在网站的数据库中,在大多数情况下,您的计算机上只存储一个包含您唯一ID的Cookie。

Cookie的问题

Cookie不是一个完美的状态机制,但它们确实使许多原本不可能的事情成为可能。以下是导致Cookie不完美的一些因素。

  • 人们经常共用电脑 - 在公共场所使用的任何电脑,以及办公室环境或家中使用的许多电脑,都由多人共用。假设您使用一台公共电脑(例如在图书馆)从在线商店购买商品。商店会在该电脑上留下一个Cookie,之后有人可能会尝试使用您的账户从商店购买商品。商店通常会就此问题发布大量警告,这就是原因。即便如此,错误仍然可能发生。例如,我曾用妻子的电脑在亚马逊购买商品。后来,她访问亚马逊并点击了“一键购买”按钮,没有意识到它确实允许只点击一下就购买一本书。在像Windows NT或使用账户的UNIX机器上,这不是问题。账户将所有用户的Cookie分开。在其他操作系统中,账户则要宽松得多,这是一个问题。如果您尝试在公共电脑上进行上述示例,并且使用该电脑的其他人访问过十万个为什么,那么历史URL可能会显示非常长的文件列表。
  • Cookie被擦除 - 如果您的浏览器出现问题并致电技术支持,技术支持可能首先会要求您删除机器上的所有临时互联网文件。当您这样做时,您会丢失所有Cookie文件。现在当您再次访问一个网站时,该网站会认为您是一个新用户并为您分配一个新的Cookie。这会扭曲网站关于新访问者与回访者的记录,也可能使您难以恢复以前存储的偏好设置。这就是为什么在某些情况下网站会要求您注册——如果您使用用户名和密码注册,即使您丢失了Cookie文件,也可以登录并恢复您的偏好设置。如果偏好值直接存储在机器上(如上述MSN天气示例),则无法恢复。这就是为什么现在许多网站将所有用户信息存储在中央数据库中,而只在用户机器上存储一个ID值。如果您擦除了十万个为什么的Cookie文件,然后再次访问上一节中的历史URL,您会发现十万个为什么没有您的历史记录。网站必须为您创建一个新的ID和Cookie文件,并且该新ID在数据库中没有存储任何数据。(另请注意,十万个为什么注册系统允许您随时重置您的历史列表。)
  • 多台设备 - 人们通常一天中会使用不止一台设备。例如,我在办公室有一台设备,家里有一台设备,还有一台用于出差的笔记本电脑。除非网站专门设计来解决这个问题,否则我在这三台设备上将有三个独特的Cookie文件。我从这三台设备访问的任何网站都会将我视为三个独立的用户进行跟踪。三次设置偏好设置可能会很烦人。同样,一个允许注册并集中存储偏好设置的网站可能会让我很容易在三台设备上拥有相同的账户,但网站开发者在设计网站时必须对此进行规划。如果你从一台设备访问上一节中演示的历史URL,然后从另一台设备再次尝试,你会发现你的历史列表是不同的。这是因为服务器为你创建了两个ID,每台设备一个。

除了要求用户注册并将所有信息存储在中央数据库中之外,这些问题可能没有简单的解决方案。

广告

当您在十万个为什么注册系统中注册时,问题将通过以下方式解决:网站会记住您的Cookie值并将其与您的注册信息一起存储。如果您花时间从任何其他机器(或丢失了其Cookie文件的机器)登录,服务器将修改该机器上的Cookie文件,使其包含与您的注册信息关联的ID。因此,您可以拥有多台具有相同ID值的机器。

互联网上的Cookie:隐私问题

如果你已经读到这里,你可能会想,为什么媒体对Cookie和互联网隐私有如此强烈的反响。你在本文中已经看到,Cookie是良性的文本文件,而且它们在网络上提供了许多有用的功能。

造成对Cookie如此强烈反应的原因有两点:

广告

  • 第一个问题困扰消费者已有数十年。假设你从传统的邮购目录购买了商品。目录公司从你的订单中获得了你的姓名、地址和电话号码,并且也知道你购买了哪些商品。它可以将你的信息出售给其他可能想向你销售类似产品的人。这就是电话营销垃圾邮件得以实现的动力。在网站上,网站不仅可以跟踪你的购买,还可以跟踪你阅读的页面、点击的广告等。如果你随后购买了商品并输入了你的姓名和地址,网站潜在地比传统邮购公司了解你更多。这使得定向营销更加精确,这让很多人感到不舒服。不同的网站有不同的政策。十万个为什么有严格的隐私政策,除非您明确告知我们(例如,在选择加入的电子邮件程序中),否则不会向任何第三方出售或分享我们的读者的任何个人信息。我们确实会汇总信息并分发。例如,如果记者问我十万个为什么有多少访问者,或者网站上哪个页面最受欢迎,我们会从数据库中的数据创建这些汇总统计信息。
  • 第二个是互联网独有的。有些基础设施提供商实际上可以创建在多个网站上可见的Cookie。DoubleClick是这方面最著名的例子。许多公司使用DoubleClick在其网站上投放横幅广告。DoubleClick可以在网站上放置小型(1x1像素)GIF文件,这些文件允许DoubleClick在您的机器上加载Cookie。DoubleClick然后可以跟踪您在多个网站上的活动。它可能会看到您在搜索引擎中输入的搜索字符串(这更多是由于某些搜索引擎实现其系统的方式,而不是有意为之的阴险行为)。因为它可以在多个网站上收集关于您的如此多的信息,DoubleClick可以形成非常丰富的用户画像。这些用户画像仍然是匿名的,但它们很丰富。DoubleClick随后又更进一步。通过收购一家公司,DoubleClick威胁要将这些丰富的匿名用户画像与姓名和地址信息关联起来——它威胁要将它们个性化,然后出售数据。这在大多数人看来非常像是在监视,这就是引起轩然大波的原因。DoubleClick和类似的公司处于做这种事情的独特位置,因为它们在如此多的网站上投放广告。跨站分析不是单个网站可以实现的功能,因为Cookie是网站特有的。

有关互联网Cookie及相关主题的更多信息,请查看下一页的链接。