Използване на бисквитки и прокси в един отварящ обект на Python urllib
Комбинирайте ProxyHandler и HTTPCookieProcessor в един urllib opener, така че свързаните през прокси заявки да споделят желаното хранилище за бисквитки.
Един urllib opener може да насочва заявки през прокси и същевременно да поддържа бисквитки на сайта. Дайте му и двата обработчика:
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()Примерът използва обикновена HTTP дестинация и явния си маршрут през прокси. За разрешена проверка на публичен сайт без удостоверяване на прокси изберете кандидат от списъка с HTTP прокси сървъри за този маршрут, като запазите желаното хранилище за бисквитки. Използвайте opener отново за следващи заявки от същата сесия на сайта. Обработчикът на бисквитки извлича приемливите бисквитки от отговора и добавя подходящите към следващите заявки.
Създаването на ново празно CookieJar преди всяко извикване унищожава тази приемственост. Пазете хранилището заедно със сесията, която представлява; използвайте отделни хранилища за акаунти или работни процеси, чиито бисквитки трябва да останат отделни.
Основното CookieJar пази състоянието в паметта. За запазване между изпълнения на програмата изберете подходящ подклас на FileCookieJar и го запазете или заредете съзнателно.
Няма нужда да инсталирате глобален opener за тази подредба. Извикването на метода open на този обект държи проксито и бисквитките привързани към една и съща операция.