HTTP-файлы cookie – обзор файлов

Файлы cookie – это name=contentsпары, которые HTTP-сервер сообщает клиенту о хранении, а затем клиент отправляет их обратно на сервер при последующих запросах к тем же доменам и путям, для которых были установлены файлы cookie.

Файлы cookie представляют собой либо «сеансовые файлы cookie», которые обычно забываются по окончании сеанса, что часто переводится как равнозначное при закрытии браузера, либо файлы cookie не являются сеансовыми файлами cookie, у них есть даты истечения срока действия, после которых клиент их выбрасывает.

Файлы cookie устанавливаются для клиента с помощью заголовка Set-Cookie: и отправляются на серверы с заголовком Cookie :.

В течение очень долгого времени единственной спецификацией, объясняющей, как использовать файлы cookie, была оригинальная спецификация Netscape от 1994 года .

В 2011 году был наконец опубликован RFC6265 , в котором подробно описывается, как файлы cookie работают в HTTP. В 2016 году было обновление , которое добавлена поддержка префиксов предложил , а в 2017 году, еще одно обновление было подготовлен к принизить модификации «безопасных» печенье из небезопасных происхождения. Оба эти проекта были включены в предложение по замене RFC6265. Префиксы файлов cookie и защита от безопасных изменений файлов cookie были реализованы с помощью curl.

Файлы cookie сохраняются на диск

Netscape однажды создала формат файла для хранения файлов cookie на диске, чтобы они пережили перезапуск браузера. curl принял этот формат файла, чтобы разрешить обмен файлами cookie с браузерами, но только для того, чтобы браузеры отошли от этого формата. Современные браузеры больше не используют его, а curl все еще использует.

Формат файла cookie netscape хранит по одному cookie на каждую физическую строку в файле с набором связанных метаданных, каждое поле разделяется TAB. В терминологии curl этот файл называется cookiejar.

Когда libcurl сохраняет cookiejar, он создает собственный заголовок файла, в котором есть упоминание URL-адреса, который будет ссылаться на веб-версию этого документа.

Формат файла cookie

Формат файла cookie основан на тексте и хранит по одному cookie в каждой строке. Строки, начинающиеся с #, рассматриваются как комментарии.

Каждая строка, каждая из которых определяет один файл cookie, состоит из семи текстовых полей, разделенных символами TAB. Допустимая строка должна заканчиваться символом новой строки.

Поля в файле

Номер поля, тип и пример данных и их значение:

  1. строка example.com– доменное имя
  2. boolean FALSE– включить поддомены
  3. строка /foobar/– путь
  4. boolean TRUE– отправлять / получать только по HTTPS
  5. число 1462299217– истекает в – секунд с 1 января 1970 года, или 0
  6. строка person– имя куки
  7. строка daniel– значение куки

Файлы cookie с помощью curl в командной строке

В curl встроен полноценный «движок» файлов cookie. Если вы просто активируете его, вы можете настроить curl для приема и отправки файлов cookie точно так, как указано в спецификациях.

Параметры командной строки:

-b, --cookie

указать curl файл, из которого следует читать файлы cookie и запустить механизм cookie, или, если это не файл, он передаст заданную строку. -b name = var работает, и -b cookiefile тоже.

-j, --junk-session-cookies

при использовании в сочетании с -b, он будет пропускать все «файлы cookie сеанса» при загрузке, чтобы начать новый сеанс файлов cookie.

-c, --cookie-jar

скажите curl запустить механизм cookie и записать файлы cookie в указанный файл после запроса (ов)

Файлы cookie с libcurl

libcurl предлагает несколько способов включения и взаимодействия механизма cookie. Эти параметры предоставляются собственным API. Привязки libcurl могут предлагать доступ к ним другими способами.

CURLOPT_COOKIE

Используется, когда вы хотите указать точное содержимое заголовка cookie для отправки на сервер.

CURLOPT_COOKIEFILE

Сообщите libcurl активировать механизм cookie и прочитать начальный набор файлов cookie из данного файла. Только для чтения.

CURLOPT_COOKIEJAR

Сообщите libcurl активировать механизм cookie, и когда простой дескриптор будет закрыт, сохраните все известные файлы cookie в данный файл cookiejar. Только для записи.

CURLOPT_COOKIELIST

Предоставьте подробную информацию об одном файле cookie для добавления во внутреннее хранилище файлов cookie. Передайте cookie как HTTP-заголовок со всеми заданными деталями или передайте строку из файла cookie netscape. Этот параметр также можно использовать для очистки файлов cookie и т. Д.

CURLINFO_COOKIELIST

Извлеките информацию о файлах cookie из внутреннего хранилища файлов cookie в виде связанного списка.

Файлы cookie с javascript

В наши дни большая часть Интернета создается с помощью javascript. Веб-браузер загружает полные программы, отображающие отображаемую вами страницу. Эти программы JavaScript также могут устанавливать файлы cookie и получать к ним доступ.

Поскольку curl и libcurl являются простыми HTTP-клиентами без каких-либо знаний или возможностей для обработки javascript, такие файлы cookie не будут обнаруживаться или использоваться.

Часто, если вы хотите имитировать то, что браузер делает на таких веб-сайтах, вы можете записывать HTTP-трафик веб-браузера при использовании такого сайта, а затем повторять операции cookie с помощью curl или libcurl.

Ваша корзина