Ответ
HTTP cookie (куки) — это небольшой фрагмент данных, отправляемый веб-сервером и хранимый на стороне клиента (в браузере). Браузер автоматически отправляет эти данные обратно серверу с каждым последующим запросом к тому же домену, обеспечивая сохранение состояния (stateful) поверх stateless-протокола HTTP.
Механизм работы:
- Сервер включает в HTTP-ответ заголовок
Set-Cookie. - Браузер сохраняет эту пару «ключ-значение» локально.
- При следующих запросах к тому же домену браузер автоматически добавляет заголовок
Cookieс сохраненными данными.
Основные типы:
- Сессионные (Session cookies): Существуют только во время сессии браузера, удаляются после его закрытия. Не имеют срока истечения (
ExpiresилиMax-Age). - Постоянные (Persistent cookies): Имеют установленный срок жизни (
ExpiresилиMax-Age) и хранятся на диске до истечения этого срока.
Пример работы с куками в Selenium WebDriver (Python):
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
# Добавить новую куку
driver.add_cookie({
"name": "session_token",
"value": "abc123xyz",
"domain": "example.com"
})
# Получить все куки для текущего домена
all_cookies = driver.get_cookies()
print(all_cookies)
# Получить значение конкретной куки
value = driver.get_cookie("session_token")["value"]
# Удалить куку
driver.delete_cookie("session_token")
# Удалить все куки
driver.delete_all_cookies()
Назначение: аутентификация сессий, хранение пользовательских предпочтений, отслеживание поведения (аналитика).
Ответ 18+ 🔞
А, ну вот, смотри, куки, блядь! Это ж такая простая хуйня, а столько народу её не понимает, в рот меня чих-пых!
Представь себе, ты заходишь в паб. Бармен тебя впервые видит, нихуя о тебе не знает. Ты ему: «Пива!». Он тебе наливает. На следующий день ты опять приходишь, он опять нихуя не помнит. «Пива!» — и снова наливает. Статичный протокол, блядь, HTTP такой же — каждый запрос для сервера как новый клиент, ёпта.
А теперь сценарий с куками. Ты заходишь в паб, бармен даёт тебе жетончик, на котором написано «Вася, любит тёмное, должен 500 рублей». Это и есть Set-Cookie, понимаешь? Ты этот жетон (куку) кладёшь в карман (браузер сохраняет). Приходишь через неделю, достаёшь жетон, кладёшь на стойку (Cookie в заголовке запроса). Бармен смотрит: «А, Вася! Тёмное уже наливаю, и не забудь долг отдать!». Состояние сохранилось! Вот и вся магия, блядь.
Какие они бывают, эти сучки-печеньки:
- Сессионные (Session cookies): Это как жетон, который ты сдаёшь при выходе из паба. Закрыл браузер — всё, хуй упал, кука испарилась. Сроков жизни нет, живут, пока вкладка открыта.
- Постоянные (Persistent cookies): А это уже жетон с датой. «Действителен до 31.12.2024». Браузер его на диск пишет, и хоть ты комп выключи, через месяц откроешь — жетон в кармане, бармен тебя узнает. У них есть
ExpiresилиMax-Age.
Зачем это всё, спросишь? Да чтобы тебя помнить, мудак! Чтоб не логиниться каждый раз, чтоб корзину в интернет-магазине не терять, и, конечно же, чтоб следить, какую хуйню ты там в интернете смотришь (это аналитика, блядь).
А вот как с этим колдовать в Selenium, если ты, допустим, тестировщик-извращенец:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
# Подсунуть браузеру свою куку (типа бармену фальшивый жетон)
driver.add_cookie({
"name": "session_token", # Ключ
"value": "abc123xyz", # Значение (типа "Вася, должник")
"domain": "example.com" # Какому пабу (домену) этот жетон принадлежит
})
# Посмотреть, какие жетоны уже валяются в кармане (браузере)
all_cookies = driver.get_cookies()
print(all_cookies) # Выведет всю эту похабень
# Достать и прочитать один конкретный жетон
value = driver.get_cookie("session_token")["value"]
# Выкинуть один жетон нахуй
driver.delete_cookie("session_token")
# Устроить тотальную зачистку карманов — вытрясти все жетоны
driver.delete_all_cookies()
Вот и весь сказ, блядь. Не печенька, а инструмент, ёпта!