Використання cookie та проксі в одному відкривачі Python urllib
Об'єднайте ProxyHandler і HTTPCookieProcessor в одному відкривачі urllib, щоб пов'язані запити через проксі використовували потрібну банку cookie.
Відкривач urllib може скеровувати запити через проксі й водночас підтримувати cookie сайту. Передайте йому обидва обробники:
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-проксі для цього маршруту, зберігаючи потрібну банку cookie. Повторно використовуйте opener для наступних запитів тієї самої сесії сайту. Обробник cookie витягує прийнятні cookie відповіді й додає відповідні до наступних запитів.
Створення нової порожньої CookieJar перед кожним викликом знищує цю наступність. Тримайте банку поряд із сесією, яку вона представляє; використовуйте окремі банки для облікових записів або робочих процесів, чиї cookie мають залишатися окремими.
Базова CookieJar зберігає стан у пам'яті. Для збереження між запусками програми виберіть відповідний підклас FileCookieJar і свідомо збережіть або завантажте його.
Для такої схеми не потрібно встановлювати глобальний opener. Виклик методу open цього об'єкта залишає проксі та cookie прив'язаними до однієї операції.