← Назад к вопросам

В каком виде хранятся cookie

1.2 Junior🔥 201 комментариев
#Веб-тестирование#Клиент-серверная архитектура

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Механизм хранения cookies

Cookies (куки) — это небольшие фрагменты данных, которые веб-сервер отправляет браузеру, а браузер сохраняет и автоматически отправляет обратно при последующих запросах. Их хранение — многоуровневый процесс, зависящий от типа cookie, браузера и операционной системы.

Основные виды хранения по типу cookie

  • Сессионные cookies (Session cookies): Хранятся только в оперативной памяти (RAM) браузера на протяжении сессии. Удаляются при закрытии вкладки или браузера. Не имеют срока годности (Expires или Max-Age). В файловой системе обычно не сохраняются, что затрудняет прямое инспектирование.
  • Постоянные cookies (Persistent cookies): Сохраняются на жестком диске в виде файлов баз данных или в специальных хранилищах. Имеют установленный срок годности (Expires/Max-Age). Переживают перезапуск браузера и системы.

Физическое хранение в файловой системе

Браузеры используют различные форматы и расположения. Вот примеры для основных ОС:

Google Chrome, Microsoft Edge (на Chromium), Brave, Opera

  • Формат: SQLite база данных в файле Cookies.
  • Расположение:
    # Windows
    %LocalAppData%\Google\Chrome\User Data\Default\Cookies
    %LocalAppData%\Microsoft\Edge\User Data\Default\Cookies
    
    # macOS
    ~/Library/Application Support/Google/Chrome/Default/Cookies
    
    # Linux
    ~/.config/google-chrome/Default/Cookies
    
    Для просмотра требуется SQLite-клиент или инструменты разработчика.

Mozilla Firefox

  • Формат: SQLite база данных в файле cookies.sqlite (до версии ~58) или часть общей базы places.sqlite/отдельные файлы в хранилище.
  • Расположение:
    # Windows
    %AppData%\Roaming\Mozilla\Firefox\Profiles\<profile>\cookies.sqlite
    
    # macOS
    ~/Library/Application Support/Firefox/Profiles/<profile>/
    
    # Linux
    ~/.mozilla/firefox/<profile>/
    

Safari

  • Формат: Бинарный файл Cookies.binarycookies (своя спецификация).
  • Расположение (macOS):
    ~/Library/HTTPStorages/com.apple.Safari/
    ~/Library/Cookies/Cookies.binarycookies # (для некоторых версий)
    

Логическая структура хранения

Внутри базы данных или файла каждая запись cookie обычно содержит следующие поля:

  • name (имя) и value (значение)
  • domain (домен) и path (путь) — определяют область видимости.
  • expires / max-age — срок жизни.
  • secure — флаг, требующий HTTPS.
  • httpOnly — флаг, запрещающий доступ из JavaScript.
  • sameSite — политика безопасности (Strict, Lax, None).
  • creationTime и lastAccessTime — метки времени.

Пример SQL-запроса для Chrome (упрощенно):

SELECT name, value, host_key, path, expires_utc, is_secure, is_httponly
FROM cookies
WHERE host_key LIKE '%example.com%';

Практическое значение для QA-инженера

Понимание механизмов хранения критично для тестирования:

  1. Тестирование авторизации и сессий: Проверка, что сессионные куки корректно очищаются, а постоянные — сохраняются и обновляются.
  2. Очистка данных: Знание, какие действия (очистка кэша, истории, выбор "удалить cookies") действительно удаляют файлы.
  3. Кросс-браузерное тестирование: Поведение и сроки хранения могут отличаться.
  4. Тестирование безопасности: Проверка атрибутов HttpOnly, Secure и SameSite для защиты от XSS и CSRF-атак.
  5. Отладка: Прямой просмотр и модификация файлов cookies (через DevTools, аддоны или SQLite-клиент) для воспроизведения сложных сценариев.

Инструменты для работы:

  • Встроенные: Инструменты разработчика (F12) → Вкладка Application/Storage → Cookies — основной инструмент для инспекции, добавления, удаления и блокировки кук.
  • Расширения браузера: EditThisCookie, Cookie-Editor.
  • Сторонние программы: DB Browser for SQLite (для просмотра файлов .sqlite).
  • Автоматизация: В Selenium WebDriver управление куками осуществляется через методы driver.manage().cookies().
    # Пример на Python + Selenium
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("https://example.com")
    
    # Получить все cookies
    all_cookies = driver.get_cookies()
    print(all_cookies)
    
    # Добавить cookie
    driver.add_cookie({"name": "test_cookie", "value": "12345", "domain": "example.com"})
    
    # Удалить конкретный cookie
    driver.delete_cookie("test_cookie")
    
    # Удалить все cookies
    driver.delete_all_cookies()
    

Таким образом, cookies хранятся либо в памяти (сессионные), либо в специализированных файлах баз данных на диске (постоянные), и их структура едина для всех браузеров, несмотря на различия в реализации физического хранения. Для эффективного тестирования веб-приложений QA-инженер должен понимать как логическую модель, так и способы практической работы с куками через DevTools и в автотестах.

В каком виде хранятся cookie | PrepBro