Fir en Header, deen de Proxy-Betreiber festleet, bitt Requests HTTPAdapter.proxy_headers als Iwwerschreifungspunkt un:

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 ass e Beispill fir e Feld, dat dëse spezifesche Proxy versteet, an net eng Standardmanéier fir sech géintiwwer all Vermëttler z'authentifizéieren.

Fänkt mat super().proxy_headers(proxy) un. Requests benotzt déi Method fir Proxy-Authorization ze generéieren, wa vun der URL e Basic-Kont geliwwert gëtt. D'Gesamtresultat ze ersetzen kann dëst Verhalen verléieren.

Den Adapter gëtt dës Wäerter un de ProxyManager vun urllib3 weider. An engem HTTPS-Tunnel begleeden se CONNECT. Déi gewéinlech Request-Header-Zuordnung beschreift déi méi spéit Demande un den Zil.

Proxy-Managere ginn pro Proxy-URL gecacht. Betruecht dësen Hook net als ongecachte Callback pro Geschäftsufro fir e Wäert, dee sech bei all Opruff muss änneren. Wielt d'Transportverantwortung entspriechend, wann en Kontmarker variéiert.

Bei einfacher HTTP-Weiderleedung brauchen Proxy-Felder nach ëmmer déi virgesinn Konsumpolitik vum Vermëttler. Datt en Header an der Client-API proxy-spezifesch ass, ass keng Vertraulechkeetgarantie, wann de Proxy en weiderschickt.

Ähnlech Artikelen