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()
добавляет в запрос правильный заголовок,CookieJar.extract_cookies()
извлекает файлы cookie из ответа HTTP,CookieJar.set_policy()
задает экземпляр CookiePolicy
,CookieJar.make_cookies()
возвращает список объектов Cookie
,CookieJar.set_cookie_if_ok()
устанавливает cookie, если позволяет политика,CookieJar.set_cookie()
устанавливает cookie, не сверяясь с политикой,CookieJar.clear()
удаляет некоторые cookie,CookieJar.clear_session_cookies()
отменяет все cookie сеанса,http.cookiejar.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.
domain
. domain
и пути URL path
. 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/")