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

Модуль http.cookiejar в Python

Обработка cookie в запросах urllib.request

Модуль 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/")