Python urllib: Basic פּראָקסי־אויטענטיפֿיקאַציע פֿאַר HTTP־בקשות
בויען אַן עקספּליציט urllib־עפֿנער פֿאַר אַ Basic־אויסרופֿונג פֿון אַן HTTP־פּראָקסי, און טיילן דעם געוויינטלעכן HTTP־אויסטויש אָפּ פֿון HTTPS CONNECT־אויטענטיפֿיקאַציע.
פֿאַר אַ Basic־אויסרופֿונג פֿון אַן HTTP־פּראָקסי ניצט ProxyBasicAuthHandler. דאָס געוויינטלעכע HTTP־בײַשפּיל האַלט די רוטע און דעם חשבון אין איין עפֿנער:
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־אויטענטיפֿיקאַציע ביים ציל ניצט אַן אַנדער האַנדלער.
אָנרופֿן דעם עפֿנער גלײַך האַלט דעם אױפֿשטעל לאָקאַל. די URL פֿון דער בקשה בלײַבט די וועבזײַט, נישט דער מיטלער. דער קלאָרער HTTP־וועג פֿאַרשליסלט נישט קיין Basic־אויסטויש.
מען טאָר נישט אָפּלײַטן HTTPS־טונעל־שטיצע פֿון דעם בײַשפּיל. אַ 407 בשעת CONNECT פּאַסירט בײַם אויפֿשטעלן, פֿאַר אַ געוויינטלעכער ענטפֿער פֿונעם ציל; די אויסגעקליבענע אינטעגראַציע מוז דאָרט באַהאַנדלען די אויטענטיפֿיקאַציע. פֿאַרבייטן דעם לאָגין־האַנדלער פֿון דער וועבזײַט קען נישט פֿאַרריכטן יענע פֿריִיִקע אויסרופֿונג.
פּראָקסי־URLs מיט באַשײַנדיקונגען זענען אַן אַנדער פֿאָרמאַט וואָס געפֿינט זיך אין עלטערע בײַשפּילן. אויב מע ניצט זיי, קאָדירט ריכטיק די URL־צעשיידונגען און האַלט דעם סודיקן URL אַרויס פֿון די לאָגן.