Адкрывальнік urllib можа накіроўваць запыты праз проксі і адначасова падтрымліваць кукі сайта. Дайце яму абодва апрацоўшчыкі:

from http.cookiejar import CookieJar
from urllib.request import (
    HTTPCookieProcessor, ProxyHandler, build_opener,
)

cookies = CookieJar()
opener = build_opener(
    ProxyHandler({"http": "http://proxy.example:8080"}),
    HTTPCookieProcessor(cookies),
)
with opener.open("http://www.example.com/", timeout=10) as response:
    body = response.read()

Прыклад выкарыстоўвае звычайны HTTP-адрасат і яго явны маршрут праз проксі. Для дазволенай праверкі публічнага сайта без аўтэнтыфікацыі проксі выберыце кандыдата са спісу HTTP-проксі для гэтага маршруту, захоўваючы патрэбную банку кукаў. Паўторна выкарыстоўвайце opener для наступных запытаў той жа сесіі сайта. Апрацоўшчык кукаў вымае прымальныя кукі адказу і дадае прыдатныя да наступных запытаў.

Стварэнне новай пустой CookieJar перад кожным выклікам знішчае гэтую пераемнасць. Трымайце банку разам з сесіяй, якую яна ўяўляе; выкарыстоўвайце асобныя банкі для ўліковых запісаў або працэсаў, чые кукі павінны заставацца асобнымі.

Базавая CookieJar трымае стан у памяці. Для захавання паміж запускамі праграмы выберыце адпаведны падклас FileCookieJar і свядома захавайце або загрузіце яго.

Для такой схемы не трэба ўсталёўваць глабальны opener. Выклік метаду open гэтага аб'екта захоўвае проксі і кукі ў адной аперацыі.

Падобныя артыкулы