Python urllib: HTTP მოთხოვნებისთვის Basic პროქსის ავთენტიფიკაცია
შექმენით გამოკვეთილი urllib opener HTTP პროქსის Basic გამოწვევისთვის და განასხვავეთ ეს ჩვეულებრივი HTTP გაცვლა HTTPS CONNECT ავთენტიფიკაციისგან.
HTTP პროქსის Basic გამოწვევისთვის გამოიყენეთ ProxyBasicAuthHandler. ეს ჩვეულებრივი HTTP მაგალითი მარშრუტსა და ანგარიშს ერთ opener-ში ინახავს:
import os
from urllib.request import (
ProxyHandler, ProxyBasicAuthHandler,
HTTPPasswordMgrWithDefaultRealm, build_opener,
)
proxy_url = 'http://proxy.example:8080'
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(
None, proxy_url,
os.environ['PROXY_USER'], os.environ['PROXY_PASSWORD'],
)
opener = build_opener(
ProxyHandler({'http': proxy_url}),
ProxyBasicAuthHandler(passwords),
)
with opener.open('http://example.com/', timeout=10) as response:
print(response.status)გამოიყენეთ რეალური ბოლო წერტილი და ოპერატორის მიერ მოწოდებული ანგარიში. ეს დამმუშავებელი პროქსის გამოწვევისთვის პაროლების მმართველს იყენებს; შეესაბამეთ მოსალოდნელი პროქსის URI და realm. დანიშნულების მხარეს Basic ავთენტიფიკაცია სხვა დამმუშავებელს იყენებს.
opener-ის უშუალო გამოძახება ამ კონფიგურაციას ლოკალურად ინახავს. მოთხოვნის URL რჩება საიტი, და არა შუამავალი. ეს ღია HTTP მარშრუტი Basic გაცვლას არ შიფრავს.
ამ მაგალითიდან HTTPS გვირაბის მხარდაჭერა არ დაასკვნათ. 407 CONNECT-ის დროს კონფიგურაციისას ხდება, დანიშნულების ჩვეულებრივ პასუხამდე; არჩეულმა ინტეგრაციამ ავთენტიფიკაცია იქ უნდა დაამუშაოს. საიტის შესვლის დამმუშავებლის შეცვლა იმ ადრინდელ გამოწვევას ვერ გამოასწორებს.
უფლებამოსილების მატარებელი პროქსის URL-ები ძველ მაგალითებში გვხვდება როგორც სხვა ფორმატი. თუ იყენებთ, URL-ის გამყოფები სწორად დააკოდირეთ და მიღებული საიდუმლოს მატარებელი URL ჟურნალებს მიღმა შეინახეთ.