http.cookiejar — Cookie handling for HTTP clients¶
Вихідний код: Lib/http/cookiejar.py
The http.cookiejar module defines classes for automatic handling of HTTP
cookies. It is useful for accessing websites that require small pieces of data
– cookies – to be set on the client machine by an HTTP response from a
web server, and then returned to the server in later HTTP requests.
Обробляються як звичайний протокол cookie Netscape, так і протокол, визначений RFC 2965. Обробку RFC 2965 вимкнено за замовчуванням. RFC 2109 файли cookie аналізуються як файли cookie Netscape і згодом розглядаються як файли cookie Netscape або RFC 2965 відповідно до чинної «політики». Зверніть увагу, що більшість файлів cookie в Інтернеті є файлами cookie Netscape. http.cookiejar намагається слідувати фактичному протоколу файлів cookie Netscape (який суттєво відрізняється від викладеного в оригінальній специфікації Netscape), включно з врахуванням max-age і port атрибути cookie, введені з RFC 2965.
Примітка
The various named parameters found in Set-Cookie and
Set-Cookie2 headers (for example, domain and expires) are
conventionally referred to as attributes. To distinguish them from
Python attributes, the documentation for this module uses the term
cookie-attribute instead.
Модуль визначає такий виняток:
- 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 і співпраця з веб-браузерами.This should not be initialized directly – use its subclasses below instead.
Змінено в версії 3.8: Параметр імені файлу підтримує 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'))¶
Constructor arguments should be passed as keyword arguments only. blocked_domains is a sequence of domain names that we never accept cookies from, nor return cookies to. allowed_domains if not
None, this is a sequence of the only domains for which we accept and return cookies. secure_protocols is a sequence of protocols for which secure cookies can be added to. By default https and wss (secure websocket) are considered secure protocols. For all other arguments, see the documentation forCookiePolicyandDefaultCookiePolicyobjects.DefaultCookiePolicyimplements the standard accept / reject rules for Netscape and RFC 2965 cookies. By default, RFC 2109 cookies (that is, cookies received in a Set-Cookie header with a version cookie-attribute of 1) are treated according to the RFC 2965 rules. However, if RFC 2965 handling is turned off orrfc2109_as_netscapeisTrue, RFC 2109 cookies are „downgraded“ by theCookieJarinstance to Netscape cookies, by setting theversionattribute of theCookieinstance to 0.DefaultCookiePolicyalso provides some parameters to allow some fine-tuning of policy.
- class http.cookiejar.Cookie¶
This class represents Netscape, RFC 2109 and RFC 2965 cookies. It is not expected that users of
http.cookiejarconstruct their ownCookieinstances. Instead, if necessary, callmake_cookies()on aCookieJarinstance.
Дивись також
- Модуль
urllib.request Відкриття URL-адреси з автоматичною обробкою файлів cookie.
- Модуль
http.cookies Класи cookie HTTP, які в основному корисні для коду на стороні сервера. Модулі
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. Широко не використовується.
- https://kristol.org/cookie/errata.html
Незавершені помилки до RFC 2965.
RFC 2964 - Використання керування станом HTTP
CookieJar and FileCookieJar objects¶
Об’єкти CookieJar підтримують протокол iterator для ітерації об’єктів Cookie.
CookieJar має такі методи:
- CookieJar.add_cookie_header(request)¶
Додайте правильний заголовок Cookie до запиту.
If policy allows (that is, the
rfc2965andhide_cookie2attributes of theCookieJar’sCookiePolicyinstance are true and false respectively), the Cookie2 header is also added when appropriate.The request object (usually a
urllib.request.Requestinstance) must support the methodsget_full_url(),has_header(),get_header(),header_items(),add_unredirected_header()and the attributeshost,type,unverifiableandorigin_req_hostas documented byurllib.request.Змінено в версії 3.3: request object needs
origin_req_hostattribute. Dependency on a deprecated methodget_origin_req_host()has been removed.
- CookieJar.extract_cookies(response, request)¶
Отримайте файли cookie з відповіді HTTP та зберігайте їх у
CookieJar, де це дозволено політикою.CookieJarшукатиме допустимі заголовки Set-Cookie і Set-Cookie2 в аргументі response і зберігатиме файли cookie відповідно (згідно зCookiePolicy .set_ok()підтвердження методу).The response object (usually the result of a call to
urllib.request.urlopen(), or similar) should support aninfo()method, which returns anemail.message.Messageinstance.The request object (usually a
urllib.request.Requestinstance) must support the methodget_full_url()and the attributeshost,unverifiableandorigin_req_host, as documented byurllib.request. The request is used to set default values for cookie-attributes as well as for checking that the cookie is allowed to be set.Змінено в версії 3.3: request object needs
origin_req_hostattribute. Dependency on a deprecated methodget_origin_req_host()has been removed.
- 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, що належать цьому домену. Якщо задано два аргументи, файли cookie, що належать до вказаного домену та шляху URL-адреси, видаляються. Якщо задано три аргументи, файл cookie з указаним доменом, шляхом і ім’ям видаляється.
Викликає
KeyError, якщо не існує відповідного файлу cookie.
- CookieJar.clear_session_cookies()¶
Видалити всі файли cookie сесії.
Discards all contained cookies that have a true
discardattribute (usually because they had either nomax-ageorexpirescookie-attribute, or an explicitdiscardcookie-attribute). For interactive browsers, the end of a session usually corresponds to closing the browser window.Note that the
save()method won’t save session cookies anyway, unless you ask otherwise by passing a true ignore_discard argument.
FileCookieJar реалізує такі додаткові методи:
- FileCookieJar.save(filename=None, ignore_discard=False, ignore_expires=False)¶
Збережіть файли cookie у файл.
Цей базовий клас викликає
NotImplementedError. Підкласи можуть залишати цей метод нереалізованим.filename is the name of file in which to save cookies. If filename is not specified,
self.filenameis used (whose default is the value passed to the constructor, if any); ifself.filenameisNone,ValueErroris raised.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¶
Якщо істина, ліниво завантажувати файли cookie з диска. Цей атрибут не слід призначати. Це лише підказка, оскільки це впливає лише на продуктивність, а не на поведінку (якщо файли cookie на диску не змінюються). Об’єкт
CookieJarможе його ігнорувати. Жоден із класівFileCookieJar, включених до стандартної бібліотеки, не завантажує файли cookie ліниво.
Підкласи FileCookieJar і співпраця з веб-браузерами¶
Наступні підкласи CookieJar надаються для читання та запису.
- class http.cookiejar.MozillaCookieJar(filename=None, delayload=None, policy=None)¶
A
FileCookieJarthat can load from and save cookies to disk in the Mozillacookies.txtfile format (which is also used by curl and the Lynx and Netscape browsers).Примітка
Це втрачає інформацію про RFC 2965 файли cookie, а також про нові або нестандартні атрибути файлів cookie, такі як
порт.Попередження
Зробіть резервну копію файлів cookie перед збереженням, якщо у вас є файли cookie, втрата/пошкодження яких було б незручним (є деякі тонкощі, які можуть призвести до незначних змін у файлі під час завантаження/збереження в обидві сторони).
Також зауважте, що файли cookie, збережені під час роботи Mozilla, будуть видалені Mozilla.
- class http.cookiejar.LWPCookieJar(filename=None, delayload=None, policy=None)¶
FileCookieJar, який може завантажувати та зберігати файли cookie на диск у форматі, сумісному з форматом файлуSet-Cookie3бібліотеки libwww-perl. Це зручно, якщо ви хочете зберігати файли cookie у файлі, який читає людина.Змінено в версії 3.8: Параметр імені файлу підтримує path-like object.
CookiePolicy objects¶
Об’єкти, що реалізують інтерфейс 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, якщо файли cookie не повинні повертатися, враховуючи шлях до файлів cookie.Перегляньте документацію для
domain_return_ok().
На додаток до реалізації наведених вище методів, реалізації інтерфейсу CookiePolicy також повинні надавати такі атрибути, що вказують, які протоколи слід використовувати та як. Усі ці атрибути можна призначити.
- CookiePolicy.netscape¶
Впровадити протокол Netscape.
- CookiePolicy.hide_cookie2¶
Не додавайте заголовок Cookie2 до запитів (наявність цього заголовка вказує серверу, що ми розуміємо файли cookie RFC 2965).
Найкориснішим способом визначення класу CookiePolicy є створення підкласу з DefaultCookiePolicy і перевизначення деяких або всіх методів вище. Сама CookiePolicy може використовуватися як «нульова політика», щоб дозволити встановлення та отримання будь-яких і всіх файлів cookie (це навряд чи буде корисним).
DefaultCookiePolicy objects¶
Реалізує стандартні правила прийому та повернення файлів cookie.
Охоплено файли 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, цей клас дозволяє блокувати та дозволяти доменам установлювати та отримувати файли cookie. Є також деякі перемикачі суворості, які дозволяють трохи посилити досить вільні правила протоколу Netscape (ціною блокування деяких безпечних файлів cookie).
A domain blocklist and allowlist is provided (both off by default). Only domains
not in the blocklist and present in the allowlist (if the allowlist is active)
participate in cookie setting and returning. Use the blocked_domains
constructor argument, and blocked_domains() and
set_blocked_domains() methods (and the corresponding
argument and methods for allowed_domains). If you set an allowlist, you can
turn it off again by setting it to 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)¶
Return
Trueif domain is on the blocklist for setting or receiving cookies.
- DefaultCookiePolicy.allowed_domains()¶
Return
None, or the sequence of allowed domains (as a tuple).
- DefaultCookiePolicy.set_allowed_domains(allowed_domains)¶
Set the sequence of allowed domains, or
None.
- DefaultCookiePolicy.is_not_allowed(domain)¶
Return
Trueif domain is not on the allowlist for setting or receiving cookies.
DefaultCookiePolicy екземпляри мають наведені нижче атрибути, які всі ініціалізуються однойменними аргументами конструктора, і які всі можуть бути призначені.
- DefaultCookiePolicy.rfc2109_as_netscape¶
If true, request that the
CookieJarinstance downgrade RFC 2109 cookies (that is, cookies received in a Set-Cookie header with a version cookie-attribute of 1) to Netscape cookies by setting the version attribute of theCookieinstance to 0. The default value isNone, in which case RFC 2109 cookies are downgraded if and only if RFC 2965 handling is turned off. Therefore, RFC 2109 cookies are downgraded by default.
Перемикачі загальної жорсткості:
- DefaultCookiePolicy.strict_domain¶
Не дозволяйте сайтам встановлювати двокомпонентні домени з доменами верхнього рівня з кодом країни, наприклад
.co.uk,.gov.uk,.co.nz.etc. Це далеко не ідеально і не гарантовано спрацює!
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 is a collection of flags. Its value is constructed by
or-ing together (for example, DomainStrictNoDots|DomainStrictNonDomain means
both flags are set).
- DefaultCookiePolicy.DomainStrictNoDots¶
When setting cookies, the „host prefix“ must not contain a dot (for example,
www.foo.bar.comcan’t set a cookie for.bar.com, becausewww.foocontains a dot).
- DefaultCookiePolicy.DomainStrictNonDomain¶
Cookies that did not explicitly specify a
domaincookie-attribute can only be returned to a domain equal to the domain that set the cookie (for example,spam.example.comwon’t be returned cookies fromexample.comthat had nodomaincookie-attribute).
- DefaultCookiePolicy.DomainRFC2965Match¶
Під час встановлення файлів cookie вимагайте повного збігу домену RFC 2965.
Наступні атрибути надано для зручності та є найкориснішими комбінаціями наведених вище позначок:
- DefaultCookiePolicy.DomainLiberal¶
Equivalent to 0 (that is, all of the above Netscape domain strictness flags switched off).
- DefaultCookiePolicy.DomainStrict¶
Еквівалент
DomainStrictNoDots|DomainStrictNonDomain.
Cookie objects¶
Екземпляри Cookie мають атрибути Python, які приблизно відповідають стандартним атрибутам cookie, визначеним у різних стандартах cookie. Відповідність не є однозначною, оскільки існують складні правила для призначення значень за замовчуванням, тому що атрибути cookie max-age і expires містять еквівалентну інформацію, і тому, що RFC 2109 http.cookiejar може «понизити» файли cookie з версії 1 до версії 0 (Netscape).
Призначення цих атрибутів не повинно бути необхідним, крім рідкісних випадків у методі CookiePolicy. Клас не забезпечує внутрішньої узгодженості, тому ви повинні знати, що ви робите, якщо це робите.
- Cookie.version¶
Integer or
None. Netscape cookies haveversion0. RFC 2965 and RFC 2109 cookies have aversioncookie-attribute of 1. However, note thathttp.cookiejarmay „downgrade“ RFC 2109 cookies to Netscape cookies, in which caseversionis 0.
- Cookie.name¶
Назва файлу cookie (рядок).
- Cookie.value¶
Cookie value (a string), or
None.
- Cookie.port¶
String representing a port or a set of ports (for example, „80“, or „80,8080“), or
None.
- Cookie.domain¶
Cookie domain (a string).
- Cookie.path¶
Cookie path (a string, for example,
'/acme/rocket_launchers').
- Cookie.secure¶
True, якщо cookie має повертатися лише через безпечне з’єднання.
- Cookie.expires¶
Integer expiry date in seconds since epoch, or
None. See also theis_expired()method.
- Cookie.discard¶
True, якщо це сеансовий файл cookie.
- Cookie.comment¶
String comment from the server explaining the function of this cookie, or
None.
- Cookie.comment_url¶
URL linking to a comment from the server explaining the function of this cookie, or
None.
- Cookie.rfc2109¶
Trueif this cookie was received as an RFC 2109 cookie (that is, the cookie arrived in a Set-Cookie header, and the value of the Version cookie-attribute in that header was 1). This attribute is provided becausehttp.cookiejarmay „downgrade“ RFC 2109 cookies to Netscape cookies, in which caseversionis 0.
- Cookie.port_specified¶
True, якщо порт або набір портів було явно вказано сервером (у заголовку Set-Cookie / Set-Cookie2).
- Cookie.domain_specified¶
True, якщо домен явно вказано сервером.
- Cookie.domain_initial_dot¶
True, якщо домен, явно вказаний сервером, починається з крапки ('.'').
Файли cookie можуть мати додаткові нестандартні атрибути файлів 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 (припускається, що для розташування файлу 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/")