Usar cookies e un proxy nun só opener de urllib de Python
Combine ProxyHandler e HTTPCookieProcessor nun opener de urllib para que as solicitudes proxificadas relacionadas compartan o tarro de cookies previsto.
Un opener de urllib pode encamiñar solicitudes a través dun proxy e manter as cookies do sitio á vez. Dálles ambos os xestores:
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()O exemplo usa un destino HTTP simple e a súa ruta de proxy explícita. Para unha comprobación permitida dun sitio público sen autenticación de proxy, escolla un candidato da lista de proxies HTTP para esa ruta mentres conserva o tarro de cookies previsto. Reutilice o opener para solicitudes posteriores da mesma sesión do sitio. O procesador de cookies extrae as cookies de resposta aceptables e engade as aplicables ás solicitudes seguintes.
Crear un CookieJar baleiro novo antes de cada chamada descarta esa continuidade. Manteña o tarro xunto á sesión que representa; use tarros separados para contas ou fluxos de traballo cuxas cookies deban permanecer separadas.
Un CookieJar básico mantén o estado na memoria. Para a persistencia entre execucións do programa, escolla unha subclase axeitada de FileCookieJar e gárdea ou cárguea deliberadamente.
Non é necesario instalar un opener global para esta disposición. Chamar ao método open deste obxecto mantén o proxy e as cookies ligados á mesma operación.