Brug cookies og en proxy i én Python urllib-opener
Kombiner ProxyHandler og HTTPCookieProcessor på én urllib-opener, så relaterede proxyede anmodninger deler den tilsigtede cookiebeholder.
En urllib-opener kan sende anmodninger gennem en proxy og samtidig vedligeholde websteds-cookies. Giv den begge handlere:
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()Eksemplet bruger en almindelig HTTP-destination og dens eksplicitte proxyrute. Til en tilladt kontrol af et offentligt websted uden proxygodkendelse skal du vælge en kandidat fra HTTP-proxylisten til den rute og beholde den tilsigtede cookiebeholder. Genbrug opener til senere anmodninger, der hører til samme webstedssession. Cookieprocessoren udtrækker acceptable svar-cookies og tilføjer de relevante til efterfølgende anmodninger.
At oprette en ny tom CookieJar før hvert kald kaster den kontinuitet væk. Hold beholderen sammen med den session, den repræsenterer; brug separate beholdere til konti eller arbejdsgange, hvis cookies skal forblive adskilte.
En grundlæggende CookieJar holder tilstand i hukommelsen. Til vedvarende lagring mellem programkørsler skal du vælge en passende FileCookieJar-underklasse og gemme eller indlæse den bevidst.
Der er ingen grund til at installere en global opener til denne ordning. Kald af dette objekts open-metode holder proxien og cookies knyttet til samme handling.