Opener urllib może kierować żądania przez proxy i jednocześnie utrzymywać pliki cookie witryny. Przekaż mu oba programy obsługi:

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

Przykład używa zwykłego miejsca docelowego HTTP i jego jawnej trasy proxy. Do dozwolonego sprawdzenia publicznej witryny bez uwierzytelniania proxy wybierz kandydata z listy proxy HTTP dla tej trasy, zachowując zamierzony słoik cookie. Użyj ponownie openera do późniejszych żądań tej samej sesji witryny. Procesor cookie wyodrębnia akceptowalne pliki cookie odpowiedzi i dodaje odpowiednie do kolejnych żądań.

Tworzenie nowego pustego CookieJar przed każdym wywołaniem odrzuca tę ciągłość. Trzymaj słoik obok sesji, którą reprezentuje; używaj osobnych słoików dla kont lub przepływów pracy, których pliki cookie mają pozostać osobne.

Podstawowy CookieJar przechowuje stan w pamięci. Aby zachować go między uruchomieniami programu, wybierz odpowiednią podklasę FileCookieJar i celowo ją zapisz lub wczytaj.

Nie trzeba instalować globalnego openera w tym układzie. Wywołanie metody open tego obiektu utrzymuje proxy i pliki cookie powiązane z tą samą operacją.

Powiązane artykuły