Een urllib-opener kan verzoeken via een proxy routeren en tegelijk de cookies van een website bijhouden. Geef hem beide handlers:

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()

Het voorbeeld gebruikt een gewone HTTP-bestemming en de expliciete proxyroute ervan. Kies voor een toegestane controle van een openbare site zonder proxyauthenticatie een kandidaat uit de HTTP-proxylijst voor die route en behoud de bedoelde cookiepot. Hergebruik de opener voor latere verzoeken van dezelfde websitesessie. De cookieprocessor haalt acceptabele antwoordcookies eruit en voegt toepasselijke toe aan volgende verzoeken.

Bij elke aanroep een nieuwe lege CookieJar maken gooit die continuïteit weg. Houd de pot naast de sessie die hij vertegenwoordigt; gebruik aparte potten voor accounts of workflows waarvan de cookies gescheiden moeten blijven.

Een basis-CookieJar houdt de status in het geheugen. Kies voor persistentie tussen programmaruns een geschikte FileCookieJar-subklasse en sla deze bewust op of laad deze bewust.

Het is niet nodig een globale opener te installeren voor deze opzet. Het aanroepen van de open-methode van dit object houdt de proxy en cookies aan dezelfde bewerking gekoppeld.

Gerelateerde artikelen