Proxy-Header mat HTTPAdapter.proxy_headers vun Requests astellen
HTTPAdapter.proxy_headers fir e vum Proxy definéiert Feld erweideren, an dobäi dem Requests seng bestehend Generatioun vun Proxy-Authentifikatiouns-Headeren erhalen.
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.