פֿאַר אַ קעפּל וואָס דער פּראָקסי אָפּעראַטאָר באַשטימט, שטעלט Requests צו HTTPAdapter.proxy_headers ווי אַ איבערשרייבונג-פּונקט:

from urllib.parse import urlsplit
import requests
from requests.adapters import HTTPAdapter

class TaggedProxy(HTTPAdapter):
    def proxy_headers(self, proxy):
        headers = super().proxy_headers(proxy)
        endpoint = urlsplit(proxy)
        if (endpoint.scheme == 'http'
                and endpoint.hostname == 'proxy.example'
                and endpoint.port == 8080):
            headers['X-Proxy-Account'] = 'department-a'
        return headers

with requests.Session() as session:
    adapter = TaggedProxy()
    session.mount('http://', adapter)
    session.mount('https://', adapter)
    response = session.get(
        'https://service.example/data',
        proxies={'https': 'http://proxy.example:8080'},
        timeout=15,
    )

X-Proxy-Account איז אַ ביישפּיל פֿון אַ פֿעלד וואָס דער באַזונדערער פּראָקסי פֿאַרשטייט, נישט קיין סטאַנדאַרד וועג זיך אויטענטיפֿיצירן בײַ יעדן מיטלער.

אָנהייבט מיט super().proxy_headers(proxy). Requests ניצט דעם מעתוד צו שאַפֿן Proxy-Authorization ווען דער URL גיט אַ Basic קאָנטע. איבערשרייבן דאָס גאַנצע רעזולטאַט קען פֿאַרלירן דעם אויפֿפֿיר.

דער אַדאַפּטער גיט די ווערטן איבער צו urllib3ס ProxyManager. אין אַ HTTPS טונעל באַגלייטן זיי CONNECT. די געוויינטלעכע צוטיילונג פֿון בקשה-קעפּלעך באַשרײַבט די שפּעטערדיקע בקשה צום ציל.

פּראָקסי-פֿאַרוואַלטער ווערן קאַשירט לויט פּראָקסי URL. באַטראַכט נישט דעם האַק ווי אַ ניט-קאַשירטן צוריקרוף פֿאַר יעדער געשעפֿט-בקשה פֿאַר אַ ווערט וואָס מוז זיך ענדערן בײַ יעדער רוף. קלייבט די טראַנספּאָרט-אייגנטום דערנאָך ווען דער קאָנטע-צייכן ענדערט זיך.

בײַ פּשוטער HTTP איבערגעבן דאַרפֿן פּראָקסי-פֿעלדער נאָך די געמיינטע באַניץ-פּאָליטיק פֿון מיטלער. אַז אַ קעפּל איז פּראָקסי-באַזונדער אין דעם קליענט API איז נישט קיין פֿאַרזיכערונג פֿאַר סודיות אויב דער פּראָקסי גיט עס ווײַטער.

פֿאַרבונדענע אַרטיקלען