網(wǎng)絡(luò)Cookie工作原理
引言
雖然大多數(shù)網(wǎng)絡(luò)Cookie使用起來相當(dāng)簡單,但是它們也有自己獨(dú)特的原理。由于涉及到互聯(lián)網(wǎng)隱私問題,Cookie從2000年就開始受到廣大媒體的關(guān)注,直到現(xiàn)在仍存在著激烈的爭論。
然而,Cookie提供了使Web更加容易導(dǎo)航的能力。幾乎每個網(wǎng)站的設(shè)計(jì)人員都會使用Cookie,因?yàn)樗鼈兡軌蛱峁└玫挠脩趔w驗(yàn),并使得收集有關(guān)網(wǎng)站訪問者的準(zhǔn)確信息變得非常容易。
在本文中,我們將了解Cookie背后的基本技術(shù)及其支持的一些功能。
Cookie基本知識
2000年4月,筆者在一家頗有規(guī)模和影響力的報(bào)紙上閱讀了一篇有關(guān)深入探討互聯(lián)網(wǎng)隱私的文章,文中對Cookie進(jìn)行了定義。定義大致是這樣的:
- Cookie是網(wǎng)站放置在硬盤上的程序。它們駐留在計(jì)算機(jī)上,用于收集有關(guān)您和您在互聯(lián)網(wǎng)上執(zhí)行的任何操作的信息,只要網(wǎng)站需要,就可以下載此Cookie收集的所有信息。
類似這樣的定義在新聞報(bào)道中相當(dāng)普遍,而問題在于所有這些信息都是錯誤的。Cookie不是程序,不能像運(yùn)行程序一樣運(yùn)行。因此,Cookie自己不能收集任何信息,也不能從您的計(jì)算機(jī)上收集與您有關(guān)的任何個人信息。
下面是Cookie的正確定義:Cookie是指Web服務(wù)器可以在用戶的硬盤上存儲的一段文本。Cookie允許網(wǎng)站將信息存儲在用戶的計(jì)算機(jī)上,并在以后檢索此信息。這些信息以名稱/值對的形式存儲。
例如,網(wǎng)站可以為每個訪問者生成唯一的ID號,并使用Cookie文件將此ID號存儲在每個用戶的計(jì)算機(jī)上。
如果使用微軟的IE瀏覽器來瀏覽頁面,則可以看到存儲在計(jì)算機(jī)上的所有Cookie。它們通常駐留在名為c:windowscookies的目錄中。當(dāng)筆者在計(jì)算機(jī)上查看該目錄時,發(fā)現(xiàn)了165個文件,每個文件都是一個包含名稱/值對的文本文件,并且筆者的計(jì)算機(jī)上存儲了與每個網(wǎng)站相對應(yīng)的一個文件。
您可以看到這個目錄中的每一個文件都是簡單的普通文本文件,通過查看文件名可以看出是哪個網(wǎng)站將該文件存儲到您的計(jì)算機(jī)上(這些信息也存儲在文件中)。通過單擊每一個文件,可以將其打開。
例如,筆者訪問過goto.com,該網(wǎng)站已將一個Cookie放置在筆者的計(jì)算機(jī)上。goto.com對應(yīng)的Cookie文件包含以下信息:
UserID A9A3BECE0563982D www.goto.com/
Goto.com已在筆者的計(jì)算機(jī)上存儲了一個名稱/值對。此名稱/值對的名稱為UserID,值為A9A3BECE0563982D。當(dāng)筆者第一次訪問goto.com時,該網(wǎng)站為筆者分配了一個唯一的ID值,并將其存儲在筆者的計(jì)算機(jī)上。
(請注意,在上面顯示的三個值之后,可能還有一些其他的值存儲在文件中。這些值是瀏覽器的管理信息。)
Amazon.com在筆者的計(jì)算機(jī)上存儲的信息更多一些。當(dāng)查看Amazon在筆者的計(jì)算機(jī)上創(chuàng)建的Cookie文件時,發(fā)現(xiàn)其中包含以下信息:
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在筆者的計(jì)算機(jī)上存儲了主用戶ID、每個會話的ID以及會話的開始時間(以及一個不知道表示什么的x-main值)。
大多數(shù)網(wǎng)站僅在計(jì)算機(jī)上存儲一條信息,即用戶ID。但是網(wǎng)站可以根據(jù)需要存儲許多名稱/值對。
名稱/值對只是命名的數(shù)據(jù)段,而不是一個程序,也不能“執(zhí)行”任何操作。網(wǎng)站只能檢索它放置在計(jì)算機(jī)上的信息,而無法檢索其他Cookie文件中的信息,也不能檢索計(jì)算機(jī)上的任何其他信息。
Cookie數(shù)據(jù)是如何移動的?
如上一節(jié)中所述,Cookie數(shù)據(jù)只是網(wǎng)站存儲在您的硬盤上的一個名稱/值對。所有Cookie數(shù)據(jù)都是這樣。網(wǎng)站存儲此數(shù)據(jù),并在以后接收此數(shù)據(jù)。一個網(wǎng)站只能接收其存儲在計(jì)算機(jī)上的數(shù)據(jù),該網(wǎng)站不能查看任何其他Cookie或計(jì)算機(jī)上的任何其他內(nèi)容。
數(shù)據(jù)將按以下方式移動:
- 如果在瀏覽器中鍵入一個網(wǎng)站的URL,則瀏覽器會向該網(wǎng)站發(fā)送相關(guān)網(wǎng)頁的請求(有關(guān)討論,請參閱Web服務(wù)器工作原理)。例如,如果在瀏覽器中鍵入URLhttp://www.amazon.com,則瀏覽器將聯(lián)系A(chǔ)mazon的服務(wù)器并請求其主頁。
- 當(dāng)瀏覽器執(zhí)行上述操作時,它會在您的計(jì)算機(jī)上尋找Amazon設(shè)置的Cookie文件。如果找到Amazon Cookie文件,瀏覽器就會將該文件中的所有名稱/值對連同URL一起發(fā)送給Amazon的服務(wù)器。如果未找到任何Cookie文件,則不會發(fā)送任何Cookie數(shù)據(jù)。
- Amazon的Web服務(wù)器將接收Cookie數(shù)據(jù)和頁面請求。如果接收到名稱/值對,Amazon就可以使用它們。
- 如果未接收到任何名稱/值對,Amazon將知道您之前從未訪問過該網(wǎng)站。服務(wù)器將在Amazon的數(shù)據(jù)庫中為您創(chuàng)建一個新ID,然后將名稱/值對放置在它發(fā)送的網(wǎng)頁的標(biāo)頭中,從而發(fā)送到您的計(jì)算機(jī)上。計(jì)算機(jī)將名稱/值對存儲在硬盤上。
- 每當(dāng)您訪問網(wǎng)站并請求頁面時,Web服務(wù)器可以更改名稱/值對或添加新對。
服務(wù)器還可以將其他一些信息連同名稱/值對一起發(fā)送,這些信息中包括到期日期。另一個信息是路徑(以便網(wǎng)站可以將不同的Cookie值與網(wǎng)站的不同部分相關(guān)聯(lián))。
您可以控制整個過程。在瀏覽器中設(shè)置一個選項(xiàng),以便每當(dāng)網(wǎng)站向您發(fā)送名稱/值對時,瀏覽器都會通知您。之后,您便可以接受或拒絕這些值。
網(wǎng)站是如何使用Cookie的?
Cookie由于為使用網(wǎng)站的人解決了一個大問題而逐漸發(fā)展起來。從廣義上說,Cookie允許網(wǎng)站在計(jì)算機(jī)上存儲狀態(tài)信息,這些信息可讓網(wǎng)站記住瀏覽器所處的狀態(tài)。ID是一條簡單的狀態(tài)信息——如果計(jì)算機(jī)上存在某個ID,則相應(yīng)網(wǎng)站就會知道您之前已訪問過該網(wǎng)站。這個狀態(tài)表明“您的瀏覽器至少已訪問該網(wǎng)站一次”,并且該網(wǎng)站可以通過那次訪問記住您的ID。
網(wǎng)站可以按照許多不同的方式使用Cookie。以下是一些最常見的示例:
- 網(wǎng)站可以準(zhǔn)確確定網(wǎng)站的實(shí)際訪問人數(shù)。研究表明,由于存在代理服務(wù)器、緩存、集中器等,網(wǎng)站用來準(zhǔn)確計(jì)算訪問者數(shù)量的唯一方法就是為每個訪問者設(shè)置一個包含唯一ID的Cookie。通過使用Cookie,網(wǎng)站可以確定:
- 訪問者人數(shù)
- 新訪問者和重復(fù)訪問者的人數(shù)對比
- 訪問者的訪問頻率
網(wǎng)站通過使用數(shù)據(jù)庫來完成此任務(wù)。當(dāng)訪問者第一次訪問網(wǎng)站時,網(wǎng)站會在數(shù)據(jù)庫中創(chuàng)建一個新ID,并將此ID作為Cookie發(fā)送。當(dāng)用戶下一次返回網(wǎng)站時,網(wǎng)站會在數(shù)據(jù)庫中將與此ID相關(guān)的計(jì)數(shù)器遞增,從而知道訪問者的返回次數(shù)。
- 網(wǎng)站可以存儲用戶首選項(xiàng),以便使此網(wǎng)站的外觀對于每一個訪問者都可以是不同的(通常稱作自定義)。例如,如果您訪問msn.com,該網(wǎng)站會為您提供“更改內(nèi)容/布局/顏色”的功能,還允許輸入您所在地區(qū)的郵政編碼來獲取自定義的天氣信息。當(dāng)您輸入郵政編碼時,下面的名稱/值對就會添加到MSN的Cookie文件中:
WEAT CC=NC%5FRaleigh%2DDurhamandREGION= www.msn.com/
由于筆者居住在北卡羅來納州羅利市,這樣的天氣預(yù)報(bào)才有意義。
大多數(shù)網(wǎng)站似乎都會將類似這樣的首選項(xiàng)存儲在網(wǎng)站的數(shù)據(jù)庫中,并僅將ID存儲為Cookie。不過,將實(shí)際值存儲在名稱/值對中是另一種實(shí)現(xiàn)方式(稍后我們將討論此方法不受歡迎的原因)。
- 電子商務(wù)網(wǎng)站可以實(shí)現(xiàn)購物車和“快速結(jié)帳”選項(xiàng)這樣的功能。Cookie包含一個ID并可讓網(wǎng)站跟蹤您向購物車中添加的不同商品。您添加到購物車中的每個商品會與您的ID值一起存儲在網(wǎng)站的數(shù)據(jù)庫中。當(dāng)您結(jié)帳時,網(wǎng)站通過從數(shù)據(jù)庫檢索您的所有選擇,就可以知道購物車中的商品。在不使用Cookie或類似對象的情況下,人們很難實(shí)現(xiàn)方便的購物機(jī)制。
在所有這些示例中,請注意,數(shù)據(jù)庫可以存儲您從網(wǎng)站選擇的商品、您從網(wǎng)站查看的頁面以及您通過在線表單提供給網(wǎng)站的信息等,所有信息都存儲在網(wǎng)站的數(shù)據(jù)庫中。在大多數(shù)情況下,存儲在計(jì)算機(jī)上的全部內(nèi)容只是一個包含您的獨(dú)特ID的Cookie。
Cookie存在的問題
Cookie使許多原本不可能的事情變?yōu)榱丝赡埽€不是一種完善的狀態(tài)機(jī)制。例如,Cookie在以下一些方面還不夠完善。
- 人們經(jīng)常共享計(jì)算機(jī)——在公共場所使用的任何計(jì)算機(jī)以及在辦公環(huán)境或家中使用的許多計(jì)算機(jī)都可以由多個人共享。假設(shè)您使用公共計(jì)算機(jī)(例如在圖書館中)從網(wǎng)上商店買東西,商店會在計(jì)算機(jī)上留下一個Cookie,這樣便導(dǎo)致其他人稍后可能會試圖使用您的帳戶從商店買東西。商店之所以通常會發(fā)布有關(guān)此問題的大量警告,原因就在于此。然而即使如此,還是會有錯誤發(fā)生。例如,筆者曾經(jīng)使用筆者妻子的計(jì)算機(jī)從亞馬遜網(wǎng)站(Amazon) 買東西,后來,當(dāng)她訪問亞馬遜網(wǎng)站并單擊“一鍵通”按鈕時,并沒有意識到只是這么單擊一下就實(shí)際上購買了一本書。
在恰當(dāng)?shù)厥褂昧藥舻腤indows NT計(jì)算機(jī)或UNIX計(jì)算機(jī)的系統(tǒng)上,則不會出現(xiàn)這類問題。帳戶可以將所有用戶的Cookie分開。然而帳戶在其他操作系統(tǒng)上太過隨意,這是個問題。
如果您在公共計(jì)算機(jī)上嘗試按照上面的例子做,并且使用該計(jì)算機(jī)的其他人已訪問過博聞網(wǎng),則歷史記錄URL可能會顯示一個長長的文件列表。
- 清除Cookie——如果您的瀏覽器出了問題并致電技術(shù)支持人員,技術(shù)支持人員可能會首先要求您清除計(jì)算機(jī)上所有的臨時網(wǎng)絡(luò)文件。執(zhí)行此操作后,您會丟失所有的Cookie文件。這時當(dāng)您再次訪問某個網(wǎng)站,該網(wǎng)站會認(rèn)為您是一個新用戶,并會為您分配一個新的Cookie。這往往會在識別新訪問者還是回訪者方面造成網(wǎng)站記錄錯誤,同時也會讓您難以恢復(fù)以前存儲的首選項(xiàng)。這就是網(wǎng)站在某些情況下要求您注冊的原因——如果您使用用戶名和密碼進(jìn)行注冊,則可以登錄并恢復(fù)首選項(xiàng),即使您丟失Cookie文件也沒有關(guān)系。如果將首選項(xiàng)的值直接存儲在計(jì)算機(jī)上(如上述MSN天氣示例),則無法進(jìn)行恢復(fù)。這就是現(xiàn)在許多網(wǎng)站將所有用戶信息存儲在一個中央數(shù)據(jù)庫中,而僅將一個ID值存儲在用戶的計(jì)算機(jī)上的原因。
如果您清除對應(yīng)于博聞網(wǎng)的Cookie文件,然后重新訪問上一節(jié)中的歷史記錄URL,則會發(fā)現(xiàn)博聞網(wǎng)沒有您的歷史記錄。網(wǎng)站必須為您創(chuàng)建一個新的ID和Cookie文件,新的ID沒有任何相關(guān)數(shù)據(jù)存儲在數(shù)據(jù)庫中。
- 多臺計(jì)算機(jī)——多臺計(jì)算機(jī)——人們經(jīng)常會在一天內(nèi)使用多臺計(jì)算機(jī)。例如,筆者在辦公室和家中各有一臺計(jì)算機(jī),還有一臺在旅途中使用的便攜式計(jì)算機(jī)。除非網(wǎng)站經(jīng)過了特別設(shè)計(jì)來解決這一問題,否則筆者這三臺計(jì)算機(jī)上會有三個不同的Cookie文件。通過這三臺計(jì)算機(jī)訪問的任何網(wǎng)站都會將筆者視為三個不同的用戶進(jìn)行跟蹤,設(shè)置三次首選項(xiàng)會有些煩人。不過,允許注冊并集中存儲首選項(xiàng)的網(wǎng)站可使筆者在三臺計(jì)算機(jī)上輕松擁有同一帳戶,但是網(wǎng)站開發(fā)人員必須在設(shè)計(jì)網(wǎng)站時做好相應(yīng)的規(guī)劃。
如果您從一臺計(jì)算機(jī)上訪問上一節(jié)中演示的歷史記錄URL,然后從另一臺計(jì)算機(jī)上再次嘗試相同的操作,則會發(fā)現(xiàn)您的歷史記錄列表是不同的。這是因?yàn)榉?wù)器為您創(chuàng)建了兩個ID,一個ID對應(yīng)于一臺計(jì)算機(jī)。
總的來講,除了要求用戶進(jìn)行注冊并在中央數(shù)據(jù)庫中存儲所有信息之外,可能沒有任何其他簡單的解決方案來解決這些問題。
當(dāng)您使用博聞網(wǎng)注冊系統(tǒng)進(jìn)行注冊時,可以通過以下方式解決此問題:網(wǎng)站會記住您的Cookie值,并將其與您的注冊信息存儲在一起。如果您有機(jī)會從任何其他計(jì)算機(jī)(或已丟失Cookie文件的計(jì)算機(jī))登錄,則服務(wù)器將修改該計(jì)算機(jī)上的Cookie文件以包含與您的注冊信息相關(guān)的ID。這樣,多臺計(jì)算機(jī)上就可以使用的相同ID值了。
關(guān)于Cookie的爭議
讀到這里時,您可能很想知道為什么媒體一直以來會對Cookie和網(wǎng)絡(luò)隱私存在這些爭議。從上文中,您已了解到Cookie都是善意的文本文件,并且知道它們提供了大量有用的Web功能。
然而有兩個方面的問題引起了有關(guān)Cookie的強(qiáng)烈爭議:
- 第一個方面的問題已困擾消費(fèi)者長達(dá)數(shù)十年。假設(shè)您通過傳統(tǒng)的郵購目錄購買東西,目錄公司可以從訂單中獲取您的姓名、地址和電話號碼,并且也知道您購買的商品。該公司可以將您的信息出售給可能希望向您銷售類似產(chǎn)品的其他公司,這就是促成電話營銷和垃圾郵件的來源。
在一個網(wǎng)站上,網(wǎng)站不但可以跟蹤您購買的商品,還可以跟蹤您閱讀的網(wǎng)頁和單擊的廣告等。如果您稍后購買物品并輸入您的姓名和地址,則網(wǎng)站可能會比傳統(tǒng)的郵購公司知道更多有關(guān)您的信息。這樣可以更加精確地尋找目標(biāo),但會給很多人帶來不便。
不同的網(wǎng)站具有不同的策略。博聞網(wǎng)具有嚴(yán)格的隱私策略,并且不會向任何第三方出售或與之共享有關(guān)我們的讀者的任何個人信息,除非您特地告訴我們這樣做(例如,決定參加一個電子郵件計(jì)劃中)。我們會聚合信息并進(jìn)行發(fā)布,例如,如果記者詢問博聞網(wǎng)有多少訪問者或網(wǎng)站上的哪一個頁面最受歡迎,我們會根據(jù)數(shù)據(jù)庫中的數(shù)據(jù)來創(chuàng)建這些聚合統(tǒng)計(jì)信息。
- 第二個方面的問題是互聯(lián)網(wǎng)特有的。有一些基礎(chǔ)設(shè)施提供商實(shí)際上可以創(chuàng)建在多個網(wǎng)站上可見的Cookie,DoubleClick就是這方面最出名的例子。許多公司使用DoubleClick在其網(wǎng)站上提供廣告橫幅服務(wù)。DoubleClick會在網(wǎng)站上放置一些小型(1x1像素GIF文件,以方便DoubleClick在您的計(jì)算機(jī)上加載Cookie,這樣它就可以跨多個網(wǎng)站跟蹤您的活動。它可能會查看到您在搜索引擎中鍵入的搜索字符串(這更多的是緣于一些搜索引擎實(shí)現(xiàn)其系統(tǒng)的方式,而不是因?yàn)橐幸膺M(jìn)行任何惡意操作)。由于它可以從多個網(wǎng)站收集有關(guān)您的如此多的信息,因此DoubleClick可以制作內(nèi)容非常豐富的配置文件,當(dāng)然這些配置文件仍是匿名的
隨后,DoubleClick又向前邁進(jìn)了一步。通過收購一家公司,DoubleClick揚(yáng)言將這些內(nèi)容豐富的匿名配置文件與姓名和地址信息重新鏈接在一起,標(biāo)明這些信息的所有者并進(jìn)行出售。如此一來,這種做法開始讓人覺得非常像是在窺探用戶的隱私,這也正是引起爭議的原因。
DoubleClick以及諸如此類的公司在做此類事情時處于一個獨(dú)特的位置——因?yàn)樗鼈優(yōu)槿绱硕嗟木W(wǎng)站提供廣告服務(wù)。由于Cookie因網(wǎng)站而異,所以跨網(wǎng)站配置的功能并不適用于單個網(wǎng)站。
評論
查看更多