Używanie plików cookie i proxy w jednym openerze urllib w Pythonie
Połącz ProxyHandler i HTTPCookieProcessor w jednym openerze urllib, aby powiązane żądania przez proxy dzieliły zamierzony słoik cookie.
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ą.