Выкарыстанне кукаў і проксі ў адным адкрывальніку Python urllib
Аб'яднайце ProxyHandler і HTTPCookieProcessor у адным адкрывальніку urllib, каб звязаныя праксі-запыты выкарыстоўвалі патрэбную банку кукаў.
Адкрывальнік 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 гэтага аб'екта захоўвае проксі і кукі ў адной аперацыі.