Кука: как забывчивому интернету выдали номерок
Слово: кука · где услышишь: вход на платформу, «кука сессии», сервисы команды
«Истории слов» — рубрика буткемпа Hammerhall. Наша команда строит учебную платформу и сервисы вокруг неё, а здесь рассказывает, откуда взялись слова, на которых говорит.
1994 год, Калифорния. Молодая компания Netscape делает браузер — программу, через которую смотрят сайты. Среди её программистов — Лу Монтулли (Lou Montulli). Он недавно бросил университет, чтобы сюда прийти.
У тогдашнего интернета была странная беда: он ничего не помнил. Открываешь страницу — сайт тебя видит. Переходишь на соседнюю — и для сайта ты уже незнакомец. Как разговор с человеком, который после каждой фразы забывает, кто ты. Сам Монтулли потом так и говорил: сайт забывал своих посетителей.
Попробуй в таком мире что-нибудь купить. Положил в корзину яйца, перешёл на страницу с маслом — корзина пустая. Интернет-магазин так не построишь. А Netscape нужно было решить именно эту задачу: сделать корзину покупок.
Записка, которую носит браузер
Монтулли придумал простую вещь. Пусть сайт, когда ты к нему пришёл, отдаёт браузеру маленькую записку. Браузер её хранит и каждый раз, когда ты снова заходишь на этот сайт, молча её показывает. Сайт читает и вспоминает: а, это ты, у тебя в корзине яйца. По словам самого Монтулли, написал он это примерно за час.
Осенью 1994 года вышел первый браузер Netscape, и записки в нём уже были. Первое, что Netscape с их помощью проверял, — пришёл ли человек на его сайт впервые.
Монтулли описал записку для других программистов, и в описании есть чудесная фраза: эта штука называется cookie «без особой на то причины» (for no compelling reason). Cookie по-английски — печенье. А русские программисты говорят короче: кука.
Волшебное печенье#
Причина, конечно, была. Задолго до первых сайтов у программистов ходило выражение magic cookie — «волшебное печенье». Оно встречается уже в руководстве 1979 года к системе Unix. Так называли маленький кусочек данных, который одна программа выдаёт другой. Та хранит его, не заглядывая внутрь, а потом возвращает — и по нему первая программа понимает, о чём речь.
В старом словаре программистского жаргона, Jargon File, есть прекрасный пример такого печенья: квитанция из химчистки. По-нашему — номерок в гардеробе. Сам по себе он ничего не значит: кусочек пластмассы с цифрой. Но по нему тебе отдают именно твоё пальто. Монтулли слышал про «волшебное печенье» ещё в студенчестве — взял половину выражения, и получилась кука.
А почему печенье? Тут начинаются догадки. Монтулли в интервью говорил: «Думаю, это от печенья с предсказанием: записка, во что-то завёрнутая, и снаружи её не видно». Красиво и похоже на правду. Но он говорит «думаю»: выражение придумал не он, а кто и почему его придумал — точно неизвестно.
А версия про Гензеля и Гретель, которые сыпали крошки, чтобы найти дорогу домой, — чистая легенда. Свидетельств нет, да и в сказке крошки были хлебные.
Свой номерок в каждом гардеробе
Ещё одно Монтулли решил с самого начала: кука одного сайта показывается только этому сайту. Не один пропуск на весь интернет, а свой номерок в каждом гардеробе — чтобы никто не прошёл за тобой следом от сайта к сайту.
Через пару лет рекламщики нашли обход. Их реклама стояла на множестве сайтов сразу. Браузер грузил её и каждый раз показывал рекламщику номерок, который тот сам и выдал. Сайты разные, а номерок один — и рекламщик видел, где ты ходишь. Монтулли признавался, что был немного в шоке: «Мы ведь специально устроили всё так, чтобы это было невозможно».
С тех пор о куках спорят. Отсюда окошки «Мы используем куки» почти на каждом сайте: европейский закон требует спросить твоего согласия. А некоторые браузеры чужие куки уже не пропускают вовсе.
Кука у нас#
Сегодня кука — всё тот же номерок. Ты один раз вошёл на сайт с паролем, дальше сайт узнаёт тебя по куке и не спрашивает пароль на каждой странице. Почистил куки — и сайт тебя снова не помнит, как гардеробщик, который видит тебя впервые.
Когда ты входишь на платформу буткемпа, браузер получает куку. У нас её называют кукой сессии: сессия — это твой визит от входа до выхода. Для команды эта кука значит важную вещь: за ней живой человек в браузере. Ты.
Вокруг платформы есть и другие программы команды — например, шлюз, который пишет людям уведомления. Паролей они не хранят и не проверяют: это дело одной платформы.
А у программ, которые работают сами, без человека, вместо куки служебный ключ. Но это уже другая история — выпуск 2.
Кука — номерок, по которому сайт тебя узнаёт. А у нас за каждым таким номерком — живой человек.
Источники
- NPR Planet Money, «How the Cookie Became a Monster», 2022 — интервью с Лу Монтулли: забывчивый веб, корзина, час работы, печенье с предсказанием, шок от рекламщиков.
- Netscape, «Persistent Client State HTTP Cookies» — исходная спецификация кук, копия на сайте curl: та самая фраза «for no compelling reason».
- David Kristol, 2001 — соавтор первого стандарта кук о том, кто выбрал слово и что такое magic cookie.
- Jargon File, «cookie» — словарь программистского жаргона: квитанция из химчистки.
- Kesan & Shah, «Deconstructing Code», 2004 — как в Netscape делали корзину и для чего первым делом применили куки.