Глоссарий
Cookie jar (хранилище куки)
Cookie jar это хранилище куки браузера вместе с правилами, решающими, какая кука поедет с каким запросом.
Что внутри одной куки
Кука это маленькое именованное значение, которое сайт попросил браузер сохранить. Признаки вокруг него решают, когда оно вернётся и кому. Само хранилище это и склад этих значений, и набор правил отправки.
Домен и путь
Какому сайту и какой его части кука отправляется.
Срок
Дата или ничего, и тогда кука живёт только до закрытия браузера.
Secure
Отправляется по закрытому соединению и никогда по открытому.
HttpOnly
Спрятана от сценариев страницы и читается только сервером.
SameSite
Поедет ли она с запросом, который начался на другом сайте.
Открыто ли ваше хранилище сейчас
Это одно значение прочитано в вашем браузере на этой странице. Оно говорит, согласен ли этот браузер хранить куки вообще.
Ваша машина прямо сейчас
- Куки принимаются
- измеряем на вашей машине
Прочитано в вашем браузере и показано здесь. Никуда не отправляется.
Одно хранилище на профиль
Хранилище лежит в собственной папке профиля, и два профиля никогда не делят один вход. Удаление куки в одном из них не трогает второй.
Поэтому же один аккаунт, открытый в двух профилях, это две отдельные сессии, а не одна. Выход в одном из них второго не касается.
Переезд хранилища между машинами
Выгрузка читает хранилище целиком, а не куки той страницы, что сейчас перед вами. Записывается при этом живой вход, поэтому программа предупреждает до записи файла и оставляет его читаемым только вашей учётной записи.
Загрузка кладёт каждую куку обратно с её доменом, путём, сроком и признаками. Отвергнутое считается и показывается рядом с принятым: одно число читалось бы как полностью перенесённая сессия.
SameSite переживает переезд
Слишком чистое хранилище
У профиля, созданного пять минут назад, хранилище пусто, истории нет и в кэше ничего. Это само по себе состояние, и оно заметно площадке не хуже любого другого признака.
Робот куки сперва проходит по обычным общедоступным сайтам внутри профиля. Набор сайтов и их порядок от прогона к прогону разные, потому что два профиля, обошедшие одни сайты в одном порядке, поменяли одну связь на другую.
Часто путают с этим
Local storage
Тоже хранится по сайту и по профилю, но сам по себе к запросу не прикладывается.
Кэш
Файлы, сохранённые ради того, чтобы не качать их дважды. Сессии он не несёт и при переносе профиля не едет вовсе.
Отпечаток
Вычисляется по требованию из устройства. Ничего не хранится, значит и стирать нечего.
Токен сессии
Значение внутри куки. Хранилище это место, где оно живёт, и правила, которые его отправляют.
Чего это не делает
- Хранилище не переезжает на второй компьютер само. Вход там приносит профиль и его настройки, а не его куки: это сотни мегабайт браузерных баз, и везут их отдельно.
- Очистка хранилища не меняет того, что сайт читает про устройство. Эти значения выводятся по требованию, и стирать там нечего.
- Выгруженный файл держат права доступа, а не пароль. Кто сумел его прочитать, тот вошёл в эти аккаунты.
- Загрузка куки это ещё не выполненный вход. Сайт может спросить сессию заново, а отвергнутые по дороге куки считаются, а не прячутся.
Проверить
За каждым утверждением выше стоит место в коде и стенд.
- Где куки профиля читаются и записываются
- apps/desktop/src/lib/forkPage.js
- Переехавшая кука сохраняет признаки, с которыми была записана
- apps/desktop/test/cookie-transfer.js
- Хранилище едет внутри закрытого файла переноса
- apps/desktop/src/lib/bundle.js · apps/desktop/test/profile-bundle.js
- Свежее хранилище наполняется обычным просмотром
- apps/desktop/src/lib/cookieRobot.js · apps/desktop/test/cookie-robot.js
Вопросы
- Меняет ли очистка куки мой отпечаток?
- Нет. Куки лежат и их можно стереть, а значения устройства вычисляются каждый раз, и стирать там нечего. Чистое хранилище на прежней машине даёт ту же машину.
- Почему программа просит сперва открыть профиль?
- На этом движке хранилище живёт внутри работающего браузера, и у закрытого профиля читать нечего. Сказать об этом честнее, чем записать пустой файл и назвать его выгрузкой.
- Хватит ли выгруженных куки для входа в другом месте?
- Это живые входы, и с файлом обращаются именно так. Сайт сверяет ещё машину и адрес, поэтому одних куки ему может не хватить.
- Что меняет SameSite при переносе сессии?
- Кука, записанная как None, это та, что едет с запросами, начатыми на другом сайте. Потеряйте признак, и встроенный или единый вход перестанет работать.
- Делят ли два профиля одно хранилище?
- Нет. Браузер каждого профиля направлен в свою папку, и хранилище лежит внутри неё. Соседнего хранилища для него не существует.
Пусть ваши входы лежат там, где им место
Бесплатный тариф даёт два профиля, и у каждого своё хранилище.