Cookie和廣告聯盟

2020-07-16 10:04:48
相信大家都有類似的經歷:在瀏覽網頁時,有的廣告竟然展示出讀者近期搜尋過的關鍵詞,也有一些廣告竟然知道讀者近期要買的東西。到底是什麼技術悄悄地把讀者的資訊出賣了?答案就是 Cookie。

瀏覽器不斷地向伺服器請求資料,伺服器不斷地回答資料。這個過程有個缺點:每次請求都是獨立的,伺服器並不會記下用戶端的資訊。為了讓伺服器識別請求者,請求者需要在傳送請求時帶上自己的身份資訊,這個身份資訊的學名叫作 Cookie。

Cookie 是瀏覽器每次向網站伺服器請求資料時攜帶的一些額外資訊,這些資訊一般非常少(最多 4KB),主要就是為了解決伺服器“記性不好”的問題。

當然,Cookie 需要攜帶什麼資訊,其實是由伺服器決定的,比如我們登入新浪微博後,伺服器就會要求瀏覽器把登入成功的賬號寫到 Cookie 裡,下次請求關注列表時,瀏覽器就會帶上這個 Cookie,一起傳送到伺服器,這樣伺服器就會知道請求者是誰了。

例如,存取了百度之後產生的 Cookie 是加密過的。只有開發者才知道這種經過加密的資訊是什麼意思,它裡面包含了使用者搜尋過的關鍵詞的資訊。

每個網站都會有 很多這樣的 Cookie,但它們是隔離開的。也就是說,百度只能存取到百度儲存在瀏覽器的 Cookie,微博只能存取到微博儲存在瀏覽器的 Cookie,百度無法得到微博的 Cookie,這一點由瀏覽器保證。

現在我們來解釋開頭廣告的事情。使用者搜尋關鍵詞被百度儲存在了瀏覽器的 Cookie 裡,但是這個廣告是出現在一個部落格網站上的,按上文的理論,這個部落格網站只能存取它自己儲存在瀏覽器的 Cookie,為什麼能存取百度的 Cookie 呢?

通過研究這個頁面的原始碼,發現這個廣告是部落格網站的程式設計師從百度那裡複製了一段程式碼放到這個頁面上而展示出來的,使用者在請求廣告圖片時,還是去百度請求,自然百度也就能拿到帶著搜尋關鍵詞的 Cookie。

拿到 Cookie 的百度就可以根據關鍵詞匹配它們的廣告,然後推薦給使用者,這種廣告因為推播的都是使用者感興趣的內容,“殺傷力” 特別大,被稱為“精準廣告”。

已經有成千上萬的網站加入了搜尋引擎的廣告聯盟。使用者在瀏覽其他網站時,都有可能看到帶有自己搜尋關鍵詞的廣告。