Agordi proksilajn kapliniojn per HTTPAdapter.proxy_headers de Requests
Etendi HTTPAdapter.proxy_headers por kampo difinita de la proksilo, konservante la ekzistantan generadon de proksila aŭtentiga kaplinio en Requests.
Por kaplinio difinita de la proksila portanto, Requests montras HTTPAdapter.proxy_headers kiel anstataŭigan punkton:
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 estas ekzemplo de kampo komprenata de ĉi tiu aparta proksilo, ne norma maniero aŭtentigi ĉe ĉiu peranto.
Komencu per super().proxy_headers(proxy). Requests uzas tiun metodon por generi Proxy-Authorization kiam la URL liveras Basic-konton. Anstataŭigi la tutan rezulton povas perdi tiun konduton.
La adaptilo transdonas tiujn valorojn al ProxyManager de urllib3. Ĉe HTTPS-tunelo ili akompanas CONNECT. La ordinara mapado de petaj kaplinioj priskribas la postan celpeton.
Proksilaj administriloj estas kaŝmemorigitaj laŭ proksila URL. Ne traktu ĉi tiun hokon kiel nekaŝmemorigitan retrovokon por ĉiu komerca peto por valoro, kiu devas ŝanĝiĝi ĉe ĉiu voko. Elektu transportan posedon konforme kiam konta markilo varias.
Ĉe simpla HTTP-plusendado, proksilaj kampoj ankoraŭ bezonas la celitan konsumopolitikon de la peranto. Tio, ke kaplinio estas proksil-specifa en la klienta API, ne garantias konfidencon se la proksilo plusendas ĝin.