Starpniekservera galveņu iestatīšana ar Requests HTTPAdapter.proxy_headers
Paplašiniet HTTPAdapter.proxy_headers starpniekservera definētam laukam, saglabājot esošo Requests starpniekservera autentifikācijas galvenes ģenerēšanu.
Galvenei, ko definē starpniekservera operators, Requests piedāvā HTTPAdapter.proxy_headers kā pārrakstīšanas punktu:
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 ir piemērs laukam, ko saprot tieši šis starpniekserveris, nevis standarta veids, kā autentificēties pie jebkura starpnieka.
Sāciet ar super().proxy_headers(proxy). Requests izmanto šo metodi, lai ģenerētu Proxy-Authorization, kad URL nodrošina Basic kontu. Visa rezultāta aizstāšana var zaudēt šo uzvedību.
Adapteris nodod šīs vērtības urllib3 ProxyManager. HTTPS tunelī tās pavada CONNECT. Parastā pieprasījuma galveņu kartēšana apraksta vēlāko pieprasījumu galamērķim.
Starpniekservera pārvaldnieki tiek kešoti pēc starpniekservera URL. Neuzskatiet šo āķi par nekešotu atzvanīšanu katram biznesa pieprasījumam vērtībai, kurai jāmainās katrā izsaukumā. Kad konta marķieris mainās, izvēlieties transporta piederību atbilstoši.
Vienkāršā HTTP pārsūtīšanā starpniekservera laukiem joprojām vajadzīga starpnieka paredzētā patēriņa politika. Tas, ka galvene klienta API ir starpniekserveram raksturīga, negarantē konfidencialitāti, ja starpniekserveris to pārsūta tālāk.