Модуль http.cookiejar
определяет классы для автоматической обработки файлов cookie. Модуль будет полезен для доступа к веб-сайтам, для которых требуются установка файлов cookie на клиентском компьютере посредством HTTP-ответа от веб-сервера, а затем возвращены на сервер в последующих HTTP-запросах.
Обрабатываются как обычный протокол cookie Netscape, так и протокол, определенный в RFC 2965. Обработка RFC 2965 по умолчанию отключена. Файлы cookie RFC 2109 анализируются как файлы cookie Netscape и впоследствии обрабатываются как файлы cookie Netscape или RFC 2965 в соответствии с действующей политикой.
Обратите внимание, что подавляющее большинство файлов cookie в Интернете - это файлы cookie Netscape. Модуль http.cookiejar
пытается следовать де-факто протоколу файлов cookie Netscape (который существенно отличается от протокола, установленного в исходной спецификации Netscape), включая учет атрибутов файлов cookie max-age
и port
, представленных в RFC 2965.
Примечание. Различные именованные параметры, содержащиеся в заголовках Set-Cookie
и Set-Cookie2
(например, домен и срок действия), обычно называются атрибутами. Чтобы отличить их от атрибутов Python, в документации по этому модулю используется термин cookie-attribute.
Смотрите так же:
urllib.request
- делает запросы по URL-адресу с автоматической обработкой файлов cookie.http.cookies
- определяет классы для генерации cookie, в основном полезен для кода на стороне сервера. Модули http.cookiejar
и http.cookies
не зависят друг от друга.http.cookiejar
:В первом примере показано наиболее частое использование 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 (предполагается, что расположение файла cookie определяется соглашением Unix/Netscape):
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
. Здесь включаются файлы 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/")