Un opener urllib poate direcționa cereri prin proxy și poate întreține cookie-urile site-ului în același timp. Dați-i ambii handleri:

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

Exemplul folosește o destinație HTTP simplă și ruta sa explicită prin proxy. Pentru o verificare permisă a unui site public fără autentificare proxy, alegeți un candidat din lista de proxy-uri HTTP pentru acea rută, păstrând borcanul de cookie-uri dorit. Reutilizați openerul pentru cererile ulterioare din aceeași sesiune a site-ului. Procesorul de cookie-uri extrage cookie-urile de răspuns acceptabile și le adaugă pe cele aplicabile cererilor următoare.

Crearea unui CookieJar gol nou înainte de fiecare apel renunță la această continuitate. Țineți borcanul lângă sesiunea pe care o reprezintă; folosiți borcane separate pentru conturi sau fluxuri de lucru ale căror cookie-uri trebuie să rămână separate.

Un CookieJar de bază păstrează starea în memorie. Pentru persistență între rulările programului, alegeți o subclasă FileCookieJar potrivită și salvați-o sau încărcați-o în mod deliberat.

Nu este nevoie să instalați un opener global pentru această aranjare. Apelarea metodei open a acestui obiect ține proxy-ul și cookie-urile legate de aceeași operație.

Articole similare