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-ებს იმავე ოპერაციასთან აკავშირებს.

დაკავშირებული სტატიები