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