Usar cookies y un proxy en un solo opener de urllib de Python
Combine ProxyHandler y HTTPCookieProcessor en un opener de urllib para que las solicitudes proxificadas relacionadas compartan el tarro de cookies previsto.
Un opener de urllib puede enrutar solicitudes a través de un proxy y mantener las cookies del sitio al mismo tiempo. Deles ambos manejadores:
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()El ejemplo usa un destino HTTP simple y su ruta de proxy explícita. Para una comprobación permitida de un sitio público sin autenticación de proxy, elija un candidato de la lista de proxies HTTP para esa ruta mientras conserva el tarro de cookies previsto. Reutilice el opener para solicitudes posteriores de la misma sesión del sitio. El procesador de cookies extrae las cookies de respuesta aceptables y añade las aplicables a las solicitudes siguientes.
Crear un CookieJar vacío nuevo antes de cada llamada descarta esa continuidad. Mantenga el tarro junto a la sesión que representa; use tarros separados para cuentas o flujos de trabajo cuyas cookies deban permanecer separadas.
Un CookieJar básico mantiene el estado en memoria. Para la persistencia entre ejecuciones del programa, elija una subclase adecuada de FileCookieJar y guárdela o cárguela deliberadamente.
No es necesario instalar un opener global para esta disposición. Llamar al método open de este objeto mantiene el proxy y las cookies vinculados a la misma operación.