http.cookiejar
— Обработка файлов cookie для HTTP-клиентов¶
Исходный код: Lib/http/cookiejar.py
Модуль http.cookiejar
определяет классы для автоматической обработки HTTP-файлов cookie. Это полезно для доступа к веб-сайтам, которым требуется, чтобы небольшие фрагменты данных - cookies - были установлены на клиентском компьютере с помощью HTTP-ответа от веб-сервера, а затем возвращены на сервер в последующих HTTP-запросах.
Обрабатываются как обычные файлы cookie Netscape, так и протокол, определенный с помощью RFC 2965. Обработка RFC 2965 по умолчанию отключена. RFC 2109 файлы cookie обрабатываются как файлы cookie Netscape и впоследствии обрабатываются либо как файлы cookie Netscape, либо как файлы cookie RFC 2965 в соответствии с действующей «политикой». Обратите внимание, что подавляющее большинство файлов cookie в Интернете - это файлы Netscape. http.cookiejar
пытается следовать фактическому протоколу Netscape cookie (который существенно отличается от указанного в оригинальной спецификации Netscape), в том числе принимает к сведению атрибуты cookie max-age
и port
, введенные в RFC 2965.
Примечание
Различные именованные параметры, содержащиеся в заголовках Set-Cookie и Set-Cookie2 (например, domain
и expires
), обычно обозначаются как attributes. Чтобы отличить их от атрибутов Python, в документации к этому модулю вместо них используется термин cookie-attribute.
Модуль определяет следующее исключение:
- exception http.cookiejar.LoadError¶
Экземпляры
FileCookieJar
вызывают это исключение при сбое загрузки файлов cookie из файла.LoadError
является подклассомOSError
.
Предусмотрены следующие занятия:
- class http.cookiejar.CookieJar(policy=None)¶
policy - это объект, реализующий интерфейс
CookiePolicy
.Класс
CookieJar
хранит файлы cookie HTTP. Он извлекает файлы cookie из HTTP-запросов и возвращает их в HTTP-ответах.CookieJar
При необходимости срок действия содержащихся в них файлов cookie автоматически истекает. Подклассы также отвечают за хранение и извлечение файлов cookie из файла или базы данных.
- class http.cookiejar.FileCookieJar(filename=None, delayload=None, policy=None)¶
policy - это объект, реализующий интерфейс
CookiePolicy
. Другие аргументы приведены в документации для соответствующих атрибутов.CookieJar
, который может загружать файлы cookie из файла на диске и, возможно, сохранять файлы cookie в нем. Файлы cookie не загружаются из указанного файла до тех пор, пока не будет вызван метод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 - это последовательность доменных имен, от которых мы никогда не принимаем файлы cookie и не возвращаем их обратно. разрешенные_домены если не
None
, то это список единственных доменов, для которых мы принимаем и возвращаем файлы cookie. secure_protocols - это список протоколов, для которых могут быть добавлены защищенные файлы cookie. По умолчанию безопасными протоколами считаются https и wss (secure websocket). Все остальные аргументы приведены в документации для объектовCookiePolicy
иDefaultCookiePolicy
.DefaultCookiePolicy
реализует стандартные правила принятия/отклонения файлов cookie для Netscape и RFC 2965. По умолчанию используются RFC 2109 файлы cookie (т.е.. файлы cookie, полученные в заголовке Set-Cookie с атрибутом версии cookie, равным 1), обрабатываются в соответствии с правилами RFC 2965. Однако, если обработка RFC 2965 отключена или значениеrfc2109_as_netscape
равноTrue
, файлы cookie RFC 2109 «понижаются» экземпляромCookieJar
до файлов cookie 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 cookie, которые в основном полезны для серверного кода. Модули
http.cookiejar
иhttp.cookies
не зависят друг от друга.- https://curl.se/rfc/cookie_spec.html
Спецификация оригинального протокола использования файлов cookie Netscape. Хотя этот протокол по-прежнему является доминирующим, «протокол cookie 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
Объекты типа «Банка для печенья» и «FileCookieJar»¶
CookieJar
объекты поддерживают протокол iterator для перебора содержащихся в нем объектов Cookie
.
CookieJar
имеет следующие методы:
- CookieJar.add_cookie_header(request)¶
Добавьте правильный заголовок Cookie в запрос.
Если политика позволяет (т.е. атрибуты
rfc2965
иhide_cookie2
экземпляраCookieJar
имеютCookiePolicy
значения 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: для запроса объекта требуется атрибут
origin_req_host
. Удалена зависимость от устаревшего методаget_origin_req_host()
.
- CookieJar.extract_cookies(response, request)¶
Извлеките файлы cookie из HTTP response и сохраните их в
CookieJar
, где это разрешено политикой.CookieJar
будет искать допустимые заголовки Set-Cookie и Set-Cookie2 в аргументе response и сохранять файлы cookie соответствующим образом (при условии одобрения методаCookiePolicy.set_ok()
).Объект response (обычно являющийся результатом вызова
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: для запроса объекта требуется атрибут
origin_req_host
. Удалена зависимость от устаревшего методаget_origin_req_host()
.
- CookieJar.set_policy(policy)¶
Установите для использования экземпляр
CookiePolicy
.
- CookieJar.make_cookies(response, request)¶
Возвращает последовательность объектов
Cookie
, извлеченных из объекта response.Смотрите документацию по
extract_cookies()
для получения информации об интерфейсах, необходимых для аргументов response и request.
- CookieJar.set_cookie_if_ok(cookie, request)¶
Установите
Cookie
, если в политике указано, что это можно сделать.
- CookieJar.set_cookie(cookie)¶
Установите значение
Cookie
, не проверяя с помощью политики, следует ли его устанавливать.
- CookieJar.clear([domain[, path[, name]]])¶
Очистите несколько кусочков печенья.
При вызове без аргументов удаляются все файлы cookie. Если задан один аргумент, будут удалены только файлы cookie, принадлежащие этому домену. Если заданы два аргумента, будут удалены файлы cookie, принадлежащие указанному домену и URL-адресу. Если заданы три аргумента, то файл cookie с указанными доменом, путем и именем удаляется.
Вызывает
KeyError
, если соответствующий файл cookie не существует.
- CookieJar.clear_session_cookies()¶
Удалите все сеансовые файлы cookie.
Удаляет все содержащиеся файлы cookie, которые имеют атрибут true
discard
(обычно потому, что у них либо нет атрибута cookiemax-age
илиexpires
, либо явно указан атрибут cookiediscard
). Для интерактивных браузеров окончание сеанса обычно соответствует закрытию окна браузера.Обратите внимание, что метод
save()
в любом случае не сохранит файлы cookie сеанса, если вы не попросите об обратном, передав аргумент true ignore_discard.
FileCookieJar
реализует следующие дополнительные методы:
- FileCookieJar.save(filename=None, ignore_discard=False, ignore_expires=False)¶
Сохраните файлы cookie в файл.
Этот базовый класс генерирует
NotImplementedError
. В подклассах этот метод может не реализовываться.имя файла - это имя файла, в который сохраняются файлы cookie. Если имя файла не указано, используется
self.filename
(по умолчанию используется значение, передаваемое конструктору, если таковое имеется); еслиself.filename
None
,ValueError
, то вызывается значение.ignore_discard: сохраняет даже те файлы cookie, которые должны быть удалены. ignore_expires: сохраняет даже те файлы cookie, срок действия которых истек
Файл перезаписывается, если он уже существует, таким образом удаляются все содержащиеся в нем файлы 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, то файлы cookie загружаются с диска медленно. Этот атрибут не следует присваивать. Это всего лишь подсказка, поскольку это влияет только на производительность, а не на поведение (если только файлы cookie на диске не изменяются). Объект
CookieJar
может игнорировать это. Ни один из классовFileCookieJar
, включенных в стандартную библиотеку, не загружает файлы cookie лениво.
Подклассы FileCookieJar и взаимодействие с веб-браузерами¶
Следующие CookieJar
подклассы предназначены для чтения и записи.
- class http.cookiejar.MozillaCookieJar(filename=None, delayload=None, policy=None)¶
Файл
FileCookieJar
, который может загружаться из файлов cookie и сохранять их на диске в формате 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
, который может загружаться из файлов cookie и сохранять их на диске в формате, совместимом с форматом файла библиотеки libwww-perlSet-Cookie3
. Это удобно, если вы хотите хранить файлы cookie в удобочитаемом файле.Изменено в версии 3.8: Параметр filename поддерживает значение path-like object.
Объекты политики использования файлов cookie¶
Объекты, реализующие интерфейс 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, то для пути к файлу cookie вызываетсяpath_return_ok()
. В противном случае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
если файлы cookie возвращать не следует, укажите путь к файлам cookie.Смотрите документацию по
domain_return_ok()
.
В дополнение к реализации описанных выше методов, реализации интерфейса CookiePolicy
также должны содержать следующие атрибуты, указывающие, какие протоколы следует использовать и как. Все эти атрибуты могут быть назначены.
- CookiePolicy.netscape¶
Внедрите протокол Netscape.
- CookiePolicy.hide_cookie2¶
Не добавляйте заголовок Cookie2 к запросам (наличие этого заголовка указывает серверу, что мы понимаем RFC 2965 cookies).
Наиболее полезным способом определения класса CookiePolicy
является создание подкласса из DefaultCookiePolicy
и переопределение некоторых или всех вышеперечисленных методов. CookiePolicy
сам по себе может использоваться в качестве «нулевой политики», позволяющей устанавливать и получать любые файлы cookie (это вряд ли будет полезно).
Объекты DefaultCookiePolicy по умолчанию¶
Реализует стандартные правила приема и возврата файлов cookie.
Распространяются как на файлы cookie RFC 2965, так и на файлы cookie 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
, этот класс позволяет блокировать и разрешать доменам устанавливать и получать файлы cookie. Существуют также некоторые настройки строгости, которые позволяют вам немного ужесточить довольно свободные правила протокола Netscape (за счет блокировки некоторых вредоносных файлов cookie).
Предоставляются список заблокированных доменов и список разрешенных доменов (оба по умолчанию отключены). В настройке и возврате файлов 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
, если домен находится в списке заблокированных для установки или получения файлов cookie.
- DefaultCookiePolicy.allowed_domains()¶
Возвращает
None
или последовательность разрешенных доменов (в виде кортежа).
- DefaultCookiePolicy.set_allowed_domains(allowed_domains)¶
Задайте последовательность разрешенных доменов, или
None
.
- DefaultCookiePolicy.is_not_allowed(domain)¶
Верните
True
, если домен отсутствует в списке разрешенных для установки или получения файлов cookie.
DefaultCookiePolicy
экземпляры имеют следующие атрибуты, которые все инициализируются из одноименных аргументов конструктора и которым все они могут быть присвоены.
- DefaultCookiePolicy.rfc2109_as_netscape¶
Если значение равно true, запросите, чтобы экземпляр
CookieJar
понизил RFC 2109 cookie-файлов (т.е. файлы cookie, полученные в заголовке Set-Cookie с атрибутом версии файла cookie, равным 1) в файлы cookie Netscape, установив атрибут версии экземпляраCookie
равным 0. Значением по умолчанию являетсяNone
, и в этом случае рейтинг файлов cookie в соответствии с 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¶
Игнорируйте файлы cookie в заголовках Set-Cookie:, имена которых начинаются с
'$'
.
- DefaultCookiePolicy.strict_ns_set_path¶
Не разрешайте устанавливать файлы cookie, путь к которым не совпадает с URI запроса.
strict_ns_domain
- это набор флагов. Его значение определяется путем объединения или (например, DomainStrictNoDots|DomainStrictNonDomain
означает, что установлены оба флага).
- DefaultCookiePolicy.DomainStrictNoDots¶
При настройке файлов cookie «префикс хоста» не должен содержать точки (например,
www.foo.bar.com
не удается установить файл cookie для.bar.com
, посколькуwww.foo
содержит точку).
- DefaultCookiePolicy.DomainStrictNonDomain¶
Файлы cookie, в которых явно не указан атрибут
domain
, могут быть возвращены только в домен, соответствующий домену, установившему файл cookie (например,spam.example.com
не будут возвращены файлы cookie изexample.com
, у которых не былоdomain
cookie-атрибут).
- DefaultCookiePolicy.DomainRFC2965Match¶
При настройке файлов cookie требуется полное соответствие домена RFC 2965.
Следующие атрибуты предоставлены для удобства и являются наиболее полезными комбинациями вышеуказанных флагов:
- DefaultCookiePolicy.DomainLiberal¶
Эквивалентно 0 (т.е. все вышеперечисленные флаги строгости домена Netscape отключены).
- DefaultCookiePolicy.DomainStrict¶
Эквивалентно
DomainStrictNoDots|DomainStrictNonDomain
.
Объекты cookie-файлов¶
Cookie
экземпляры имеют атрибуты Python, примерно соответствующие стандартным атрибутам файлов cookie, указанным в различных стандартах файлов cookie. Соответствие не является однозначным, поскольку существуют сложные правила присвоения значений по умолчанию, поскольку max-age
и expires
cookie-атрибуты содержат эквивалентную информацию, а также поскольку RFC 2109 cookie-файлы могут быть «понижены» на http.cookiejar
файлы cookie с версии 1 по версию 0 (Netscape).
Назначение этих атрибутов не должно быть необходимым, за исключением редких случаев в методе CookiePolicy
. Класс не обеспечивает внутреннюю согласованность, поэтому вы должны знать, что делаете, если делаете это.
- Cookie.version¶
Целое число или
None
. Файлы cookie Netscape имеютversion
0. RFC 2965 и RFC 2109 файлы cookie имеютversion
атрибут cookie, равный 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¶
Целочисленная дата истечения срока действия в секундах, начиная с epoch, или
None
. Смотрите также методis_expired()
.
- Cookie.discard¶
True
если это сессионный файл cookie.
- Cookie.comment_url¶
URL-адрес, ссылающийся на комментарий сервера, объясняющий функцию этого файла cookie, или
None
.
- Cookie.rfc2109¶
True
если этот файл cookie был получен как файл cookie RFC 2109 (т.е. файл cookie был получен в заголовке Set-Cookie, и значение атрибута cookie-версии в этом заголовке было равно 1). Этот атрибут указан потому, чтоhttp.cookiejar
может «понизить» статус файлов cookie RFC 2109 до файлов cookie 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, верните его значение. В противном случае верните значение по умолчанию.
- Cookie.set_nonstandard_attr(name, value)¶
Установите значение именованного атрибута cookie.
Класс Cookie
также определяет следующий метод:
- Cookie.is_expired(now=None)¶
True
если срок действия файла cookie истек по истечении времени, запрошенного сервером, он должен истечь. Если указано значение сейчас (в секундах с момента начала периода), укажите, истек ли срок действия файла 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
. Включите RFC 2965 cookies, будьте более строги к доменам при установке и возврате файлов 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/")
Python 3.11
Содержание
Дополнительно
Вы здесь:
-
Документация Django Python 3.11
- Стандартная библиотека Python
- Интернет-протоколы и их поддержка
http.cookiejar
— Обработка файлов cookie для HTTP-клиентов
- Интернет-протоколы и их поддержка
- Стандартная библиотека Python