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