http.cookiejar
— Обработка куки для HTTP-клиентов¶
Источник: Lib/http/cookiejar.py
Модуль http.cookiejar
определяет классы для автоматической обработки HTTP-куки. Он полезен для доступа к веб-сайтам, которые требуют небольших фрагментов данных - cookies – должны быть установлены на клиентской машине в HTTP-ответе веб-сервера, а затем возвращены серверу в последующих HTTP-запросах.
Поддерживается как обычный протокол Netscape cookie, так и протокол, определенный RFC 2965. Обработка RFC 2965 по умолчанию отключена. Куки RFC 2109 анализируются как куки Netscape и в дальнейшем обрабатываются либо как куки Netscape, либо как куки RFC 2965 в соответствии с действующей «политикой». Обратите внимание, что подавляющее большинство файлов cookie в Интернете - это файлы cookie Netscape. http.cookiejar
пытается следовать де-факто протоколу куки-файлов Netscape (который существенно отличается от протокола, изложенного в оригинальной спецификации Netscape), включая учет max-age
и port
атрибутов куки-файлов, введенных в RFC 2965.
Примечание
Различные именованные параметры, встречающиеся в заголовках Set-Cookie и Set-Cookie2 (например, domain
и expires
), условно обозначаются как attributes. Чтобы отличить их от атрибутов Python, в документации к этому модулю вместо них используется термин cookie-attribute.
Модуль определяет следующее исключение:
- exception http.cookiejar.LoadError¶
Экземпляры
FileCookieJar
вызывают это исключение при неудачной загрузке cookies из файла.LoadError
является подклассомOSError
.
Предусмотрены следующие занятия:
- class http.cookiejar.CookieJar(policy=None)¶
Политика - это объект, реализующий интерфейс
CookiePolicy
.Класс
CookieJar
хранит HTTP-куки. Он извлекает куки из HTTP-запросов и возвращает их в HTTP-ответах. ЭкземплярыCookieJar
при необходимости автоматически уничтожают содержащиеся файлы cookie. Подклассы также отвечают за хранение и извлечение файлов cookie из файла или базы данных.
- class http.cookiejar.FileCookieJar(filename=None, delayload=None, policy=None)¶
policy - это объект, реализующий интерфейс
CookiePolicy
. Остальные аргументы см. в документации к соответствующим атрибутам.Метод
CookieJar
, который может загружать файлы cookie из файла на диске и, возможно, сохранять их в нем. Cookies НЕ загружаются из именованного файла до тех пор, пока не будет вызван методload()
илиrevert()
. Подклассы этого класса документированы в разделе Подклассы FileCookieJar и сотрудничество с веб-браузерами.Его не следует инициализировать напрямую - вместо этого используйте его подклассы, приведенные ниже.
Изменено в версии 3.8: Параметр filename поддерживает значение path-like object.
- class http.cookiejar.CookiePolicy¶
Этот класс отвечает за принятие решения о том, должен ли каждый cookie быть принят от сервера или возвращен ему.
- class http.cookiejar.DefaultCookiePolicy(blocked_domains=None, allowed_domains=None, netscape=True, rfc2965=False, rfc2109_as_netscape=None, hide_cookie2=False, strict_domain=False, strict_rfc2965_unverifiable=True, strict_ns_unverifiable=False, strict_ns_domain=DefaultCookiePolicy.DomainLiberal, strict_ns_set_initial_dollar=False, strict_ns_set_path=False, secure_protocols=('https', 'wss'))¶
Аргументы конструктора должны передаваться только как аргументы ключевого слова. blocked_domains - последовательность имен доменов, от которых мы не принимаем и не возвращаем куки. разрешенные_домены, если не
None
, то это последовательность единственных доменов, для которых мы принимаем и возвращаем cookies. secure_protocols - последовательность протоколов, для которых могут быть добавлены безопасные куки. По умолчанию безопасными протоколами считаются https и wss (безопасные веб-сокеты). Все остальные аргументы см. в документации к объектамCookiePolicy
иDefaultCookiePolicy
.DefaultCookiePolicy
реализует стандартные правила принятия/отклонения для куки-файлов Netscape и RFC 2965. По умолчанию файлы RFC 2109 cookie (т. е. файлы cookie, полученные в заголовке Set-Cookie с атрибутом cookie-версии, равным 1) обрабатываются в соответствии с правилами RFC 2965. Однако если обработка RFC 2965 отключена илиrfc2109_as_netscape
являетсяTrue
, куки RFC 2109 «понижаются» экземпляромCookieJar
до куки Netscape, устанавливая атрибутversion
экземпляраCookie
в 0.DefaultCookiePolicy
также предоставляет некоторые параметры, позволяющие тонко настраивать политику.
- class http.cookiejar.Cookie¶
Этот класс представляет файлы cookie Netscape, RFC 2109 и RFC 2965. Не предполагается, что пользователи
http.cookiejar
будут создавать свои собственные экземплярыCookie
. Вместо этого, при необходимости, вызывайтеmake_cookies()
на экземпляреCookieJar
.
См.также
- Модуль
urllib.request
Открытие URL-адресов с автоматической обработкой файлов cookie.
- Модуль
http.cookies
Классы HTTP-куки, в основном полезные для кода на стороне сервера. Модули
http.cookiejar
иhttp.cookies
не зависят друг от друга.- https://curl.se/rfc/cookie_spec.html
Спецификация оригинального протокола cookie от Netscape. Хотя этот протокол до сих пор является доминирующим, «протокол куки Netscape», реализованный во всех основных браузерах (и
http.cookiejar
), лишь отдаленно похож на протокол, описанный вcookie_spec.html
.- RFC 2109 - Механизм управления состоянием HTTP
Устаревшая версия RFC 2965. Используется Set-Cookie с версией=1.
- RFC 2965 - Механизм управления состоянием HTTP
Протокол Netscape с исправленными ошибками. Использует Set-Cookie2 вместо Set-Cookie. Широко не используется.
- http://kristol.org/cookie/errata.html
Незаконченные исправления к RFC 2965.
RFC 2964 - Использование управления состоянием HTTP
Объекты CookieJar и FileCookieJar¶
Объекты CookieJar
поддерживают протокол iterator для итерации по содержащимся объектам Cookie
.
CookieJar
имеет следующие методы:
- CookieJar.add_cookie_header(request)¶
Добавьте правильный заголовок Cookie в запрос.
Если политика позволяет (т. е. атрибуты
rfc2965
иhide_cookie2
экземпляраCookieJar
равны true и false соответственно), заголовок Cookie2 также добавляется при необходимости.Объект request (обычно экземпляр
urllib.request.Request
) должен поддерживать методыget_full_url()
,has_header()
,get_header()
,header_items()
,add_unredirected_header()
и атрибутыhost
,type
,unverifiable
иorigin_req_host
в соответствии с документациейurllib.request
.Изменено в версии 3.3: Объекту request необходим атрибут
origin_req_host
. Зависимость от устаревшего методаget_origin_req_host()
была удалена.
- CookieJar.extract_cookies(response, request)¶
Извлекает куки из HTTP ответов и сохраняет их в
CookieJar
, если это разрешено политикой.Метод
CookieJar
будет искать допустимые заголовки Set-Cookie и Set-Cookie2 в аргументе response и сохранять cookies, если это необходимо (при условии одобрения методаCookiePolicy.set_ok()
).Объект ответ (обычно результат вызова
urllib.request.urlopen()
или аналогичного) должен поддерживать методinfo()
, который возвращает экземплярemail.message.Message
.Объект request (обычно экземпляр
urllib.request.Request
) должен поддерживать методget_full_url()
и атрибутыhost
,unverifiable
иorigin_req_host
, как описано вurllib.request
. Запрос используется для установки значений по умолчанию для атрибутов cookie, а также для проверки того, что cookie разрешено устанавливать.Изменено в версии 3.3: Объекту request необходим атрибут
origin_req_host
. Зависимость от устаревшего методаget_origin_req_host()
была удалена.
- CookieJar.set_policy(policy)¶
Установите экземпляр
CookiePolicy
, который будет использоваться.
- CookieJar.make_cookies(response, request)¶
Возвращает последовательность объектов
Cookie
, извлеченных из объекта ответ.См. документацию для
extract_cookies()
, чтобы узнать, какие интерфейсы требуются для аргументов ответ и запрос.
- CookieJar.set_cookie_if_ok(cookie, request)¶
Установите значение
Cookie
, если политика разрешает это сделать.
- CookieJar.set_cookie(cookie)¶
Устанавливает значение
Cookie
, не проверяя политику на предмет того, следует ли его устанавливать.
- CookieJar.clear([domain[, path[, name]]])¶
Очистите некоторые файлы cookie.
При вызове без аргументов очищает все файлы cookie. Если указан один аргумент, будут удалены только куки, принадлежащие данному домену. Если указано два аргумента, то будут удалены куки, принадлежащие указанному домену и URL path. Если указано три аргумента, то будут удалены cookie с указанными домен, путь и имя.
Вызывает
KeyError
, если не существует подходящего cookie.
- CookieJar.clear_session_cookies()¶
Удалите все файлы cookie сеанса.
Удаляет все содержащиеся файлы cookie, которые имеют истинный атрибут
discard
(обычно потому, что у них не было атрибутовmax-age
илиexpires
, либо был явный атрибутdiscard
). Для интерактивных браузеров завершение сеанса обычно соответствует закрытию окна браузера.Обратите внимание, что метод
save()
в любом случае не будет сохранять куки сессии, если вы не попросите об обратном, передав аргумент true ignore_discard.
FileCookieJar
реализует следующие дополнительные методы:
- FileCookieJar.save(filename=None, ignore_discard=False, ignore_expires=False)¶
Сохраните файлы cookie в файл.
Этот базовый класс поднимает значение
NotImplementedError
. Подклассы могут оставить этот метод нереализованным.filename - имя файла, в котором будут сохраняться cookies. Если filename не указано, используется
self.filename
(по умолчанию это значение, переданное в конструктор, если таковое имеется); еслиself.filename
-None
, используетсяValueError
.ignore_discard: сохранять даже те файлы cookie, которые будут отброшены. ignore_expires: сохранять даже те файлы cookie, срок действия которых истек.
Файл перезаписывается, если он уже существует, тем самым удаляя все содержащиеся в нем куки. Сохраненные файлы cookie можно восстановить позже с помощью методов
load()
илиrevert()
.
- FileCookieJar.load(filename=None, ignore_discard=False, ignore_expires=False)¶
Загрузка файлов cookie из файла.
Старые файлы cookie сохраняются до тех пор, пока не будут перезаписаны вновь загруженными.
Аргументы указаны как для
save()
.Именованный файл должен быть в формате, понятном классу, иначе будет вызвана ошибка
LoadError
. Также может быть вызвана ошибкаOSError
, например, если файл не существует.
- FileCookieJar.revert(filename=None, ignore_discard=False, ignore_expires=False)¶
Очистка всех файлов cookie и повторная загрузка файлов cookie из сохраненного файла.
revert()
может вызывать те же исключения, что иload()
. Если произойдет сбой, состояние объекта не изменится.
Экземпляры FileCookieJar
имеют следующие публичные атрибуты:
- FileCookieJar.filename¶
Имя файла по умолчанию, в котором будут храниться файлы cookie. Этот атрибут может быть присвоен.
- FileCookieJar.delayload¶
Если true, то печенье будет загружаться с диска лениво. Этот атрибут не должен быть назначен. Это только подсказка, так как это влияет только на производительность, а не на поведение (если только куки на диске не меняются). Объект
CookieJar
может игнорировать его. Ни один из классовFileCookieJar
, включенных в стандартную библиотеку, не загружает куки лениво.
Подклассы FileCookieJar и сотрудничество с веб-браузерами¶
Для чтения и записи предусмотрены следующие подклассы CookieJar
.
- class http.cookiejar.MozillaCookieJar(filename=None, delayload=None, policy=None)¶
Программа
FileCookieJar
, которая может загружать и сохранять куки на диск в формате файлов Mozillacookies.txt
(который также используется в curl и браузерах Lynx и Netscape).Примечание
При этом теряется информация о файлах cookie RFC 2965, а также о более новых или нестандартных атрибутах файлов cookie, таких как
port
.Предупреждение
Создайте резервную копию файлов cookie перед сохранением, если у вас есть файлы cookie, потеря/повреждение которых будет неудобна (есть некоторые тонкости, которые могут привести к незначительным изменениям в файле во время загрузки/сохранения).
Также обратите внимание, что файлы cookie, сохраненные во время работы Mozilla, будут уничтожены Mozilla.
- class http.cookiejar.LWPCookieJar(filename=None, delayload=None, policy=None)¶
Программа
FileCookieJar
, которая может загружать и сохранять куки на диск в формате, совместимом с форматом файловSet-Cookie3
библиотеки libwww-perl. Это удобно, если вы хотите хранить куки в человекочитаемом файле.Изменено в версии 3.8: Параметр filename поддерживает значение path-like object.
Объекты политики cookiePolicy¶
Объекты, реализующие интерфейс CookiePolicy
, имеют следующие методы:
- CookiePolicy.set_ok(cookie, request)¶
Возвращает булево значение, указывающее, следует ли принимать cookie от сервера.
cookie - это экземпляр
Cookie
. request - объект, реализующий интерфейс, определенный в документации дляCookieJar.extract_cookies()
.
- CookiePolicy.return_ok(cookie, request)¶
Возвращает булево значение, указывающее, следует ли возвращать cookie серверу.
cookie - это экземпляр
Cookie
. request - объект, реализующий интерфейс, определенный в документации дляCookieJar.add_cookie_header()
.
- CookiePolicy.domain_return_ok(domain, request)¶
Возвращает
False
, если файлы cookie не должны быть возвращены, учитывая домен cookie.Этот метод является оптимизацией. Он избавляет от необходимости проверять каждую cookie с определенным доменом (что может потребовать чтения многих файлов). Возврат true из
domain_return_ok()
иpath_return_ok()
оставляет всю работуreturn_ok()
.Если
domain_return_ok()
возвращает true для домена cookie, тоpath_return_ok()
вызывается для пути cookie. В противном случаеpath_return_ok()
иreturn_ok()
никогда не вызываются для этого домена cookie. Еслиpath_return_ok()
возвращает true, вызываетсяreturn_ok()
с самим объектомCookie
для полной проверки. В противном случаеreturn_ok()
никогда не вызывается для этого пути cookie.Обратите внимание, что
domain_return_ok()
вызывается для каждого домена cookie, а не только для домена request. Например, функция может быть вызвана с".example.com"
и"www.example.com"
, если доменом запроса является"www.example.com"
. То же самое относится и кpath_return_ok()
.Аргумент request соответствует документированному для
return_ok()
.
- CookiePolicy.path_return_ok(path, request)¶
Возвращает
False
, если куки не должны быть возвращены, учитывая путь к кукам.См. документацию для
domain_return_ok()
.
Помимо реализации вышеуказанных методов, реализации интерфейса CookiePolicy
также должны предоставлять следующие атрибуты, указывающие, какие протоколы должны использоваться и каким образом. Все эти атрибуты могут быть присвоены.
- CookiePolicy.netscape¶
Реализуйте протокол Netscape.
- CookiePolicy.hide_cookie2¶
Не добавляйте в запросы заголовок Cookie2 (наличие этого заголовка указывает серверу, что мы понимаем куки RFC 2965).
Наиболее полезным способом определения класса CookiePolicy
является подкласс от DefaultCookiePolicy
и переопределение некоторых или всех методов, описанных выше. Сам CookiePolicy
может быть использован в качестве «нулевой политики», позволяющей устанавливать и получать любые и все куки (это вряд ли будет полезно).
Объекты DefaultCookiePolicy¶
Реализует стандартные правила приема и возврата файлов cookie.
Поддерживаются куки RFC 2965 и Netscape. Обработка RFC 2965 по умолчанию отключена.
Самый простой способ обеспечить собственную политику - переопределить этот класс и вызывать его методы в своих переопределенных реализациях перед добавлением собственных дополнительных проверок:
import http.cookiejar
class MyCookiePolicy(http.cookiejar.DefaultCookiePolicy):
def set_ok(self, cookie, request):
if not http.cookiejar.DefaultCookiePolicy.set_ok(self, cookie, request):
return False
if i_dont_want_to_store_this_cookie(cookie):
return False
return True
В дополнение к функциям, необходимым для реализации интерфейса CookiePolicy
, этот класс позволяет блокировать и разрешать доменам устанавливать и получать cookies. Также есть несколько переключателей строгости, которые позволяют немного ужесточить довольно свободные правила протокола Netscape (ценой блокировки некоторых доброкачественных cookies).
Предусмотрены блокирующий и разрешающий списки доменов (по умолчанию оба выключены). Только домены, не входящие в список блокировки и присутствующие в списке разрешения (если список разрешения активен), участвуют в установке и возврате cookie. Используйте аргумент конструктора blocked_domains, а также методы blocked_domains()
и set_blocked_domains()
(и соответствующие аргумент и методы для allowed_domains). Если вы установили список разрешенных доменов, вы можете отключить его снова, установив значение None
.
Домены в списках блокировки или разрешения, которые не начинаются с точки, должны быть равны домену cookie, чтобы совпасть с ним. Например, "example.com"
соответствует записи в списке блокировки "example.com"
, а "www.example.com"
- нет. Домены, начинающиеся с точки, также совпадают с более конкретными доменами. Например, и "www.example.com"
, и "www.coyote.example.com"
соответствуют ".example.com"
(но сам "example.com"
не соответствует). Исключением являются IP-адреса, которые должны совпадать в точности. Например, если blocked_domains содержит "192.168.1.2"
и ".168.1.2"
, 192.168.1.2 будет заблокирован, а 193.168.1.2 - нет.
DefaultCookiePolicy
реализует следующие дополнительные методы:
- DefaultCookiePolicy.blocked_domains()¶
Возвращает последовательность заблокированных доменов (в виде кортежа).
- DefaultCookiePolicy.set_blocked_domains(blocked_domains)¶
Установите последовательность блокируемых доменов.
- DefaultCookiePolicy.is_blocked(domain)¶
Возвращает
True
, если домен находится в списке блокировки для установки или получения cookies.
- DefaultCookiePolicy.allowed_domains()¶
Возвращает
None
или последовательность разрешенных доменов (в виде кортежа).
- DefaultCookiePolicy.set_allowed_domains(allowed_domains)¶
Задайте последовательность разрешенных доменов, или
None
.
- DefaultCookiePolicy.is_not_allowed(domain)¶
Возвращает
True
, если домен не находится в списке разрешенных для установки или получения cookies.
Экземпляры DefaultCookiePolicy
имеют следующие атрибуты, которые инициализируются из одноименных аргументов конструктора и могут быть назначены.
- DefaultCookiePolicy.rfc2109_as_netscape¶
Если true, запросите, чтобы экземпляр
CookieJar
понизил версию RFC 2109 cookies (т.е. cookies, полученные в заголовке Set-Cookie с атрибутом cookie-версии, равным 1) до версии cookies Netscape, установив атрибут version экземпляраCookie
в 0. По умолчанию установлено значениеNone
, и в этом случае cookies RFC 2109 понижаются тогда и только тогда, когда обработка RFC 2965 выключена. Поэтому файлы cookie RFC 2109 понижаются по умолчанию.
Переключатели общей строгости:
- DefaultCookiePolicy.strict_domain¶
Не позволяйте сайтам устанавливать двухкомпонентные домены с кодом страны на верхнем уровне, например
.co.uk
,.gov.uk
,.co.nz
и т. д. Это далеко не идеальный вариант, и его работа не гарантирована!
RFC 2965 переключатели строгости протокола:
- DefaultCookiePolicy.strict_rfc2965_unverifiable¶
Следуйте правилам RFC 2965 в отношении непроверяемых транзакций (обычно непроверяемая транзакция - это транзакция, возникающая в результате перенаправления или запроса изображения, размещенного на другом сайте). Если это неверно, файлы cookie никогда не блокируются на основании верифицируемости
Переключатели строгости протокола Netscape:
- DefaultCookiePolicy.strict_ns_unverifiable¶
Применяйте правила RFC 2965 для непроверяемых операций даже к файлам cookie Netscape.
- DefaultCookiePolicy.strict_ns_domain¶
Флаги, указывающие, насколько строгими должны быть правила подбора доменов для файлов cookie Netscape. Допустимые значения см. ниже.
- DefaultCookiePolicy.strict_ns_set_initial_dollar¶
Игнорируйте куки в заголовках Set-Cookie:, имена которых начинаются с
'$'
.
- DefaultCookiePolicy.strict_ns_set_path¶
Не разрешайте устанавливать cookies, путь к которым не совпадает с URI запроса.
strict_ns_domain
- это набор флагов. Его значение строится путем перестановки букв «или» (например, DomainStrictNoDots|DomainStrictNonDomain
означает, что оба флага установлены).
- DefaultCookiePolicy.DomainStrictNoDots¶
При установке cookie-файлов «префикс хоста» не должен содержать точку (например,
www.foo.bar.com
не может установить cookie для.bar.com
, потому чтоwww.foo
содержит точку).
- DefaultCookiePolicy.DomainStrictNonDomain¶
Cookies, в которых явно не указан cookie-атрибут
domain
, могут быть возвращены только домену, равному домену, установившему cookie (например,spam.example.com
не будет возвращать cookies отexample.com
, в которых не указан cookie-атрибутdomain
).
- DefaultCookiePolicy.DomainRFC2965Match¶
При установке cookie-файлов требуйте полного совпадения с доменом RFC 2965.
Следующие атрибуты приведены для удобства и являются наиболее полезными комбинациями вышеуказанных флагов:
- DefaultCookiePolicy.DomainLiberal¶
Эквивалентно 0 (т.е. все вышеперечисленные флаги строгости домена Netscape отключены).
- DefaultCookiePolicy.DomainStrict¶
Эквивалент
DomainStrictNoDots|DomainStrictNonDomain
.
Объекты печенья¶
Экземпляры Cookie
имеют атрибуты Python, примерно соответствующие стандартным атрибутам cookie, указанным в различных стандартах cookie. Соответствие не одно к одному, поскольку существуют сложные правила присвоения значений по умолчанию, поскольку атрибуты cookie max-age
и expires
содержат эквивалентную информацию и поскольку cookie RFC 2109 могут быть «понижены» http.cookiejar
с cookie версии 1 до cookie версии 0 (Netscape).
Присваивание этих атрибутов не должно быть необходимым, за исключением редких случаев в методе CookiePolicy
. Класс не обеспечивает внутренней согласованности, поэтому вы должны знать, что делаете, если делаете это.
- Cookie.version¶
Целое число или
None
. У файлов cookie Netscape атрибутversion
равен 0. 0. У файлов cookie RFC 2965 и RFC 2109 атрибутversion
равен 1. Однако обратите внимание, чтоhttp.cookiejar
может «понизить» уровень файлов cookie RFC 2109 до уровня файлов cookie Netscape, и в этом случаеversion
равен 0.
- Cookie.name¶
Имя cookie (строка).
- Cookie.port¶
Строка, представляющая порт или набор портов (например, „80“, или „80,8080“), или
None
.
- Cookie.domain¶
Домен cookie (строка).
- Cookie.path¶
Путь к cookie (строка, например
'/acme/rocket_launchers'
).
- Cookie.secure¶
True
, если cookie следует возвращать только через защищенное соединение.
- Cookie.expires¶
Целочисленная дата истечения срока действия в секундах от эпохи, или
None
. См. также методis_expired()
.
- Cookie.discard¶
True
, если это сессионный cookie.
- Cookie.comment_url¶
URL-адрес ссылки на комментарий сервера, объясняющий функцию этого cookie, или
None
.
- Cookie.rfc2109¶
True
, если этот cookie был получен как RFC 2109 (т.е. cookie был получен в заголовке Set-Cookie, и значение cookie-атрибута Version в этом заголовке было равно 1). Этот атрибут предоставляется потому, чтоhttp.cookiejar
может «понизить» куки RFC 2109 до куки Netscape, и в этом случаеversion
равен 0.
- Cookie.port_specified¶
True
, если порт или набор портов был явно указан сервером (в заголовке Set-Cookie / Set-Cookie2).
- Cookie.domain_specified¶
True
, если домен был явно указан сервером.
- Cookie.domain_initial_dot¶
True
, если домен, явно указанный сервером, начинался с точки ('.'
).
Файлы cookie могут иметь дополнительные нестандартные атрибуты. Доступ к ним можно получить с помощью следующих методов:
- Cookie.has_nonstandard_attr(name)¶
Возвращает
True
, если cookie имеет названный cookie-атрибут.
- Cookie.get_nonstandard_attr(name, default=None)¶
Если cookie имеет названный cookie-атрибут, верните его значение. В противном случае верните значение default.
- Cookie.set_nonstandard_attr(name, value)¶
Установите значение именованного атрибута cookie.
Класс Cookie
также определяет следующий метод:
- Cookie.is_expired(now=None)¶
True
, если cookie прошел время, на которое сервер запросил его истечение. Если указано now (в секундах от эпохи), возвращает, истек ли срок действия cookie в указанное время.
Примеры¶
В первом примере показано наиболее частое использование http.cookiejar
:
import http.cookiejar, urllib.request
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
В этом примере показано, как открыть URL-адрес, используя файлы cookie Netscape, Mozilla или Lynx (предполагается, что в Unix/Netscape принято указывать местоположение файла cookie):
import os, http.cookiejar, urllib.request
cj = http.cookiejar.MozillaCookieJar()
cj.load(os.path.join(os.path.expanduser("~"), ".netscape", "cookies.txt"))
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
Следующий пример иллюстрирует использование DefaultCookiePolicy
. Включите cookies RFC 2965, будьте более строги к доменам при установке и возврате cookies Netscape и заблокируйте некоторые домены от установки cookies или их возврата:
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/")