Сообщить об ошибке.

Класс CookieJar() модуля http.cookiejar в Python.

Хранит файлы HTTP cookie.

Синтаксис:

import http.cookiejar

cookie = http.cookiejar.CookieJar(policy=None)

Параметры:

  • policy=None - объект, реализующий интерфейс CookiePolicy.

Возвращаемое значение:

Описание:

Класс CookieJar() модуля http.cookiejar хранит файлы cookie HTTP. Он извлекает файлы cookie из HTTP-запросов и возвращает их в HTTP-ответах, как это делает обычный браузер.

Экземпляры CookieJar автоматически удаляют содержащиеся файлы cookie при необходимости. Подклассы также отвечают за хранение и получение файлов cookie из файла или базы данных.

Аргумент policy - это объект, реализующий интерфейс CookiePolicy.

Объект CookieJar.

Объекты CookieJar поддерживают протокол итератора для перебора содержащихся объектов Cookie.

CookieJar имеет следующие методы:


CookieJar.add_cookie_header(request):

Метод CookieJar.add_cookie_header() добавляет в запрос request правильный заголовок Cookie.

Если политика разрешает (т. е. атрибуты CookiePolicy.rfc2965 и CookiePolicy.hide_cookie2 экземпляра CookieJar имеют значение True и False соответственно), то при необходимости также добавляется заголовок Cookie2.

Объект запроса (обычно экземпляр urllib.request.Request) должен поддерживать методы get_full_url(), get_host(), get_type(), unverifiable(), has_header(), get_header(), header_items(), add_unredirected_header() и атрибут origin_req_host, как указано в модуле urllib.request.

CookieJar.extract_cookies(response, request):

Метод CookieJar.extract_cookies() извлекает файлы cookie из ответа HTTP response и сохраняет их в CookieJar, если это разрешено политикой.

Объект CookieJar будет искать допустимые заголовки Set-Cookie и Set-Cookie2 в аргументе ответа и при необходимости сохранять файлы cookie (при условии утверждения метода CookiePolicy.set_ok()).

Аргумент объекта ответа response (обычно результат вызова urllib.request.urlopen() или аналогичного) должен поддерживать атрибут headers, который возвращает экземпляр email.message.Message.

Аргумент объекта запроса request (обычно экземпляр urllib.request.Request) должен поддерживать методы get_full_url(), get_host(), unverifiable() и атрибут origin_req_host, как описано в документации к модулю urllib.request. Для установки значений по умолчанию для атрибутов cookie используется запрос, а также для проверки того, что cookie может быть установлен.

CookieJar.set_policy(policy):

Метод CookieJar.set_policy() задает экземпляр CookiePolicy, который в дальнейшем будет использоваться.

CookieJar.make_cookies(response, request):

Метод CookieJar.make_cookies() возвращает последовательность объектов Cookie, извлеченных из объекта ответа response.

Чтобы узнать об интерфейсах, необходимых для аргументов response и request - смотрите документацию по методу CookieJar.extract_cookies().

CookieJar.set_cookie_if_ok(cookie, request):

Метод CookieJar.set_cookie_if_ok() устанавливает файл cookie, если политика позволяет это сделать.

CookieJar.set_cookie(cookie):

Метод CookieJar.set_cookie() устанавливает файл cookie, не сверяясь с политикой.

CookieJar.clear([domain[, path[, name]]]):

Метод CookieJar.clear() удаляет некоторые файлы cookie.

  • Если метод вызывается без аргументов, то очищает все файлы cookie.
  • Если указан единственный аргумент, то будут удалены только файлы cookie, принадлежащие этому домену domain.
  • Если задано два аргумента, то будут удалены файлы cookie, принадлежащие указанному домену domain и пути URL path.
  • Если задано три аргумента, то будут удалены файлы cookie с указанным доменом domain, путем pathи именем name.

Вызывает ошибку KeyError, если соответствующий файл cookie не существует.

CookieJar.clear_session_cookies():

Метод CookieJar.clear_session_cookies() отменяет все файлы cookie сеанса.

Отбрасывает все содержащиеся файлы cookie, которые имеют истинный атрибут discard (обычно потому, что у них либо отсутствует атрибут max-age, либо атрибут expires, либо явный атрибут discard). Для интерактивных браузеров окончание сеанса обычно соответствует закрытию окна браузера.

Обратите внимание, что метод FileCookieJar.save() в любом случае не будет сохранять cookie сеанса, если конечно не указывать аргумент этого метода ignore_discard=True.

Примеры использования http.cookiejar.CookieJar.

В примере включаются файлы cookie RFC 2965, что станет более строгими в отношении доменов при установке и возврате файлов cookie Netscape, а так же блокируются некоторые домены от установки файлов cookie или их возврата:

import urllib.request
from http.cookiejar import CookieJar, DefaultCookiePolicy
policy = DefaultCookiePolicy(rfc2965=True, 
    strict_ns_domain=Policy.DomainStrict,
    blocked_domains=["ads.net", ".ads.net"])
cj = CookieJar(policy)
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")