Python Glossary English

все Python 3urllib.requestпонятие

urllib.request.HTTPCookieProcessor

cookie и прокси

Связывает opener с http.cookiejar.CookieJar: принимает cookie из ответов и подставляет их в следующие запросы.

Синтаксис

urllib.request.HTTPCookieProcessor(cookiejar=None)

Без него urllib не хранит cookie вовсе: Set-Cookie из ответа выбрасывается, и вход на сайт «не запоминается» между запросами. Работает он только для opener, в который добавлен, — urlopen() без install_opener() cookie не увидит. Чтобы сохранить их между запусками, передайте MozillaCookieJar с именем файла и вызовите save().

Примеры

import email.message, io, urllib.error, urllib.request, urllib.response
def reply(req, code, body=b'', **headers):
    msg = email.message.Message()
    for name, value in headers.items():
        msg[name.replace('_', '-')] = value
    resp = urllib.response.addinfourl(io.BytesIO(body), msg, req.full_url, code)
    resp.msg = 'demo'
    return resp
import http.cookiejar
class Server(urllib.request.BaseHandler):
    handler_order = 100
    def http_open(self, req):
        print(req.selector, req.get_header('Cookie'))
        if req.selector == '/login':
            return reply(req, 200, Set_Cookie='sid=42; Path=/')
        return reply(req, 200)
jar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(Server, urllib.request.HTTPCookieProcessor(jar))
opener.open('http://example.com/login')
opener.open('http://example.com/home')
# → /login None / /home sid=42

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности