Un opener urllib può instradare le richieste attraverso un proxy e mantenere i cookie del sito allo stesso tempo. Dagli entrambi i gestori:

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

L'esempio usa una destinazione HTTP semplice e il suo percorso proxy esplicito. Per una verifica consentita di un sito pubblico senza autenticazione proxy, scegli un candidato dall'elenco dei proxy HTTP per quel percorso mantenendo il barattolo dei cookie previsto. Riusa l'opener per le richieste successive della stessa sessione del sito. Il processore dei cookie estrae i cookie di risposta accettabili e aggiunge quelli applicabili alle richieste seguenti.

Creare un nuovo CookieJar vuoto prima di ogni chiamata scarta questa continuità. Tieni il barattolo accanto alla sessione che rappresenta; usa barattoli separati per account o flussi di lavoro i cui cookie devono restare separati.

Un CookieJar di base conserva lo stato in memoria. Per la persistenza tra le esecuzioni del programma, scegli una sottoclasse adatta di FileCookieJar e salvala o caricala deliberatamente.

Non è necessario installare un opener globale per questa disposizione. Chiamare il metodo open di questo oggetto mantiene proxy e cookie collegati alla stessa operazione.

Articoli correlati