Issettja headers tal-proxy b'HTTPAdapter.proxy_headers ta' Requests
Estendi HTTPAdapter.proxy_headers għal qasam definit mill-proxy filwaqt li żżomm il-ġenerazzjoni eżistenti tal-header tal-awtentikazzjoni tal-proxy ta' Requests.
Għal header definit mill-operatur tal-proxy, Requests jesponi HTTPAdapter.proxy_headers bħala punt ta' sostituzzjoni:
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 huwa eżempju ta' qasam li jifhem dan il-proxy partikolari, mhux mod standard biex tawtentika ma' kull intermedjarju.
Ibda b'super().proxy_headers(proxy). Requests juża dik il-metodu biex jiġġenera Proxy-Authorization meta l-URL jipprovdi kont Basic. Is-sostituzzjoni tar-riżultat kollu tista' titlef dan l-imġiba.
L-adapter jgħaddi dawn il-valuri lill-ProxyManager ta' urllib3. F'tunnel HTTPS dawn jakkumpanjaw lil CONNECT. Il-mapping tas-soltu tal-headers tat-talba jiddeskrivi t-talba aktar tard lejn id-destinazzjoni.
Il-maniġers tal-proxy huma cacheati skont l-URL tal-proxy. Tittrattax dan il-hook bħala callback mhux cacheat għal kull talba tan-negozju għal valur li jrid jinbidel f'kull sejħa. Agħżel is-sjieda tat-trasport skont dan meta l-markatur tal-kont ivarja.
Fit-trasferiment sempliċi tal-HTTP, l-oqsma tal-proxy xorta jeħtieġu l-politika tal-konsum maħsuba mill-intermedjarju. Li header ikun speċifiku għall-proxy fl-API tal-klijent mhix garanzija ta' kunfidenzjalità jekk il-proxy jgħaddih 'il quddiem.